Docker——部署Redis集群

docker——部署Redis集群

Redis集群构图

在这里插入图片描述

当有主机不可用时,对应从机替代成为主机。

创建redis网络

docker network create redis --subnet 172.38.0.0/16

redis网络创建成功:

在这里插入图片描述

查看redis网络的配置信息:

docker network inspect redis

在这里插入图片描述

通过脚本编写六个Redis配置文件,用于启动六个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

执行上面的脚本后,查看创建的 redis 配置文件(以第一个redis服务为例):

在这里插入图片描述

启动六个 redis 容器服务

启动redis-1容器服务:

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-2容器服务:

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

启动redis-3容器服务:

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

启动redis-4容器服务:

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

启动redis-5容器服务:

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

启动redis-6容器服务:

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

启动成功后,查看上面六个启动的redis容器服务:

在这里插入图片描述

进入redis容器,创建集群

进入redis容器,随便进入一个

docker exec -it redis-1 /bin/sh

在这里插入图片描述

里面有aof持久化和redis节点的配置文件。

创建集群:

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 --c
luster-replicas 1

在这里插入图片描述

查看redis集群信息和节点信息

集群信息:

在这里插入图片描述

节点信息:可以看到哪个是主节点哪个是从节点

在这里插入图片描述

测试集群的高可用

往redis中设置值:

set name wanli

在这里插入图片描述

可以看到这个值设置到redis-2服务中了,并且redis-2是主节点。

停止redis-2容器服务,模拟主节点宕机的情况:

docker stop redis-2

尝试获得刚刚设置的值:

在这里插入图片描述

可以看到主机 redis-2宕机后,从它的从机 redis-6 获取到了刚刚设置的值,这样就算主机服务不可用了,从机也能提供服务变成主机,实现了集群的高可用。

再次查看集群中redis节点的信息,看有什么变化:

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

万里顾—程

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值