前言:麒麟ARM操作系统是国企和政务机关推行信创化选择率比较高的一款操作系统,然而ARM操作系统非主流的X86系统,除了命令一样,在架构方面差别极大,初次接触多多少少会踩坑,下面我将在公司中部署的实例列举出来,供大家参考,ip和设计机密信息不方便展示,统用虚拟信息代替。

经过多次验证,用了多种通用版本JDK版本,发现都不行,只有两个办法可以适配麒麟ARM操作系统。

方法一:Oracle官网以下的版本:jdk-8u411-linux-aarch64.tar.gz

第一步:上次安装包

第二步:解压 tar -zxvf jdk-8u411-linux-aarch64.tar.gz

第三步:

创建目录mkdir -p /usr/local/java

移动安装包mv jdk1.8.0_341/ /usr/local/java/

设置所有者chown -R root:root /usr/local/java/

配置环境变量vim /etc/profile

第四步:添加以下内容

export JAVA_HOME=/usr/local/java/jdk1.8.0_411

export JRE_HOME=/usr/local/java/jdk1.8.0_411/jre

export CLASSPATH=.{JAVA_HOME}/lib:${JRE_HOME}/lib

export PATH=${JAVA_HOME}/bin:$PATH

第五步:使用命令让环境变量生效source /etc/profile

第六步:测试是否安装成功java -version

方法二:使用麒麟系统指定的openjdk

安装命令:yum install java-1.8.0-openjdk java-1.8.0-openjdk-devel后执行Y

注意:为什么要加java-1.8.0-openjdk-devel,这个是我在公司用Maven命令编译nacos源码,进行打包成适配国产达梦数据库时因报错信息,得出的经验。说个题外话,如果有网友需要支持ARM操作系统并适配达梦数据库的nacos安装包的话,可以评论找我要。

1.找到jdk位置 ,输入命令:which java

2.继续查看,输入命令:ll /usr/bin/java

3.继续查看java信息,输入命令:ll /etc/alternatives/java

4.继续查看,输入命令:

ll /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.402.b06-0.p01.ky10.p01.aarch64/

*此时如果环境变量未配置的话则返回空

5.进行配置,输入命令:vim /etc/profile

在最后增加:

export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.402.b06-0.p01.ky10.p01.aarch64/jre

export JRE_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.402.b06-0.p01.ky10.p01.aarch64/jre

export CLASSPATH=.{JAVA_HOME}/lib:${JRE_HOME}/lib

export PATH=${JAVA_HOME}/bin:$PATH



6.保存退出,输入命令:source /etc/profile

安装redis:

先查看是否安装c++的编译器; 执行 yum -y install gcc-c++(否则直接安装redis没依赖环境)

第一步:上传安装包,并将安装包用scp传输给需要的节点服务器;

第二步:在/usr/local/redis/路径下解压tar -zxvf redis-6.2.0.tar;

第三步:进入redis-6.2.0路径;

第四步:配置依赖库

latomic 代表的是 libatomic.so,麒麟ARM架构系统在编译的过程中,需要 libatomic.so 库,而系统又找不到这个库;

解决方法是手动找到这个库,可能存在如下几种情况:

1、通过执行下列命令安装相关依赖。

yum -y install libatomic libatomic_ops-devel

2、使用软链接的方法将依赖库libatomic.so链接到正确路径,执行如下命令:

ln -s /usr/lib64/libatomic.so.1.2.0 /usr/lib/libatomic.so

再执行 make 编译,问题解决,编译通过。

第五步:make

第六步:安装

输入命令:make PREFIX=/usr/local/redis install



七步:移动redis.conf文件到redis用户的home目录

mv redis.conf /home/redis/

第八步:更改配置文件/home/redis/redis.conf

命令:vim redis.conf

bind到本机地址:

bind IP号

设置redis访问密码(要设置为强密码,可更改):

requirepass **********

设置log文件,pid文件,数据文件目录:

pidfile /home/redis/run/redis.pid

logfile /home/redis/log/redis.log

dir /home/redis/data

第八步:启动redis

进入src目录下,输入命令启动redis

cd src

./redis-server



报错

处理方法:将“vm.overcommit_memory=1”添加到/etc/sysctl.conf,然后重新启动或运行命令“sudo sysctl -p”以使其生效。

Redis三主三从交叉集群部署:

第一步:创建节点配置文件路径:

创建目录:mkdir -p /home/redis/data

mkdir -p /home/redis/log

mkdir -p /home/redis/run

第二步:创建节点配置文件:

命令: cp redis.conf /home/redis/

cp -r redis.conf redis6379.conf

cp -r redis.conf redis6380.conf

每台服务器复制redis目录redis.conf为redis6379.conf和redis6380.conf为,按以下内容进行调整。

redis6379.conf:

