# redis-cluster-docker **Repository Path**: wanghehan/redis-cluster-docker ## Basic Information - **Project Name**: redis-cluster-docker - **Description**: docker redis cluster 集群 一键启动 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 1 - **Created**: 2020-07-27 - **Last Updated**: 2025-05-22 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # redis-cluster-docker #### 介绍 docker redis cluster 集群 一键启动 演示视频在video目录下 #### 环境 * docker 版本19.03.8 * docker-compose 版本 1.25.5 * redis 镜像版本 redis:5 #### 集群搭建流程 1. `sh start.sh`使用docker-compose 启动6个redis节点 并创建主从集群 ```shell $ docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES a60419c79b98 redis:5 "docker-entrypoint.s…" 54 minutes ago Up 54 minutes redis8 9414adc6f70a redis:5 "docker-entrypoint.s…" 54 minutes ago Up 54 minutes redis7 08f645b19693 redis:5 "docker-entrypoint.s…" About an hour ago Up About an hour redis6 ae7724ac6ddd redis:5 "docker-entrypoint.s…" About an hour ago Up About an hour redis1 48b015feb048 redis:5 "docker-entrypoint.s…" About an hour ago Up About an hour redis2 8b6164fb4775 redis:5 "docker-entrypoint.s…" About an hour ago Up About an hour redis4 33af9be60625 redis:5 "docker-entrypoint.s…" About an hour ago Up About an hour redis5 a66526860dfc redis:5 "docker-entrypoint.s…" About an hour ago Up About an hour redis3 ``` 2. 使用redis-cli 查看集群信息 ```shell $ sh cli.sh 127.0.0.1:7000> cluster info cluster_state:ok cluster_slots_assigned:16384 cluster_slots_ok:16384 cluster_slots_pfail:0 cluster_slots_fail:0 cluster_known_nodes:8 cluster_size:4 cluster_current_epoch:7 cluster_my_epoch:1 cluster_stats_messages_ping_sent:10105 cluster_stats_messages_pong_sent:10071 cluster_stats_messages_update_sent:10 cluster_stats_messages_sent:20186 cluster_stats_messages_ping_received:10064 cluster_stats_messages_pong_received:10105 cluster_stats_messages_meet_received:7 cluster_stats_messages_update_received:1 cluster_stats_messages_received:20177 ``` 3. 使用jedis连接集群 测试 #### 扩容 1. 新启动两个redis节点 ```shell docker run -d --net=host -v $PWD/conf/redis7.conf:/usr/local/etc/redis/redis.conf --name redis7 redis:5 redis-server /usr/local/etc/redis/redis.conf docker run -d --net=host -v $PWD/conf/redis8.conf:/usr/local/etc/redis/redis.conf --name redis8 redis:5 redis-server /usr/local/etc/redis/redis.conf ``` 2. 添加新的主节点到集群中 `docker exec -it redis1 sh -c 'redis-cli -p 7000 --cluster add-node 127.0.0.1:7010 127.0.0.1:7000'` 3. 分配slots `docker exec -it redis7 sh -c 'redis-cli -p 7010 --cluster reshard 127.0.0.1:7010'` 4. 添加新的主节点的从节点 ```shell docker exec -it redis7 sh -c 'redis-cli -p 7010 --cluster add-node 127.0.0.1:7011 127.0.0.1:7010 --cluster-slave --cluster-master-id 898a6abb5a2bf5f653ad204215354882c1d6a766' #选择实际的master节点id ``` 5. 查看结果 ```shell 127.0.0.1:7000> cluster slots 1) 1) (integer) 0 2) (integer) 998 3) 1) "127.0.0.1" 2) (integer) 7010 3) "898a6abb5a2bf5f653ad204215354882c1d6a766" 4) 1) "127.0.0.1" 2) (integer) 7011 3) "05a3439a6c3da793b00ad7a9bd628e83da252e2f" 2) 1) (integer) 5461 2) (integer) 6461 3) 1) "127.0.0.1" 2) (integer) 7010 3) "898a6abb5a2bf5f653ad204215354882c1d6a766" 4) 1) "127.0.0.1" 2) (integer) 7011 3) "05a3439a6c3da793b00ad7a9bd628e83da252e2f" 3) 1) (integer) 10923 2) (integer) 11921 3) 1) "127.0.0.1" 2) (integer) 7010 3) "898a6abb5a2bf5f653ad204215354882c1d6a766" 4) 1) "127.0.0.1" 2) (integer) 7011 3) "05a3439a6c3da793b00ad7a9bd628e83da252e2f" 4) 1) (integer) 11922 2) (integer) 16383 3) 1) "127.0.0.1" 2) (integer) 7002 3) "4455484e5c121e6b63e64aa8521d9dfdac3a2fcc" 4) 1) "127.0.0.1" 2) (integer) 7005 3) "e633625826d146058032953098a7eb11a3129085" 5) 1) (integer) 6462 2) (integer) 10922 3) 1) "127.0.0.1" 2) (integer) 7001 3) "92073f679c75f3dba0d88049126b6eca1934d63d" 4) 1) "127.0.0.1" 2) (integer) 7004 3) "e398c637da7ae1d2ec8b8990098a211f152cdc42" 6) 1) (integer) 999 2) (integer) 5460 3) 1) "127.0.0.1" 2) (integer) 7000 3) "9a0fd32ec83414ba070f81fee31f8c05ad31bc8d" 4) 1) "127.0.0.1" 2) (integer) 7003 3) "73bfc413b4902013354fb8ebb3abc8172a5bc6d0" ``` #### 问题 1. docker 网络问题 导致jedis cluster连接失败 mac 不支持docker使用host网络模式导致容器外无法访问。 https://redis.io/topics/cluster-tutorial#redis-cluster-and-docker 解决方式: 使用centOs搭建集群