企业生产环境中的麒麟V10(ARM架构)操作系统部署jdk和redis三主三从交叉版集群
前言:麒麟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三主三从交叉版集群的更多相关文章
- 理解Docker(6):若干企业生产环境中的容器网络方案
本系列文章将介绍 Docker的相关知识: (1)Docker 安装及基本用法 (2)Docker 镜像 (3)Docker 容器的隔离性 - 使用 Linux namespace 隔离容器的运行环境 ...
- Kubernetes用户指南(三)--在生产环境中使用Pod来工作、管理部署
一.在生产环境中使用Pod来工作 本节将介绍一些在生产环境中运行应用非常有用的功能. 1.持久化存储 容器的文件系统只有当容器正常运行时有效,一旦容器奔溃或者重启,所有对文件系统的修改将会丢失,从一个 ...
- 企业生产环境中linux系统分区的几种方案
方案1:针对网站集群架构中的某个节点服务器分区 该服务器上的数据有多份(其他节点也有)且数据不太重要,建议分区方案如下: /boot: 200MB swap: 物理内存的1.5倍,当内存大于或等于8G ...
- Liu Junqiao:生产环境中shell脚本实例
在生产环境中,我们时常要注意主机的各种硬件状态,如果是规模较大的服务集群zabbix等健康工具当然好用,如果只是一些小规模的服务主机,shell就会表现的更灵活,也更适用,今天就和大家分享一个系统巡检 ...
- Kubernetes 在生产环境中常用架构
Kubernetes 在生产环境中常用架构 首先,我们来梳理下Kubernetes生产架构,其设计适用于绝大多数环境.如下图所示 在该架构中,我们可以将其分为四层,如下: Client层:即Kuber ...
- Flink 实战:如何解决生产环境中的技术难题?
大数据作为未来技术的基石已成为国家基础性战略资源,挖掘数据无穷潜力,将算力推至极致是整个社会面临的挑战与难题. Apache Flink 作为业界公认为最好的流计算引擎,不仅仅局限于做流处理,而是一套 ...
- JDK 9 发布仅数月,为何在生产环境中却频遭嫌弃?
千呼万唤始出来,在经历了整整一年的跳票之后,Java 9 终于在 9 月 21 日拨开云雾,露出真正的面目.对众多 Java 程序员来说,这一天无疑是一个重大的日子,首先 Java 开发者们再也不用羡 ...
- .NET跨平台之旅:在生产环境中上线第一个运行于Linux上的ASP.NET Core站点
2016年7月10日,我们在生产环境中上线了第一个运行于Linux上的ASP.NET Core站点,这是一个简单的提供后端服务的ASP.NET Core Web API站点. 项目是在Windows上 ...
- .NET跨平台之旅:生产环境中第2个跑在Linux上的ASP.NET Core站点
今天我们在生产环境中上线了第2个跑在Linux上的ASP.NET Core站点.这是一个简单的Web API站点,通过命令行的方式调用安装在Linux服务器上的程序完成操作.之前用的是nodejs,现 ...
- 【原】Storm Local模式和生产环境中Topology运行配置
Storm入门教程 1. Storm基础 Storm Storm主要特点 Storm基本概念 Storm调度器 Storm配置 Guaranteeing Message Processing(消息处理 ...
随机推荐
- 【Insights直播】3D建模服务,快速构建高质量3D模型
2021年7月15日,HMS Core 6.0面向全球开发者正式上线.华为在HMS Core 6.0中,为开发者开放了一个全新的服务--3D建模服务(3D Modeling Kit),为应用开发者提供 ...
- openGauss资源池化开发者入门指南(一)
openGauss资源池化开发者入门指南(一) 一.内容简介 openGauss 资源池化是 openGauss 推出的一种新型的集群架构.通过 DMS 和 DSS 组件,实现集群中多个节点的底层存储 ...
- 挑战吧,HarmonyOS应用开发工程师
一年一度属于工程师的专属节日1024已过,但程序员多重活动持续进行中~ 参与活动即有机会获得HUAWEI Freebuds 5i 耳机等精美礼品! 点击"阅读原文"查看更多活动 ...
- ecplice 如何智能提示(旧)
前言 从my老博客迁移过来的. 正文 1.java智能提示 (1). 打开Eclipse,选择打开" Window - Preferences". (2). 在目录树上选择&quo ...
- Javascript中的继承?如何实现继承?
一.是什么 继承(inheritance)是面向对象软件技术当中的一个概念 如果一个类别B"继承自"另一个类别A,就把这个B称为"A的子类",而把A称为&quo ...
- element-ui多选(批量)删除
导出axios请求
- 使用GitHub Actions和GitHub pages实现前端项目的自动打包部署
1. 引言 As we all know,前端部署项目是比较简单的,通常情况下只需要将打包的产物(index.html..js文件..css文件等)放在Web服务器下就,这种叫静态资源托管,成本是比较 ...
- 力扣627(MySQL)-变更性别(简单)
题目: Salary 表: 请你编写一个 SQL 查询来交换所有的 'f' 和 'm' (即,将所有 'f' 变为 'm' ,反之亦然),仅使用 单个 update 语句 ,且不产生中间临时表. 注意 ...
- 力扣482(java)-密钥格式化(简单)
题目: 给定一个许可密钥字符串 s,仅由字母.数字字符和破折号组成.字符串由 n 个破折号分成 n + 1 组.你也会得到一个整数 k . 我们想要重新格式化字符串 s,使每一组包含 k 个字符,除了 ...
- PolarDB B-tree 并发控制优化
简介: PolarDB 解决了 InnoDB 在 B-tree 并发控制上的限制,解决 index lock 竞争问题,并支持了 latch coupling. InnoDB 索引 InnoDB 引擎 ...