企业生产环境中的麒麟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(消息处理 ...
随机推荐
- 《苏丹的复仇》携手华为HMS生态,实现用户、收入双增长
中国出海中东和北非地区的策略类手游<苏丹的复仇>(Revenge of Sultans,ROS)和华为HMS生态深度合作,为本地用户带来创新游戏体验,成为当地广受欢迎的游戏之一,下载量居应 ...
- configparser封装后报错:configparser.NoSectionError: No section: 'LoginElement'
前言 这是目录结构 先贴一下源代码 # read_ini.pyimport configparser class ReadIni(): """读取 ini.ini 配置文 ...
- npm发包教程
1-npm注册账号 访问npm官网注册账号,邮件验证激活账号 npm官网 2-项目npm配置 在项目下打开终端,初始化npm npm init -y 此时项目下会生成package.json 配置文件 ...
- HarmonyOS课程体验官招募(第四期),寻找乐于分享,精益求精的伙伴
华为开发者联盟HarmonyOS课程体验官(第四期)活动,开始招募啦! 如果你精益求精.乐于分享:如果你愿意为学堂课程优化改进出谋划策,那就快来加入我们吧!学堂期待与你共同成长.一起进步! [活动 ...
- mysql 必知必会整理—事务[十六]
前言 简单整理一下事务. 正文 并非所有引擎都支持事务处理 正如第21章所述,MySQL支持几种基本的数据库引擎. 正如本章所述,并非所有引擎都支持明确的事务处理管理. MyISAM和InnoDB是两 ...
- mysql 重新整理——索引优化一个简单的案例 [十一]
前言 经过了前面的一系列理论,那么用一个例子去看一下吧. 正文 EXPLAIN SELECT t3.emp_no,t3.first_name,(select t4.last_name from tem ...
- 简单介绍 Vue 3.0 项目创建
一.前期转杯 确保电脑上已安装 node.js. 可通过命令 npm --version进行查询,如果展示了版本号,则说明已安装,若提示 npm 不是有内部或外部命令,也不是可运行的程序,则说明未安装 ...
- 百度unit闲聊机器人
import json import random import requests # client_id 为官网获取的AK, client_secret 为官网获取的SK client_id = & ...
- Crazy Excel:Excel中的泥石流
Crazy Excel又名:疯狂Excel.是一款PC端的Excel软件工具,该软件支持windows, mac os等主流操作系统. 正如其名,作者在设计之初就加入了一些疯狂的设计,目的是创作出更加 ...
- 【笔记】go语言--函数式编程
[笔记]go语言--函数式编程 简单来说,go语言的函数式编程体现的是一个闭包的情况 函数式编程 VS 函数指针 函数是一等公民:参数,变量,返回值都可以是函数 高阶函数 函数->闭包 &quo ...