linux redis7.4分片集群
计划节点
master 192.168.31.33:6379
slave 192.168.31.33:6380
master 192.168.31.34:6379
slave 192.168.31.34:6380
master 192.168.31.35:6379
slave 192.168.31.35:6380
各个服务器的master目录都是/data/redis-master/redis-7.4.1/,slave目录都是 /data/redis-slave/redis-7.4.1/
1、修改master节点配置
# 修改 bind 0.0.0.0 pidfile /var/run/redis_6379.pid logfile /data/redis-master/redis-7.4.1/logs/redis.log dir /data/redis-master/redis-7.4.1/data masterauth sykj@2024 requirepass sykj@2024 # 添加 cluster-enabled yes cluster-config-file /data/redis-master/redis-7.4.1/cluster.conf cluster-node-timeout 5000
2、修改slave节点配置
# 修改 bind 0.0.0.0 pidfile /var/run/redis_6380.pid logfile /data/redis-slave/redis-7.4.1/logs/redis.log dir /data/redis-slave/redis-7.4.1/data masterauth sykj@2024 requirepass sykj@2024 # 添加 cluster-enabled yes cluster-config-file /data/redis-slave/redis-7.4.1/cluster.conf cluster-node-timeout 5000
3、各个服务器配置master和slave的systemd服务
vim /etc/systemd/system/redis-master.service [Unit] Description=Redis After=network.target [Service] PIDFile=/var/run/redis/redis-master-server.pid ExecStart=/data/redis-master/redis-7.4.1/src/redis-server /data/redis-master/redis-7.4.1/redis.conf Restart=always [Install] WantedBy=multi-user.target
vim /etc/systemd/system/redis-slave.service [Unit] Description=Redis After=network.target [Service] PIDFile=/var/run/redis/redis-slave-server.pid ExecStart=/data/redis-slave/redis-7.4.1/src/redis-server /data/redis-slave/redis-7.4.1/redis.conf Restart=always [Install] WantedBy=multi-user.target
systemctl daemon-reload
4、启动master和slave
systemctl start redis-master
systemctl start redis-slave
5、构建集群
默认前三个主机,为Master ,分配Hash 槽,后三个主机 为 Slave,具体哪两个互为主从,后续可以通过集群状态查看。
/data/redis-master/redis-7.4.1/src/redis-cli -a sykj@2024 --cluster create 192.168.31.33:6379 192.168.31.34:6379 192.168.31.35:6379 192.168.31.33:6380 192.168.31.34:6380 192.168.31.35:6380 --cluster-replicas 1
6、查询集群状态信息
/data/redis-master/redis-7.4.1/src/redis-cli -a sykj@2024 --cluster check 192.168.31.33:6379
7、测试集群功能
连接集群的任意节点, 设置 key ,发现可以被均分到其它节点
连接到任意的其它节点,都可以读取到刚才设置的 key
8、测试高可用
关闭其中一个 master,在一定时间过后,3个 slave中的一个 成为 Master,分配hash槽,
并获得离线的master的数据。 原先保存在关闭的master上的数据,依然可正常访问。
此时 依然维持有三个Master,Slave 只有两个,集群依然正常运作,
让 之前关闭的master 实例重启后, 自动作为 Slave加入集群
## 查看 redis-cli --cluster 子命令相关的帮助
[root@redis-32 /data/redis]# redis-cli --cluster help
-
create:创建集群
-
check:检查集群
-
info:查看集群信息
-
fix:修复集群
-
reshard:在线迁移slot
-
rebalance:平衡集群节点slot数量
-
add-node:添加新节点
-
del-node:删除节点
-
set-timeout:设置节点的超时时间
-
call:在集群所有节点上执行命令
-
import:将外部redis数据导入集群