news 2026/2/12 8:27:56

银河麒麟下Redis的安装和集群配置

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
银河麒麟下Redis的安装和集群配置

Redis集群简介

Redis集群和高可用有几种方式:其中一种是主从复制,实现数据的多机备份和读操作的负载均衡。一主多从,主库支持读写操作,从库只支持读。在主从复制基础上,哨兵实现了自动化的故障恢复。通过哨兵监控主节点状态,主节点宕机时自动切换到从节点。另外一种是集群,多节点分片存储,结合主从复制,实现故障切换。本例主要介绍主从复制加哨兵模式和集群模式。

2 Redis配置规划

2.1 Redis哨兵模式规划

本次计划使用两台虚拟机进行Redis哨兵,每台虚拟机运行Redis节点一个、Redis哨兵服务一个。10.10.1.45上的Redis节点为初始的主节点、10.10.1.46上的Redis节点为初始的从节点。

服务器 服务器一 服务器二

IP地址 10.10.1.45 10.10.1.46

安装用户 kylin(管理员)

安装目录 /data/redis

节点数据目录 /data/redis/data

节点配置目录 /data/redis/conf

节点日志目录 /data/redis/logs

Redis端口 6379

Redis密码 142857

哨兵端口 26379

哨兵密码 无

主从同步密码 142857

主从组名 mymaster

2.2 Redis集群模式规划

本次计划使用三台虚拟机进行Redis集群,每台虚拟机运行集群主、备节点各一个。三台服务器的节点遵循循环主备关系,即A服务器上的主节点对应备节点在B服务器上,B服务器上的主节点对应备节点在C服务器上,C服务器上的主节点对应备节点在A服务器上。

服务器 服务器一 服务器二 服务器三

IP地址 10.10.1.41 10.10.1.42 10.10.1.43

安装用户 kylin(管理员)

安装目录 /data/redis

主节点数据目录 /data/redis/data/6379

从节点数据目录 /data/redis/data/6380

节点配置目录 /data/redis/conf

节点日志目录 /data/redis/logs

主节点端口 6379

从节点端口 6380

Redis密码 142857

主从同步密码 142857

3 安装Redis软件

3.1 安装版本说明

银河麒麟V10的桌面版和高级服务器版的安装体系差异较大,默认已经安装的包也不同,因此在编译Redis之前,银河麒麟V10的桌面版和高级服务器版需要安装不同的包。本例基于以下银河麒麟版本建立。

Kylin-Desktop-V10-GFB-HWE-Release-020-X86_64

Kylin-Desktop-V10-GFB-020-Release-20.1.3-ARM64

Kylin-Server-V10-GFB-Release-030-X86_64

Kylin-Server-V10-GFB-030-Release-30.1.3-ARM64

3.2 麒麟V10桌面版(GFB)

3.2.1 安装前准备

使用管理员用户,创建安装文件目录。

kylin@KL1:~$ mkdir Install

3.2.2 安装g++

银河麒麟V10国防桌面版使用源代码编译的方式安装Redis,需要先安装g++。银河麒麟V10使用的gcc版本是9.3.0,g++也应使用相同的版本,需要安装g++和libstdc++两个包。可以从Ubuntu网站获取“g++-9_9.3.0-10ubuntu2_amd64.deb”、“libstdc++-9-dev_9.3.0-10ubuntu2_amd64.deb”两个包。

kylin@KL1:~$ gcc --version

gcc (Ubuntu 9.3.0-10kylin2) 9.3.0

Copyright (C) 2019 Free Software Foundation, Inc.

This is free software; see the source for copying conditions. There is NO

warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

管理员账户使用sudo dpkg -i命令安装libstdc++和g++。

kylin@KL1:~/Install$ sudo dpkg -i libstdc++-9-dev_9.3.0-10ubuntu2_amd64.deb g++-9_9.3.0-10ubuntu2_amd64.deb

正在选中未选择的软件包 libstdc++-9-dev:amd64。

(正在读取数据库 ... 系统当前共安装有 186622 个文件和目录。)

准备解压 libstdc++-9-dev_9.3.0-10ubuntu2_amd64.deb ...

正在解压 libstdc++-9-dev:amd64 (9.3.0-10ubuntu2) ...

正在选中未选择的软件包 g++-9。

准备解压 g++-9_9.3.0-10ubuntu2_amd64.deb ...

正在解压 g++-9 (9.3.0-10ubuntu2) ...

正在设置 libstdc++-9-dev:amd64 (9.3.0-10ubuntu2) ...

