前言:麒麟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. 报表的 SQL 注入风险是什么意思?如何防范?

    啥是 SQL 注入风险? 数据库要执行 SQL 访问数据,数据库是个执行机构,它只会检查传来的 SQL 是不是合乎语法,而并不会关心这个语句是否会造成伤害(数据泄露或破坏).正因为只要符合语法规则就会 ...

  2. mongodb基础整理篇————设计[四]

    前言 简单整理一下mongodb的设计. 正文 设计三步曲: 第一步:建立基础文档模型 例子: 1对1建模: 1 对多建模: N对N模型: 第二步: 根据读写况细化 遇到的问题: 解决: 查询连表: ...

  3. 解决跨域问题之fetch的使用

    一.介绍 fetch 提供了一个获取资源的接口 (包括跨域). fetch 的核心主要包括:Request , Response , Header , Body 利用了请求的异步特性 --- 它是基于 ...

  4. Java实现查看手机配置与功能

    "感谢您阅读本篇博客!如果您觉得本文对您有所帮助或启发,请不吝点赞和分享给更多的朋友.您的支持是我持续创作的动力,也欢迎留言交流,让我们一起探讨技术,共同成长!谢谢!" 代码 `` ...

  5. 力扣220(java)-存在重复元素 III(困难)

    题目: 给你一个整数数组 nums 和两个整数 k 和 t .请你判断是否存在 两个不同下标 i 和 j,使得 abs(nums[i] - nums[j]) <= t ,同时又满足 abs(i ...

  6. 阿里云日志服务SLS携手观测云发布可观测性解决方案,共建可观测应用创新

    简介: 2022年云栖大会期间,阿里云同观测云共同发布可观测性联合解决方案.观测云通过集成日志服务SLS的产品能力,发布了观测云SAAS专属版. 2022年云栖大会期间,阿里云同观测云共同发布可观测性 ...

  7. PolarDB-X 源码解读:事务的一生

    简介: 本文将主要解读 PolarDB-X 中事务部分的相关代码,着重解读事务的一生在计算节点(CN)中的关键代码:从开始.执行.到最后提交这一整个生命周期. 概述 本文将主要解读 PolarDB-X ...

  8. [Kali] Kali Linux 环境准备

      虚拟机和系统: Mac 的 Vmware Fusion:https://www.vmware.com/cn/products/fusion/fusion-evaluation.html  序列号去 ...

  9. [FAQ] WebStorm/PHPStorm:设置 HTML/JavaScript/PHP 注释缩进行为,代码片段

    [注释行为] Preferences -> Code Style 选择语言后,找到 Wrapping and Braces, 取消 Comment at first column. 如果是HTM ...

  10. C# dotnet 的锁 SemaphoreSlim 和队列

    本文主要是试验在顺序进入等待 SemaphoreSlim 的任务是否会按照顺序经过锁执行 我在一个有趣的WPF程序里面,需要限制任务同时执行的线程数量,不然用户就会说用我的程序会让电脑卡渣.而我的任务 ...