接上一篇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

docker 启动redis集群 docker搭建redis集群弊端_redis


  接下来开始创建集群,随便进入一个容器中,然后去创建

# 进入容器内部,如果进入失败,使用/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" 确定创建

docker 启动redis集群 docker搭建redis集群弊端_redis_02


  等待一段时间,集群创建完成,紧接着就来测试我创建的集群是否正确

docker 启动redis集群 docker搭建redis集群弊端_docker 启动redis集群_03

# 连接集群
redis-cli -c
# 查看集群信息
cluster info 
cluster nodes

docker 启动redis集群 docker搭建redis集群弊端_redis_04


  从上面的图,可以看到我们配置的集群的信息,三个主机三个从机,以及它们的IP主从等信息  接下来通过redis的一些命令来存取数据测试,例如我现在set一个值,可以看到,我存的值是存在 “192.168.0.12” 这个数据库里面的

docker 启动redis集群 docker搭建redis集群弊端_docker 启动redis集群_05


  然后,我现在模拟故障,我把 “192.168.0.12” 这个镜像给停掉,然后来测试能不能读取到数据,重新连接集群,然后去获取,可以看到,依旧能获取到数据,但是从 “192.168.0.16” 这台服务器上获取到的,说明我们的集群搭建成功了

docker 启动redis集群 docker搭建redis集群弊端_Docker_06


  重新查看集群的信息,可以看到 “192.168.0.12” 这台服务器故障

docker 启动redis集群 docker搭建redis集群弊端_docker_07


  使用docker来部署集群真的是不要太爽啊…