正在设置 g++-9 (9.3.0-10ubuntu2) ...

正在处理用于 man-db (2.9.1-1kylin0k1) 的触发器 ...

建立一个符号连接,把/usr/bin目录下的x86_64-linux-gnu-g++-9链接到g++。

kylin@KL1:~/Install$ sudo ln -s /usr/bin/x86_64-linux-gnu-g++-9 /usr/bin/g++

3.2.3 安装tcl

银河麒麟V10国防桌面版使用源代码编译的方式安装Redis,需要先安装tcl。Redis8.2要求tcl版本8.5以上,需要安装tcl和libtcl两个包。从银河麒麟网站获取“libtcl8.6_8.6.10+dfsg-1_amd64.deb”包,从Ubuntu网站上获取“tcl8.6_8.6.1-4ubuntu1_amd64.deb”包。

管理员账户使用sudo dpkg -i命令安装libtcl和tcl。

kylin@KL1:~/Install$ sudo dpkg -i libtcl8.6_8.6.10+dfsg-1_amd64.deb tcl8.6_8.6.1-4ubuntu1_amd64.deb

正在选中未选择的软件包 libtcl8.6:amd64。

(正在读取数据库 ... 系统当前共安装有 187471 个文件和目录。)

准备解压 libtcl8.6_8.6.10+dfsg-1_amd64.deb ...

正在解压 libtcl8.6:amd64 (8.6.10+dfsg-1) ...

正在选中未选择的软件包 tcl8.6。

准备解压 tcl8.6_8.6.1-4ubuntu1_amd64.deb ...

正在解压 tcl8.6 (8.6.1-4ubuntu1) ...

正在设置 libtcl8.6:amd64 (8.6.10+dfsg-1) ...

正在设置 tcl8.6 (8.6.1-4ubuntu1) ...

正在处理用于 libc-bin (2.31-0kylin9.1k20.8) 的触发器 ...

正在处理用于 man-db (2.9.1-1kylin0k1) 的触发器 ...

3.3 银河麒麟高级服务器版(GFB)

3.3.1 安装前准备

银河麒麟V10高级服务器版,允许使用root直接登录,这里安全起见,创建用户kylin并加入wheel组,作为管理员用户使用。

[root@localhost ~]# adduser kylin

[root@localhost ~]# passwd kylin

更改用户 kylin 的密码 。

新的 密码:

重新输入新的 密码:

passwd:所有的身份验证令牌已经成功更新。

[root@localhost ~]# usermod -aG wheel kylin

再使用root用户创建/data共享目录。

[root@localhost ~]# mkdir /data

[root@localhost ~]# chmod a+rwx /data

[root@localhost ~]# chmod -t /data

使用root用户修改主机名,并重新登录。

[root@localhost ~]# hostnamectl set-hostname KL1

[root@localhost ~]# logout

使用kylin用户创建目录Install用于放置所有安装文件。

[kylin@KL1 ~]$ mkdir Install

3.4 编译Redis

解压缩redis-8.2.1.tar.gz包。

kylin@KL1:~/Install$ tar -zxf redis-8.2.1.tar.gz

进入redis解压后目录下的deps目录,运行make fast_float和make jemalloc。银河麒麟高级服务器版不需要此步骤。

kylin@KL1:~/Install$ cd redis-8.2.1/deps/

kylin@KL1:~/Install/redis-8.2.1/deps$ make fast_float

MAKE fast_float

cd fast_float && make libfast_float CFLAGS="" LDFLAGS=""

make[1]: 进入目录“/home/kylin/redis-8.2.1/deps/fast_float”

g++ -Wall -O3 -std=c++11 -DFASTFLOAT_ALLOWS_LEADING_PLUS -c fast_float_strtod.cpp

ar -r libfast_float.a fast_float_strtod.o

ar: 正在创建 libfast_float.a

make[1]: 离开目录“/home/kylin/Install/redis-8.2.1/deps/fast_float”

kylin@KL1:~/Install/redis-8.2.1/deps$ make jemalloc

MAKE jemalloc

cd jemalloc && ./configure --disable-cxx --with-version=5.3.0-0-g0 --with-lg-quantum=3 --disable-cache-oblivious --with-jemalloc-prefix=je_ CFLAGS="" LDFLAGS=""

checking for xsltproc... false

checking for gcc... gcc

…………

这里有很多提示信息,此处省略。

…………

make[1]: 离开目录“/home/kylin/Install/redis-8.2.1/deps/jemalloc”

