企业生产环境-麒麟V10(ARM架构)操作系统部署jdk和redis三主三从交叉版集群
<p><strong>前言:麒麟ARM操作系统是国企和政务机关推行信创化选择率比较高的一款操作系统,然而ARM操作系统非主流的X86系统,除了命令一样,在架构方面差别极大,初次接触多多少少会踩坑,下面我将在公司中部署的实例列举出来,供大家参考,ip和设计机密信息不方便展示,统用虚拟信息代替。</strong></p><p><strong>这里jdk和redis的安装是没有关系的,如果只需要redis的安装,可以直接忽略jdk篇幅</strong></p>
<p>经过多次验证,用了多种通用版本JDK版本,发现都不行,只有两个办法可以适配麒麟ARM操作系统。<br>
<strong>方法一:Oracle官网以下的版本:<code>jdk-8u411-linux-aarch64.tar.gz</code></strong></p>
<h3 id="第一步上次安装包到路径usrjava">第一步:上次安装包到路径/usr/java</h3>
<p>创建目录:<code>mkdir -p /usr/java</code><br>
设置所有者<code>chown -R root:root /usr/java/</code></p>
<h3 id="第二步解压tar--zxvf-jdk-8u411-linux-aarch64targz">第二步:解压<code>tar -zxvf jdk-8u411-linux-aarch64.tar.gz</code></h3>
<h3 id="第三步配置环境变量">第三步:配置环境变量</h3>
<p><code>vim /etc/profile</code><br>
添加以下内容</p>
<pre><code>export JAVA_HOME=/usr/java/jdk1.8.0_411
export PATH=$JAVA_HOME/bin:$PATH
</code></pre>
<h3 id="第四步使用命令让环境变量生效source-etcprofile">第四步:使用命令让环境变量生效:<code>source /etc/profile</code></h3>
<h3 id="第五步测试是否安装成功java--version">第五步:测试是否安装成功<code>java -version</code></h3>
<p><img src="https://img2024.cnblogs.com/blog/3426651/202405/3426651-20240525162642113-1537435844.png"></p>
<h3 id="方法二使用麒麟系统指定的openjdk">方法二:使用麒麟系统指定的openjdk</h3>
<p>安装命令:<code>yuminstalljava-1.8.0-openjdk java-1.8.0-openjdk-devel</code>后执行Y<br>
<strong>注意:为什么要加java-1.8.0-openjdk-devel,这个是我在公司用Maven命令编译nacos源码,进行打包成适配国产达梦数据库时因报错信息,得出的经验。</strong></p>
<p>1.找到jdk位置 ,输入命令:<code>which java</code><br>
2.继续查看,输入命令:<code>ll /usr/bin/java</code><br>
3.继续查看java信息,输入命令:<code>ll /etc/alternatives/java</code><br>
4.继续查看,输入命令:<br>
<code>ll /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.402.b06-0.p01.ky10.p01.aarch64/</code></p>
<p>*此时如果环境变量未配置的话则返回空</p>
<p>5.进行配置,输入命令:<code>vim /etc/profile</code><br>
在最后增加:</p>
<pre><code>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
</code></pre>
<p><img src="https://img2024.cnblogs.com/blog/3426651/202405/3426651-20240525164426558-1763542451.png"><br>
6.保存退出,输入命令:<code>source /etc/profile</code></p>
<h3 id="安装redis">安装redis:</h3>
<p>先查看是否安装c++的编译器; 执行 <code>yum -y install gcc-c++</code>(否则直接安装redis没依赖环境)</p>
<h3 id="第一步上传安装包并将安装包用scp传输给需要的节点服务器">第一步:上传安装包,并将安装包用scp传输给需要的节点服务器;</h3>
<h3 id="第二步在usrlocalredis路径下解压tar--zxvf-redis-620tar">第二步:在/usr/local/redis/路径下解压:<code>tar -zxvf redis-6.2.0.tar</code></h3>
<h3 id="第三步进入redis-620路径">第三步:进入redis-6.2.0路径;</h3>
<h3 id="第四步配置依赖库">第四步:配置依赖库</h3>
<p>latomic 代表的是 libatomic.so,麒麟ARM架构系统在编译的过程中,需要 libatomic.so 库,而系统又找不到这个库;<br>
解决方法是手动找到这个库,可能存在如下几种情况:<br>
1、通过执行下列命令安装相关依赖。<br>
<code>yum -y install libatomic libatomic_ops-devel</code><br>
2、使用软链接的方法将依赖库libatomic.so链接到正确路径,执行如下命令:<br>
<code>ln -s /usr/lib64/libatomic.so.1.2.0 /usr/lib/libatomic.so</code><br>
再执行 make 编译,问题解决,编译通过。</p>
<h3 id="第五步make">第五步:<code>make</code></h3>
<h3 id="第六步安装">第六步:安装</h3>
<p>输入命令:<code>make PREFIX=/usr/local/redis install</code><br>
<img src="https://img2024.cnblogs.com/blog/3426651/202405/3426651-20240525164738549-255336897.png"></p>
<h3 id="第七步移动redisconf文件到redis用户的home目录">第七步:移动redis.conf文件到redis用户的home目录</h3>
<p><code>mv redis.conf /home/redis/</code></p>
<h3 id="第八步更改配置文件homeredisredisconf">第八步:更改配置文件/home/redis/redis.conf</h3>
<p>命令:<code>vim redis.conf</code></p>
<pre><code>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
</code></pre>
<p><img src="https://img2024.cnblogs.com/blog/3426651/202405/3426651-20240525164832189-2086554592.png"><br>
报错<br>
处理方法:将<code>vm.overcommit_memory=1</code>添加到<code>/etc/sysctl.conf</code>,然后重新启动或运行命令<code>sudo sysctl -p</code>以使其生效。</p>
<h3 id="redis三主三从交叉集群部署">Redis三主三从交叉集群部署:</h3>
<h3 id="第一步创建redis启动用户非root用户创建节点配置文件路径">第一步:创建redis启动用户(非root用户),创建节点配置文件路径:</h3>
<p>创建用户:<code>sudo useradd -s /sbin/nologin -M redis</code><br>
创建目录:<code>sudo mkdir -p /home/redis /home/redis/data /home/redis/run /home/redis/log</code><br>
指定/home/redis目录属于redis用户:<code>sudo chown -R redis.redis /home/redis</code></p>
<h3 id="第二步创建节点配置文件">第二步:创建节点配置文件:</h3>
<pre><code> cp redis.conf /home/redis/
cd/home/redis
cp -r redis.conf redis6379.conf
cp -r redis.conf redis6380.conf
</code></pre>
<p>每台服务器复制redis目录redis.conf为redis6379.conf和redis6380.conf为,按以下内容进行调整:</p>
<pre><code>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 #开启守护进程
</code></pre>
<pre><code>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 #开启守护进程
</code></pre>
<h3 id="第三步启动服务">第三步:启动服务</h3>
<p>三节点服务器进入路径:<code>cd /usr/local/redis/bin</code><br>
命令:<code>sudo -u redis ./redis-server /home/redis/redis6379.conf &</code><br>
命令:<code>sudo -u redis ./redis-server /home/redis/redis6380.conf &</code></p>
<p>.8(1节点)<br>
<img src="https://img2024.cnblogs.com/blog/3426651/202411/3426651-20241108133944806-1562104049.png"><br>
.9(2节点)<br>
<img src="https://img2024.cnblogs.com/blog/3426651/202411/3426651-20241108134018136-859978448.png"><br>
.10(3节点)<br>
<img src="https://img2024.cnblogs.com/blog/3426651/202411/3426651-20241108134048056-839846275.png"></p>
<h3 id="第四步启动redis集群">第四步:启动redis集群</h3>
<p>在服务器上使用以下命令启动redis集群<br>
<strong>建议执行命令前先关闭集群各节点防火墙,集群部署成功后再开启</strong><br>
<code>命令:./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 ***********(密码)</code><br>
<img src="https://img2024.cnblogs.com/blog/3426651/202405/3426651-20240525165905858-1019474275.png"></p>
<h3 id="第五步检查集群是否配置成功">第五步:检查集群是否配置成功</h3>
<p>命令:<code>./redis-cli -h 10.0.0.8 -p 6379</code><br>
输入密码:auth ***********(密码)<br>
查看集群信息命令:<code>cluster info</code><br>
查看各节点对应关系命令:<code>cluster nodes</code><br>
<img src="https://img2024.cnblogs.com/blog/3426651/202405/3426651-20240525170003967-1770812269.png"><br>
cluster_state:ok 代表集群可用<br>
cluster_known_nodes:6 代表集群有6节点<br>
列出集群当前已知的所有节点( node),以及这些节点的对应关系信息。命令:<code>cluster nodes</code><br>
<img src="https://img2024.cnblogs.com/blog/3426651/202411/3426651-20241120085053938-394734469.png"></p>
<h3 id="第六步放行端口">第六步:放行端口</h3>
<p>如集群配置完成后开启防火墙报节点无法连接,需做放行端口配置:<br>
放行端口:<br>
<code>firewall-cmd --zone=public --add-port=6379/tcp --permanent</code> 放行6379端口<br>
<code>firewall-cmd --zone=public --add-port=6380/tcp --permanent</code> 放行6380端口</p>
<p><code>firewall-cmd --zone=public --add-port=16379/tcp --permanent</code> 放行16379 redis内部通讯端口<br>
<code>firewall-cmd --zone=public --add-port=16380/tcp --permanent</code> 放行16380 redis内部通讯端口</p>
<p><code>firewall-cmd --reload</code>重新载入 返回 success 代表成功</p>
<p><code>firewall-cmd --zone=public --query-port=6379/tcp</code> 查看 返回 yes 代表开启成功<br>
<code>firewall-cmd --zone=public --query-port=6380/tcp</code> 查看 返回 yes 代表开启成功</p>
<p><code>firewall-cmd --zone=public --query-port=16379/tcp</code> 查看 返回 yes 代表开启成功<br>
<code>firewall-cmd --zone=public --query-port=16380/tcp </code> 查看 返回 yes 代表开启成功</p>
<h3 id="第七步配置开机自启">第七步:配置开机自启</h3>
<p>1、分别在各节点添加以下redis.service文件<br>
命令:<code>vim/etc/systemd/system/redis6379.service</code><br>
添加:</p>
<pre><code>
Description=Redis persistent key-value database
After=network.target
After=network-online.target
Wants=network-online.target
Type=forking
ExecStart=/usr/local/redis/bin/redis-server /home/redis/redis6379.conf
ExecReload=/usr/local/redis/bin/redis-server -s reload
ExecStop=/usr/local/redis/bin/redis-server -s stop
PrivateTmp=true
User=redis
Group=redis
WantedBy=multi-user.target
</code></pre>
<p>命令:<code>vim/etc/systemd/system/redis6380.service</code><br>
添加:</p>
<pre><code>
Description=Redis persistent key-value database
After=network.target
After=network-online.target
Wants=network-online.target
Type=forking
ExecStart=/usr/local/redis/bin/redis-server /home/redis/redis6380.conf
ExecReload=/usr/local/redis/bin/redis-server -s reload
ExecStop=/usr/local/redis/bin/redis-server -s stop
PrivateTmp=true
User=redis
Group=redis
WantedBy=multi-user.target
</code></pre>
<p>2、启用服务:<br>
重新加载systemd配置:<code>sudo systemctl daemon-reload</code><br>
并执行以下命令:</p>
<pre><code>ps -ef |grep redis
kill -9 pid
sudo systemctl enable redis6379.service
sudo systemctl start redis6379.service
sudo systemctl enable redis6380.service
sudo systemctl start redis6380.service
</code></pre>
<p>检查服务状态:</p>
<pre><code>sudo systemctl status redis6379.service
sudo systemctl status redis6380.service
</code></pre>
<p>有running信息状态输出表示启动成功<br>
<strong>参考命令:</strong><br>
<code>systemctl stop redis-6379.service</code> # 停止redis服务<br>
<code>systemctl restart redis-6379.service</code> # 重启redis服务</p>
<p><code>systemctl stop redis-6380.service</code> # 停止redis服务<br>
<code>systemctl restart redis-6380.service</code> # 重启redis服务</p>
<h3 id="验证">验证:</h3>
<h3 id="方法一">方法一:</h3>
<pre><code>sudo systemctl is-enabled redis6379.service
sudo systemctl is-enabled redis6380.service
</code></pre>
<p>返回enabled说明配置成功</p>
<h3 id="方法二重启">方法二:重启</h3>
<p><code>reboot</code></p><br><br>
来源:https://www.cnblogs.com/zhoutuo/p/18212645
頁:
[1]