redis cluster集群部署(docker部署)

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.0
    restart: always
    deploy:
      resources:
        limits:
          memory: '3G'
        reservations:
          memory: '2G'
    container_name: redis_26379
    volumes:
      - /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:/data
    ports:
      - 26379:26379
    command: redis-server /usr/local/etc/redis/redis.conf
    network_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 info

cluster_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

 

posted @ 2024-11-11 13:05  Leonardo-li  阅读(96)  评论(0编辑  收藏  举报