麒麟V10系统,两台服务器配置redis集群
2025-08-22 16:06:04,

概述

这里是两台服务器配置Redis集群,3主3从
在两台服务器都安装redis,然后配置不同的redis.C++onf配置文件,以不同的节点去启动redis

安装redis

根据安装包类型进行安装,建议版本5以上,低版本需依赖Ruby环境,且部署步骤复杂
[](https://wwkv.lanzouw.com/iYf2d2ukw1ta 密码:2vtn)

rpm安装

上传安装包至/opt目录 选择自己想要的安装的目录也可以

cd /opt

tar -zxvf redis-4.0.11-16.p04.ky10.x86_64.rpm.tar.gz

rpm -ivh redis-4.0.11-16.p04.ky10.x86_64.rpm

make 编译安装

tar -zxvf redis-5.0.1.tar.gz

make install make PREFIX=/app/redis install 也可以指定路径安装

设置开机自启动

systemctl daemom-reload //使得系统systemd的service文件重启生效,如果修改了service启动脚本

systemctl enable redis.service

systemctl start redis.service

常用的启动redis命令:

启动Redis服务:
systemctl start redis.service

停止Redis服务:
systemctl stop redis.service

重启Redis服务:
当修改了配置文件后,你可能需要重启Redis服务以使更改生效。
systemctl restart redis.service

查看Redis服务状态:
检查Redis服务是否正在运行。
systemctl status redis.service

启用开机自启动:
让Redis随系统启动自动运行。
systemctl enable redis.service

禁用开机自启动:
取消Redis随系统启动自动运行。
systemctl disable redis.service

配置redis集群

两台机器互通 例如
182.18.31.91 182.18.31.92
3主3从 6379 6380 6381 6382 6383 6384

一台机器3个,创建3文件夹以区分对应节点端口配置

182.18.31.91中 92中同下述操作,只是配置文件的端口不一样

mkdir -p /usr/local/redis-cluster/

还需要建立以下文件夹

/usr/local/redis-cluster/6379/data 存放数据文件

/usr/local/redis-cluster/6379/log 存放日志

将配置文件复制不同目录下
cp redis.conf /usr/local/redis-cluster/6379/redis-6379.conf

cd /usr/local/redis-cluster/6379/

vi redis-6379.conf


**修改以下关键配置**

port 6379

bind 0.0.0.0  

cluster-enabled yes

cluster-config-file nodes-6379.conf

cluster-node-timeout 5000

appendonly yes

pidfile /var/run/redis_6379.pid

logfile /usr/local/redis-cluster/6379/log/redis.log

dir /usr/local/redis-cluster/6379/data   #dir 存放数据文件,例如生成的nodes-6379.conf

redis-server redis-cli 在redis安装目录src里,启动每个实例

可以创建一个redis的systemd 的service脚本文件启动/停止/重启所有端口


./redis-server /usr/local/redis-cluster/6379/redis-6379.conf

./redis-server /usr/local/redis-cluster/6380/redis-6380.conf

./redis-server /usr/local/redis-cluster/6381/redis-6381.conf

./redis-server /usr/local/redis-cluster/6382/redis-6382.conf

./redis-server /usr/local/redis-cluster/6383/redis-6383.conf

./redis-server /usr/local/redis-cluster/6384/redis-6384.conf

或redis@service 多实例启动脚本文件

[Unit]
Description=Redis instance for port %i
After=network.target
 
[Service]
Type=Forking
PIDFile=/var/run/redis-%i.pid
User=redis
Group=redis
ExecStart=/usr/local/redis/redis-5.0.1/src/redis-server  /usr/local/redis-cluster/%i/redis-%i.conf    #修改redis目录
ExecStop=/usr/local/redis/redis-5.0.1/src/redis-cli -p %i shutdown
Restart=always
RestartSec=5s
PrivateTmp=true
LimitNOFILE=65536
 
[Install]
WantedBy=multi-user.target

systemctl daemon-reload //重新加载systemd服务
systemctl start redis@6379.service //根据端口号去启动不同的redis实例
systemctl status redis@6379.service
systemctl restart redis@6379.service
systemctl stop redis@6379.service

查看进程
ps -ef|grep redis

当所有实例都成功启动后,在任意一台服务器上使用redis-cli创建集群

redis-cli --cluster create 182.18.31.91:6379 182.18.31.91:6380 182.18.31.91:6381 182.18.31.92:6382 182.18.31.92:6383 182.18.31.92:6384 --cluster-replicas 1

// --cluster-replicas 1表示每个主节点有一个从节点

//Redis 4.0不支持--cluster选项

如何验证集群是否创建成功

启动 redis-cli 并进入集群模式:

你也可以直接使用redis-cli命令进入集群模式,然后执行集群相关的命令

redis-cli --cluster check 182.18.31.91:6379

其中host和port你想要连接的Redis集群节点的IP地址和端口

redis-cli -c -h host -p port

在 redis-cli 中执行集群命令:

cluster info //查看集群的信息

cluster nodes //查看集群中的节点列表

set hello world //后在get hello 查看获取的值是不是world

查看redis进程是否已切换为集群状态(cluster)

ps aux|grep redis

注意

“3 主 3 从” 是 Redis Cluster 的最小高可用配置,核心是满足哈希槽分配和多数派投票需求

1.至少需要 3 个 master 的原因
Redis Cluster 将 16384 个哈希槽分配给所有 master 节点,数据按槽存储。而故障转移的前提是 “多数派投票”:当某个 master 宕机时,其 slave 要晋升为新 master,需要获得超过半数的其他 master 节点同意(即 “quorum” 机制)。
若只有 2 个 master:假设 master1 宕机,仅剩 master2,此时无法获得 “超过半数”(2 个节点需至少 2 票同意,但仅剩 1 个 master,无法满足),故障转移失败。
若有 3 个 master:即使 1 个 master 宕机,剩余 2 个 master,2 > 3/2(多数),可正常投票让 slave 晋升,保证集群可用。
因此,Redis Cluster 强制要求至少 3 个 master 才能正常工作(少于 3 个无法完成哈希槽分配和故障转移)。

2.每个 master 配 1 个 slave(3 主 3 从)的原因
每个 master 需要至少 1 个 slave 来保证:
数据冗余:slave 通过异步复制同步 master 数据,避免 master 宕机导致数据丢失。
故障接管:当 master 宕机时,其 slave 可通过投票晋升为新 master,继续提供服务。
3 主 3 从(共 6 节点)是最小高可用配置,通常会分散在不同服务器(如 3 台服务器,每台 1 主 1 从),避免单服务器宕机导致 “主从同挂”。

如果 3 个 master 集中在同一台服务器,该服务器宕机后:

若这 3 个 master 的 slave 在其他服务器(且存活),但此时原 3 个 master 已下线,剩余的 master 数量为 0(无法满足多数派投票),集群会进入 “不可用” 状态,自动故障转移失败,必须手动干预

查看槽位分配情况(应显示所有16384个槽已分配)
127.0.0.1:6381> cluster info | grep cluster_state
若输出“cluster_state:ok”,表示集群恢复可用