前言:麒麟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. js复制文字到剪切板

    此方法仅适用于 IE demo <!DOCTYPE html> <html lang="en"> <head> <meta charset ...

  2. Unity 音乐或者视频播放完毕之后执行方法

    视频播放完毕后,执行某个方法 方法1 官方给的解释 private VideoPlayer video2; private void Awake() { video2.loopPointReached ...

  3. 前端使用 Konva 实现可视化设计器(4)

    给上一章做一个补充,就是实现通过上下左右按键移动所选节点. 继续求 Star ,希望大家多多一键三连,十分感谢大家的支持~ 创作不易,Star 50 个,创作加速! github源码 gitee源码 ...

  4. 学习Source Generators之了解Source Generators的应用场景

    前面的文章我们都初步学习了Source Generators的使用方式以及做了一些简单的代码生成工具. 但是Source Generators除了做自动代码生成之外,还能有别的应用场景,本文来了解一下 ...

  5. spark 计算前后两条记录之间的差(diff),时间差等

    有时候会遇到这样的场景:有一个datafram,我们需要计算同一组对象中,前后两条记录之间的差值,此处并不仅限于时间,还可以是其他的数据类型 需要用到两个工具:spark窗口函数Window对对象分组 ...

  6. 实验2 C语言分支与循环基础应用编程

    #include <stdio.h> #include <stdlib.h> #include <time.h> #define N 5 int main() { ...

  7. gRPC入门学习之旅(七)

    gRPC入门学习之旅(一) gRPC入门学习之旅(二) gRPC入门学习之旅(三) gRPC入门学习之旅(四) gRPC入门学习之旅(五) gRPC入门学习之旅(六) 3.6.创建gRPC的桌面应用客 ...

  8. 科普达人丨一图看懂阿里云ECS

    简介: 建议收藏  原文链接:https://click.aliyun.com/m/1000363154/ 本文为阿里云原创内容,未经允许不得转载.

  9. Apsara Stack 同行者专刊 | 政企混合云技术架构的演进和发展

    简介: 现在,政企客户已进入到用云计算全面替换传统IT基础架构的攻坚阶段,混合云与传统架构的技术产品能力也正在经历全面的比较与评估.阿里云混合云平台首席架构师张晓丹分享IT架构技术深刻洞察,并对政企混 ...

  10. [FAQ] gormV2 Too many connections

    gormV2 中不再有v1的 db.Close() 方法. 取而代之的 close 方式是如下: sqlDB, err := DB.DB() sqlDB.Close() https://github. ...