接上一篇Docker网络,上一篇分享了关于Docker网络的相关知识,今天就是用Docker网络,去搭建一个Redis集群,当然只是一个很简单的集群
首先创建一个网络,这个网络仅用于Redis的创建,默认使用桥接模式,一般都推荐使用桥接模式
注意,这里有个坑,避免将网络IP设置为和你的路由器是一样的,不然服务器没办法上网,
docker network create redis --subnet 192.168.0.1/16
网络创建好了后,接着编写一个shell脚本,通过这个脚本,一键生成6个redis的配置
for port in $(seq 1 6);
do
mkdir -p /media/soft/redis-node/node-${port}/conf
touch /media/soft/redis-node/node-${port}/conf/redis.conf
cat << EOF >/media/soft/redis-node/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 192.168.0.1${port}
cluster-announce-port 6379
cluster-announce-bus-port 16379
appendonly yes
EOF
done
redis的配置创建好了后,我们在编写一个shell脚本,用来生成redis容器
for port in $(seq 1 6)
do
docker run -itd -p 637${port}:6379 -p 1637${port}:16379 --name redis-${port} -v /media/soft/redis-node/node-${port}/data:/data -v /media/soft/redis-node/node-${port}/conf/redis.conf:/etc/redis/redis.conf --net redis --ip 192.168.0.1${port} redis redis-server /etc/redis/redis.conf
done
接下来开始创建集群,随便进入一个容器中,然后去创建
# 进入容器内部,如果进入失败,使用/bin/sh尝试
docker exec -it redis-1 /bin/bash
# 创建集群,IP地址根据自己的网络填写,端口默认是6379
redis-cli --cluster create 192.168.0.11:6379 192.168.0.12:6379 192.168.0.13:6379 192.168.0.14:6379 192.168.0.15:6379 192.168.0.16:6379 --cluster-replicas 1
# 回车后会有提示,可以看到我们创建的集群的相关信息,输入 "yes" 确定创建
等待一段时间,集群创建完成,紧接着就来测试我创建的集群是否正确
# 连接集群
redis-cli -c
# 查看集群信息
cluster info
cluster nodes
从上面的图,可以看到我们配置的集群的信息,三个主机三个从机,以及它们的IP主从等信息 接下来通过redis的一些命令来存取数据测试,例如我现在set一个值,可以看到,我存的值是存在 “192.168.0.12” 这个数据库里面的
然后,我现在模拟故障,我把 “192.168.0.12” 这个镜像给停掉,然后来测试能不能读取到数据,重新连接集群,然后去获取,可以看到,依旧能获取到数据,但是从 “192.168.0.16” 这台服务器上获取到的,说明我们的集群搭建成功了
重新查看集群的信息,可以看到 “192.168.0.12” 这台服务器故障
使用docker来部署集群真的是不要太爽啊…