pidfile /home/redis/run/redis6379.pid pid文件以端口来区分

port 6379 监听端口不同, 可以更改端口提高安全性

logfile "/home/redis/log/redis6379.log" logfile以端口来区分

dir /home/redis/data redis数据文件存放目录

dbfilename dump6379.rdb 数据文件dbfilename以端口来区分

masterauth *********** 主节点认证密码

requirepass *********** Redis连接密码,和requirepass设置成相同的值

appendfilename "appendonly_6379.aof" 追加文件名appendfilename以端口来区分

cluster-config-file nodes-6379.conf cluster-config-file以端口来区分

cluster-enabled yes 启用集群

bind 10.0.0.8 绑定IP保证集群时能正常连接

cluster-node-timeout 2000 集群节点超时时间

daemonize yes 开启守护进程

redis6380.conf:

pidfile /home/redis/run/redis6380.pid pid文件以端口来区分

port 6380 监听端口不同, 可以更改端口提高安全性

logfile "/home/redis/log/redis6380.log" logfile以端口来区分

dir /home/redis/data redis数据文件存放目录

dbfilename dump6380.rdb 数据文件dbfilename以端口来区分

masterauth *********** 主节点认证密码

requirepass *********** Redis连接密码,和requirepass设置成相同的值

appendfilename "appendonly_6380.aof" 追加文件名appendfilename以端口来区分

cluster-config-file nodes-6380.conf cluster-config-file以端口来区分

cluster-enabled yes 启用集群

bind 10.0.0.8 绑定IP保证集群时能正常连接

cluster-node-timeout 2000 集群节点超时时间

daemonize yes 开启守护进程

第三步:启动服务

进入路径:cd /usr/local/redis/bin/

./redis-server /home/redis/redis6379.conf &

./redis-server /home/redis/redis6380.conf &

.8(1节点)



.9(2节点)



.10(3节点)



第四步:启动redis集群

在服务器上使用以下命令启动redis集群

命令:./redis-cli --cluster create 10.0.0.8:6379 10.0.0.9:6379 10.0.0.10:6379 10.0.0.9:6380 10.0.0.10:6380 10.0.0.8:6380 --cluster-replicas 1 -a ***********(密码)



第五步:检查集群是否配置成功

命令:./redis-cli -h 10.0.0.8 -p 6379

输入密码:auth ***********(密码)

查看集群信息:cluster info



cluster_state:ok 代表集群可用

cluster_known_nodes:6 代表集群有6节点

第六步:放行端口

如集群配置完成后开启防火墙报节点无法连接,需做放行端口配置:

放行端口:

firewall-cmd --zone=public --add-port=6379/tcp --permanent 放行6379端口

firewall-cmd --zone=public --add-port=6380/tcp --permanent 放行6380端口

firewall-cmd --zone=public --add-port=16379/tcp --permanent 放行16379 redis内部通讯端口

firewall-cmd --zone=public --add-port=26379/tcp --permanent 放行26379 redis内部通讯端口

firewall-cmd --reload 重新载入 返回 success 代表成功

firewall-cmd --zone=public --query-port=6379/tcp 查看 返回 yes 代表开启成功

firewall-cmd --zone=public --query-port=6380/tcp 查看 返回 yes 代表开启成功

firewall-cmd --zone=public --query-port=16379/tcp 查看 返回 yes 代表开启成功

firewall-cmd --zone=public --query-port=26379/tcp 查看 返回 yes 代表开启成功

