1. 程式人生 > 實用技巧 >docker搭建redis叢集(三主三從)

docker搭建redis叢集(三主三從)

在搭建叢集之前需要準備一個自定義網路做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 6379
bind 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

完美!

點個收藏,加個關注唄!