在單一 Docker 宿主機上建立 3 個容器,各運行一對 Redis 實例(共 6 個節點),組成 3 Master + 3 Slave 的 Redis Cluster,供外部客戶端透過宿主機 IP 訪問。
| 容器 ID | 容器 IP | Redis 端口 | 角色 |
|---|---|---|---|
| e2189fc1d4d9 | 172.17.0.2 | 7001, 7002 | Master + Slave |
| 91dac3ea23c9 | 172.17.0.4 | 7003, 7004 | Master + Slave |
| 9cb25bcd52d1 | 172.17.0.5 | 7005, 7006 | Master + Slave |
客戶端透過宿主機 192.168.100.67 訪問集群(需配置端口映射或 Host 網路模式)。
docker network create redis-net 讓容器間互通。redis.conf,關鍵參數:port 7001cluster-enabled yescluster-config-file nodes-7001.confcluster-node-timeout 5000appendonly yesbind 0.0.0.0docker run -d --net=redis-net -v $PWD/conf:/conf redis:3.2 redis-server /conf/redis-7001.conf 等方式逐個啟動,或編寫 docker-compose.yml 統一編排。redis-cli --cluster create 172.17.0.2:7001 172.17.0.2:7002 172.17.0.4:7003 172.17.0.4:7004 172.17.0.5:7005 172.17.0.5:7006 --cluster-replicas 1yes,自動分配 16384 槽位並指定 Master/Slave。redis-cli -c -h 192.168.100.67 -p 7001 cluster nodes 應顯示 6 節點、3 Master 含槽位、3 Slave 對應複製。redis-cli --cluster 原生支援,無需 Ruby 腳本。jedis-cluster、lettuce、StackExchange.Redis),自動重導向 MOVED/ASK。實驗完整配置檔、啟動腳本、docker-compose.yml 已打包:Docker+Redis_CLUSTER 實驗.zip(原文附件連結)。