企业生产环境中的麒麟V10(ARM架构)操作系统部署jdk和redis三主三从交叉版集群的更多相关文章

  1. 理解Docker(6):若干企业生产环境中的容器网络方案

    本系列文章将介绍 Docker的相关知识: (1)Docker 安装及基本用法 (2)Docker 镜像 (3)Docker 容器的隔离性 - 使用 Linux namespace 隔离容器的运行环境 ...

  2. Kubernetes用户指南(三)--在生产环境中使用Pod来工作、管理部署

    一.在生产环境中使用Pod来工作 本节将介绍一些在生产环境中运行应用非常有用的功能. 1.持久化存储 容器的文件系统只有当容器正常运行时有效,一旦容器奔溃或者重启,所有对文件系统的修改将会丢失,从一个 ...

  3. 企业生产环境中linux系统分区的几种方案

    方案1:针对网站集群架构中的某个节点服务器分区 该服务器上的数据有多份(其他节点也有)且数据不太重要,建议分区方案如下: /boot: 200MB swap: 物理内存的1.5倍,当内存大于或等于8G ...

  4. Liu Junqiao:生产环境中shell脚本实例

    在生产环境中,我们时常要注意主机的各种硬件状态,如果是规模较大的服务集群zabbix等健康工具当然好用,如果只是一些小规模的服务主机,shell就会表现的更灵活,也更适用,今天就和大家分享一个系统巡检 ...

  5. Kubernetes 在生产环境中常用架构

    Kubernetes 在生产环境中常用架构 首先,我们来梳理下Kubernetes生产架构,其设计适用于绝大多数环境.如下图所示 在该架构中,我们可以将其分为四层,如下: Client层:即Kuber ...

  6. Flink 实战:如何解决生产环境中的技术难题?

    大数据作为未来技术的基石已成为国家基础性战略资源,挖掘数据无穷潜力,将算力推至极致是整个社会面临的挑战与难题. Apache Flink 作为业界公认为最好的流计算引擎,不仅仅局限于做流处理,而是一套 ...

  7. JDK 9 发布仅数月,为何在生产环境中却频遭嫌弃?

    千呼万唤始出来,在经历了整整一年的跳票之后,Java 9 终于在 9 月 21 日拨开云雾,露出真正的面目.对众多 Java 程序员来说,这一天无疑是一个重大的日子,首先 Java 开发者们再也不用羡 ...

  8. .NET跨平台之旅:在生产环境中上线第一个运行于Linux上的ASP.NET Core站点

    2016年7月10日,我们在生产环境中上线了第一个运行于Linux上的ASP.NET Core站点,这是一个简单的提供后端服务的ASP.NET Core Web API站点. 项目是在Windows上 ...

  9. .NET跨平台之旅:生产环境中第2个跑在Linux上的ASP.NET Core站点

    今天我们在生产环境中上线了第2个跑在Linux上的ASP.NET Core站点.这是一个简单的Web API站点,通过命令行的方式调用安装在Linux服务器上的程序完成操作.之前用的是nodejs,现 ...

  10. 【原】Storm Local模式和生产环境中Topology运行配置

    Storm入门教程 1. Storm基础 Storm Storm主要特点 Storm基本概念 Storm调度器 Storm配置 Guaranteeing Message Processing(消息处理 ...

随机推荐

  1. Qt数据结构-QString二:QString的arg能不能像Python的format一样使用

    常规QString拼接字符串我们是这样写的 QString s = QString("My name is %1, age %2").arg("zhangsan" ...

  2. 通过 Traefik Hub 暴露家里的网络服务

    Traefik Hub 简介 ️Reference: 你的云原生网络平台 -- 发布和加固你的容器从未如此简单. Traefik Hub 为您在 Kubernetes 或其他容器平台上运行的服务提供一 ...

  3. 【直播预告】HarmonyOS极客松赋能直播第三期:一次开发多端部署与ArkTS卡片开发

  4. Linux之驱动管理

    一.相关概念 驱动概念 驱动与底层硬件直接打交道,充当了硬件与应用软件中间的桥梁. 将驱动程序载入内核,应用程序可以通过系统调用接口来访问(驱动)底层的硬件设备. 驱动功能 对设备初始化和释放 把数据 ...

  5. leetcode:1337. 方阵中战斗力最弱的 K 行

    1337. 方阵中战斗力最弱的 K 行 给你一个大小为 m * n 的方阵 mat,方阵由若干军人和平民组成,分别用 0 和 1 表示. 请你返回方阵中战斗力最弱的 k 行的索引,按从最弱到最强排序. ...

  6. vue3.0体验版生命周期

    使用方法:cnpm install --save @vue/composition-api在组件内引入 把上图的 onMounted 换成(2.6->3.0) beforeCreate-> ...

  7. 新零售标杆 SKG 全面拥抱 Serverless,实现敏捷交付

    简介: SKG CTO 王焱:以前需要 60 个人干的活,用 SAE 和大禹后 15 个人就可以! 作者:陈列昂.昕辰.龙琛.黛忻 项目背景   SKG 公司是一家专注于高端健康产品的研发.设计与制造 ...

  8. 一位 sealer maintainer 的心路历程

    简介: 本文作者将回顾个人参与 sealer 开源项目的机缘巧合,参与过程中的挑战,以及从中获取的所悟所感,写下一段文字进行分享,希望对开源新人有所帮助,能够激励想参与开源工作但还未踏出第一步的同学. ...

  9. 最佳实践|Spring Boot 应用如何快速接入 Prometheus 监控

    ​简介:SpringBoot 微服务的开发.发布与部署只占其生命周期的一小部分,应用和系统运维才是重中之重.而运维过程中,监控工作更是占据重要位置.那么,为了对系统的状态进行持续地观测,面向Sprin ...

  10. 重度使用Flutter研发模式下的页面性能优化实践

    简介: 淘宝特价版是集团内应用Flutter技术场景比较多,且用户量一亿人以上的应用了.目前我们首页.详情.店铺.我的,看看短视频,及评价,设置等二级页面都在用Flutter技术搭建.一旦Flutte ...