docker搭建redis叢集(三主三從)
阿新 • • 發佈:2020-07-30
在搭建叢集之前需要準備一個自定義網路做redis之間通訊
docker network create redis --subnet 172.38.0.0/16
然後我們就可以開始搭建叢集啦。
廢話不多說上程式碼
(1)先建立6個redis容器
for port in $(seq 1 6); do mkdir -p /mydata/redis/node-${port}/conf touch /mydata/redis/node-${port}/conf/redis.conf cat << EOF >/mydata/redis/node-${port}/conf/redis.conf port 6379bind 0.0.0.0 cluster-enabled yes cluster-config-file nodes.conf cluster-node-timeout 5000 cluster-announce-ip 172.38.0.1${port} cluster-announce-port 6379 cluster-announce-bus-port 16379 appendonly yes EOF done
(2)檢視這6個檔案是否建立成功
cd /mydata/redis/
(3)下載docker映象同時配置網路
docker run -p 6371:6379 -p 16371:16379--name redis-1 \ -v /mydata/redis/node-1/data:/data \ -v /mydata/redis/node-1/conf/redis.conf:/etc/redis/redis.conf \ -d --net redis --ip 172.38.0.11 redis:5.0.9-alpine3.11 redis-server /etc/redis/redis.conf
第一個redis容器建立完成。(這裡我們要搭建三主三從一共6個redis容器,沒有寫指令碼所以麻煩點)
docker run -p 6372:6379 -p 16372:16379 --name redis-2\ -v /mydata/redis/node-2/data:/data \ -v /mydata/redis/node-2/conf/redis.conf:/etc/redis/redis.conf \ -d --net redis --ip 172.38.0.12 redis:5.0.9-alpine3.11 redis-server /etc/redis/redis.conf
docker run -p 6373:6379 -p 16373:16379 --name redis-3 \ -v /mydata/redis/node-3/data:/data \ -v /mydata/redis/node-3/conf/redis.conf:/etc/redis/redis.conf \ -d --net redis --ip 172.38.0.13 redis:5.0.9-alpine3.11 redis-server /etc/redis/redis.conf
docker run -p 6374:6379 -p 16374:16379 --name redis-4 \ -v /mydata/redis/node-4/data:/data \ -v /mydata/redis/node-4/conf/redis.conf:/etc/redis/redis.conf \ -d --net redis --ip 172.38.0.14 redis:5.0.9-alpine3.11 redis-server /etc/redis/redis.conf
docker run -p 6375:6379 -p 16375:16379 --name redis-5 \ -v /mydata/redis/node-5/data:/data \ -v /mydata/redis/node-5/conf/redis.conf:/etc/redis/redis.conf \ -d --net redis --ip 172.38.0.15 redis:5.0.9-alpine3.11 redis-server /etc/redis/redis.conf
docker run -p 6376:6379 -p 16376:16379 --name redis-6 \ -v /mydata/redis/node-6/data:/data \ -v /mydata/redis/node-6/conf/redis.conf:/etc/redis/redis.conf \ -d --net redis --ip 172.38.0.16 redis:5.0.9-alpine3.11 redis-server /etc/redis/redis.conf
(4)6個redis容器建立完成--檢視一下
docker ps
(5)進入到redis容器中--建立叢集配置
docker exec -it redis-1 /bin/sh
redis-cli --cluster create 172.38.0.11:6379 172.38.0.12:6379 172.38.0.13:6379 172.38.0.14:6379 172.38.0.15:6379 172.38.0.16:6379 --cluster-replicas 1
(6)進入到redis中--檢視叢集資訊
redis-cli -c
cluster info
cluster nodes
到此叢集已經搭建完成了!
(7)測試
在redis中set一個鍵值對
set 1 1
後面get key也能拿到
(8)我們這時候將這個主redis關掉
docker stop fec2d8d8e9d2 #容器名/容器id
(9)我們再去get這個值,看一下是否能拿到
(10)檢視一下redis叢集資訊
cluster nodes
完美!
點個收藏,加個關注唄!