进入redis解压后目录,使用make指令编译Redis。

kylin@KL1:~/Install/redis-8.2.1/deps$ cd ..

kylin@KL1:~/Install/redis-8.2.1$ make

for dir in src; do make -C $dir all; done

make[1]: 进入目录“/home/kylin/Install/redis-8.2.1/src”

CC Makefile.dep

rm -rf redis-server redis-sentinel redis-cli redis-benchmark redis-check-rdb redis-check-aof *.o *.gcda *.gcno *.gcov redis.info lcov-html Makefile.dep *.so

…………

这里有很多提示信息,此处省略。

…………

LINK redis-benchmark

INSTALL redis-check-rdb

INSTALL redis-check-aof

Hint: It's a good idea to run 'make test' ;)

make[1]: 离开目录“/home/kylin/Install/redis-8.2.1/src”

使用make test指令进行测试。

kylin@KL1:~/Install/redis-8.2.1$ make test

for dir in src; do make -C $dir test; done

make[1]: 进入目录“/home/kylin/Install/redis-8.2.1/src”

Cleanup: may take some time... OK

Starting test server at port 21079

[ready]: 387245

Testing unit/acl-v2

…………

这里有很多提示信息,此处省略。

…………

515 seconds - defrag

0 seconds - list-large-memory

1 seconds - set-large-memory

\o/ All tests passed without errors!

Cleanup: may take some time... OK

make[1]: 离开目录“/home/kylin/Install/redis-8.2.1/src”

3.5 安装Redis

按照规划创建redis目录。(哨兵模式不需要创建6380目录)。

kylin@KL1:~/Install/redis-8.2.1$ mkdir /data/redis

kylin@KL1:~/Install/redis-8.2.1$ mkdir /data/redis/data

kylin@KL1:~/Install/redis-8.2.1$ mkdir /data/redis/data/6379

kylin@KL1:~/Install/redis-8.2.1$ mkdir /data/redis/data/6380

kylin@KL1:~/Install/redis-8.2.1$ mkdir /data/redis/conf

kylin@KL1:~/Install/redis-8.2.1$ mkdir /data/redis/logs

使用make install指令进行安装,使用PREFIX参数指定安装目录。

kylin@KL1:~/Install/redis-8.2.1$ make install PREFIX=/data/redis

for dir in src; do make -C $dir install; done

make[1]: 进入目录“/home/kylin/Install/redis-8.2.1/src”

Hint: It's a good idea to run 'make test' ;)

INSTALL redis-server

INSTALL redis-benchmark

INSTALL redis-cli

make[1]: 离开目录“/home/kylin/Install/redis-8.2.1/src”

修改配置文件,加入REDIS_HOME环境变量,扩充PATH环境变量。

kylin@KL1:~/Install/redis-8.2.1$ sudo vi /etc/profile

…………

原有的配置信息。

…………

export REDIS_HOME=/data/redis

export PATH=$PATH:$REDIS_HOME/bin

在另外两台服务器上同样安装Redis。注意,银河麒麟V10高级服务器版默认已经安装了Redis 4.0.11版,如果直接输入redis-server、redis-cli会默认调用Redis 4.0.11版的相应程序,因此在后续配置时需要指明程序目录,如:“/data/redis/bin/redis-server”、“/data/redis/bin/redis-cli”。

4 配置Redis哨兵模式

4.1 开放防火墙端口

麒麟高级服务器版默认开启了防火墙,需要开放规划的Redis相关的端口,包括6379、26379等,以上端口均为TCP协议。

kylin@KL5 ~$ sudo firewall-cmd --add-port=6379/tcp --permanent

success

kylin@KL5 ~$ sudo firewall-cmd --add-port=26379/tcp --permanent

success

kylin@KL5 ~$ sudo firewall-cmd --reload

success

kylin@KL5 ~$ sudo firewall-cmd --list-ports

6379/tcp 26379/tcp

4.2 修改配置文件

从redis解压后目录复制文件redis.conf到“/data/redis/conf/”目录并改名为redis_6379.conf,从redis解压后目录复制文件sentinel.conf到“/data/redis/conf/”目录。

kylin@KL5:~/Install/redis-8.2.1$ cp redis.conf /data/redis/conf/redis_6379.conf

kylin@KL5:~/Install/redis-8.2.1$ cp sentinel.conf /data/redis/conf/

kylin@KL5:~/Install/redis-8.2.1$ cd /data/redis/conf/

