1.集群说明
三台测试机器172.16.4.78、172.16.4.79、172.16.4.80,做三主三从,请提前安装好docker以及docker-compose
主 | 从 | 槽位 | 容器名称 | 库 | 连接方式 |
---|---|---|---|---|---|
172.16.4.78:26379 | 172.16.4.78:26380 | 0-5460 | redis_26379、redis_26380 | cluster集群只有0库 | 代理三个主库做轮询 |
172.16.4.79:26381 | 172.16.4.79:26382 | 5461-10922 | redis_26381、redis_26382 | cluster集群只有0库 | |
172.16.4.80:26283 | 172.16.4.80:26284 | 10923-16383 | redis_26383、redis_26384 | cluster集群只有0库 |
2.部署步骤
1.依然使用基线redis配置文件、镜像,我的目录结构
172.16.4.78 /data/aibox-common/redis/26379、/data/aibox-common/redis/26380 172.16.4.79 /data/aibox-common/redis/26380、/data/aibox-common/redis/26382 172.16.4.80 /data/aibox-common/redis/26381、/data/aibox-common/redis/26384
2.redis.conf配置文件编辑(可以修改一份配置文件之后cp到其他机器上,只需要修改对应端口即可,其他内容都一致)
2.1修改部分
port 26379 #每台机器的主从都要根据分配的端口进行修改...port 26384
2.2增加部分
cluster-enabled yes #启用集群模式 cluster-config-file #nodes-26379.conf 或 nodes-26380.conf cluster-node-timeout 5000 #连接超时
2.3启动容器
分别进入到3台服务器的redis目录启动redis容器,
如:(修改对应服务器sevice名称、容器名称、映射目录、端口等)
[root@localhost 26379]# cat docker-compose.yaml version: '3.9' services:redis_26379:image: 172.16.11.17:48090/public/redis:6.0restart: alwaysdeploy:resources:limits:memory: '3G'reservations:memory: '2G'container_name: redis_26379volumes:- /etc/localtime:/etc/localtime:ro- /data/aibox-common/redis/26379/conf/redis.conf:/usr/local/etc/redis/redis.conf- /data/aibox-common/redis/26379/data:/dataports:- 26379:26379command: redis-server /usr/local/etc/redis/redis.confnetwork_mode: "host"
cd /data/aibox-common/redis/26379 && docker-compose up -d
2.4启动之后,每台服务器都有两个redis
2.5 创建redis集群
#在 172.16.4.78 上执行以下命令创建集群:
docker exec -it redis_26379 bash redis-cli --cluster create --cluster-replicas 1 -a ytx@123 \ 172.16.4.78:26379 172.16.4.78:26380 \ 172.16.4.79:26381 172.16.4.79:26382 \ 172.16.4.80:26383 172.16.4.80:26384
#以上命令会安装先后顺序自己创建主从,如:172.16.4.78:26379 172.16.4.78:26380,第一个就是主数据库、第二个就是第一个的从数据库,--cluster-replicas 1此参数就是有一个从数据库,如果想设置多个从,可以修改此参数
#以上命令也会自动创建槽点,在集群创建成功后,可以使用命令查看
#查看槽点分布 127.0.0.1:26379> CLUSTER SLOTS 1) 1) (integer) 10923 2) (integer) 16383 3) 1) "172.16.4.80" 2) (integer) 26383 3) "1358076d4a4a8e23ea8a4a81dd26a3818d3c0978" 4) 1) "172.16.4.78" 2) (integer) 26380 3) "b688d5e791f974f31da75cc539bcb21485386208" 2) 1) (integer) 0 2) (integer) 5460 3) 1) "172.16.4.78" 2) (integer) 26379 3) "5488dcbe811b5ff4941804e9a81a72268c23578e" 4) 1) "172.16.4.79" 2) (integer) 26382 3) "c5c3a500059191cea6d69cf220823863588c30dc" 3) 1) (integer) 5461 2) (integer) 10922 3) 1) "172.16.4.79" 2) (integer) 26381 3) "08f108af8b3d67dc393f56289b346bb5f344fe7f" 4) 1) "172.16.4.80" 2) (integer) 26384 3) "c99621590e5ae2a476c1efee9da3d14e783cdc42"#集群创建成功后,可以查看node节点127.0.0.1:26379> cluster nodes c99621590e5ae2a476c1efee9da3d14e783cdc42 172.16.4.80:26384@36384 slave 08f108af8b3d67dc393f56289b346bb5f344fe7f 0 1731297420762 3 connected c5c3a500059191cea6d69cf220823863588c30dc 172.16.4.79:26382@36382 slave 5488dcbe811b5ff4941804e9a81a72268c23578e 0 1731297418755 1 connected 1358076d4a4a8e23ea8a4a81dd26a3818d3c0978 172.16.4.80:26383@36383 master - 0 1731297419000 5 connected 10923-16383 5488dcbe811b5ff4941804e9a81a72268c23578e 172.16.4.78:26379@36379 myself,master - 0 1731297419000 1 connected 0-5460 b688d5e791f974f31da75cc539bcb21485386208 172.16.4.78:26380@36380 slave 1358076d4a4a8e23ea8a4a81dd26a3818d3c0978 0 1731297418000 5 connected 08f108af8b3d67dc393f56289b346bb5f344fe7f 172.16.4.79:26381@36381 master - 0 1731297419758 3 connected 5461-10922#集群创建成功后,可以查看集群信息root@localhost:/data# redis-cli -p 26379 -a ytx@123 127.0.0.1:26379> cluster infocluster_state:ok cluster_slots_assigned:16384 cluster_slots_ok:16384 cluster_slots_pfail:0 cluster_slots_fail:0 cluster_known_nodes:6 cluster_size:3 cluster_current_epoch:6 cluster_my_epoch:1 cluster_stats_messages_ping_sent:463 cluster_stats_messages_pong_sent:470 cluster_stats_messages_sent:933 cluster_stats_messages_ping_received:465 cluster_stats_messages_pong_received:463 cluster_stats_messages_meet_received:5 cluster_stats_messages_received:933#cluster_state:ok 说明集群状态正常#cluster_known_nodes:6 集群中已知的节点数量是 6 个。这包括主节点和从节点#cluster_size:3 集群中的主节点数量为 3 个,表示集群中有 3 个节点负责数据存储。
#参考文档
https://blog.csdn.net/kenkao/article/details/130761155