1、任务
实现三主三从的redis集群,当主redis挂掉的时候,副redis能顶上。
2、步骤
(1)创建一个网卡
命令:docker network create redis --subnet 172.38.0.0/16
(2)通过shell脚本创建留个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集群的信息。
查看信息是否创建成功。
查看配置信息是否写入。
(3)启动六个redis容器服务
命令
第一个:
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
第二个:
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
以此类推。也可以用脚本实现。
最终启动了六个服务。
(4)创建集群
先进入一个容器redis-1。
创建集群。
命令: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
集群创建成功。
(5)测试集群
连接集群:redis-cli -c
-c即集群模式
查看集群信息:cluster info。
查看节点信息:cluster nodes。
在集群中设置一个值:命令:set a b 。集群13正在处理。
将集群13容器停止,再查看从机中的数据。
再次查看集群中数据,发现在集群14中有数据,说明在主机器停止工作的情况下,从机自动顶上了。
可以再次查看集群信息。
可以看到有一台主机已经停止服务,然后启动从机作为主机,即myself,master。
3、结论
使用docker可以轻易地搭建高可用性redis集群,再次证明了docker的优越性!
1、创建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 --cluster-replicas 1
--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 : 六个节点的ip和端口
--cluster-replicas 1 :切片方式