修改每台服务器上的配置文件redis_6379.conf中以下内容。

kylin@KL5:/data/redis/conf$ vi redis_6379.conf

# 监听所有网络,默认127.0.0.1。

bind 0.0.0.0

# 监听端口。

port 6379

# 允许后台运行。

daemonize yes

# PID 存放路径。

pidfile /data/redis/redis_6379.pid

# 日志存放路径。

logfile /data/redis/logs/redis_6379.log

# 数据目录。

dir /data/redis/data/6379

# 主服务器地址,只在从机上配置。

replicaof 10.10.1.45 6379

# 主从同步master的密码。

masterauth 142857

# Redis密码。

requirepass 142857

修改每台服务器上的配置文件sentinel.conf中以下内容。其中最少切换哨兵数量为最少几个哨兵认为主服务器不可用时,就启动切换。如果是三台服务器集群,则此值应为2。

kylin@KL5:/data/redis/conf$ vi sentinel.conf

# 禁用保护模式。

protected-mode no

# 允许后台运行。

daemonize yes

# PID 存放路径。

pidfile /data/redis/sentinel.pid

# 日志存放路径。

logfile /data/redis/logs/sentinel.log

# 哨兵监控集群名称、主机地址、主机端口、最少切换哨兵数量。

sentinel monitor mymaster 10.10.1.45 6379 1

# 哨兵的认证密码。

sentinel auth-pass mymaster 142857

启动Redis服务和哨兵服务,启动顺序为主Redis服务、从Redis服务、主从哨兵服务。

kylin@KL5:~$ redis-server /data/redis/conf/redis_6379.conf

kylin@KL6:~$ redis-server /data/redis/conf/redis_6379.conf

kylin@KL5:~$ redis-sentinel /data/redis/conf/sentinel.conf

kylin@KL6:~$ redis-sentinel /data/redis/conf/sentinel.conf

4.3 测试主从复制

使用客户端工具连接主机,插入一条数据。

主机插入数据

使用客户端工具连接从机,可以看到从主机插入的数据。

从机查看数据

使用客户端工具连接从机,插入数据,会报只读错误。

从机插入数据

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/2/3 3:39:49

使用格子玻尔兹曼方法(LBM)模拟热扩散的Matlab代码

使用格子玻尔兹曼方法(LBM)模拟热扩散,Matlab代码格子玻尔兹曼方法(LBM)搞热扩散模拟其实挺有意思的,今天咱们用Matlab整一个简单的二维版本。先上核心思路:把温度场当作被动标量,用…

作者头像 李华
网站建设 2026/2/11 12:10:07

ORACLE学习笔记总结(数据库参数文件)

Oracle数据库参数文件详解与操作指令 一、参数文件类型概述 Oracle数据库使用两种参数文件来存储实例配置&#xff1a; 1. PFILE&#xff08;Parameter File&#xff09; 文件类型&#xff1a;文本文件&#xff0c;可直接编辑 默认名称&#xff1a;init<SID>.ora&…

作者头像 李华
网站建设 2026/1/30 8:57:35

浅谈:算法中的斐波那契数(六)

方法五&#xff1a;矩阵求幂斐波那契数列矩阵方程&#xff1a;算法&#xff1a;若 N 小于等于 1&#xff0c;则返回 N。使用递归函数matrixPower 计算给定矩阵 A 的幂。幂为 N-1&#xff0c;其中 N 是第 N 个 斐波那契数。matrixPower 函数将对 N/2 个斐波那契数进行操作。在 m…

作者头像 李华
网站建设 2026/2/4 19:06:39

BioSIM抗人TGFB1抗体SIM0367:适用广泛,功能多样

在生命科学领域&#xff0c;抗体作为研究和治疗的核心工具&#xff0c;其质量与性能直接影响实验结果的准确性和可靠性。随着生物技术的不断进步&#xff0c;越来越多的高质量生物类似药产品进入市场&#xff0c;为科研工作者提供了更加经济、高效的解决方案。其中&#xff0c;…

作者头像 李华
网站建设 2026/2/8 18:21:50

软件测试环境搭建全流程指南

在软件开发的生命周期中&#xff0c;测试环境是保证产品质量的关键基础设施。一个稳定、可靠的测试环境能够准确模拟生产环境&#xff0c;帮助测试人员及时发现缺陷&#xff0c;降低线上风险。本文将从环境规划、搭建步骤、维护管理三个维度&#xff0c;为测试从业者提供一套完…

作者头像 李华