docker redis集群(多机,一主二从)
环境
三台主机,启动三个容器,可以做集群,但是只要一台挂掉,集群就失败
三台主机,启动六个容器,一台主机搭建一主一从2个容器,挂掉一个容器,从节点顶上。
1、创建目录
192.168.59.102
# mkdir -p /home/redis/node1/data
# mkdir -p /home/redis/node4/data
# mkdir -p /home/redis/node7/data
192.168.59.103
# mkdir -p /home/redis/node2/data
# mkdir -p /home/redis/node5/data
# mkdir -p /home/redis/node8/data
192.168.59.104
# mkdir -p /home/redis/node3/data
# mkdir -p /home/redis/node6/data
# mkdir -p /home/redis/node9/data
2、启动容器
192.168.59.102
注意:密码 --requirepass 和 --masterauth必须一样
#docker create --name redis1 --network=host -v /home/redis/node1/data:/data redis --bind 192.168.59.102 --cluster-enabled yes --cluster-config-file redis-node1.conf
redis1端口默认:6379
#docker create --name redis4 --network=host -v /home/redis/node4/data:/data redis --bind 192.168.59.102 --cluster-enabled yes --cluster-config-file redis-node4.conf --port 6004
redis4端口:6004
#docker create --name redis7 --network=host -v /home/redis/node7/data:/data redis --bind 192.168.59.102 --cluster-enabled yes --cluster-config-file redis-node4.conf --port 6007
redis4端口:6007
#docker start redis1 redis4 redis7
192.168.59.103
#docker create --name redis2 --network=host -v /home/redis/node2/data:/data redis --bind 192.168.59.103 --cluster-enabled yes --cluster-config-file redis-node2.conf
redis2端口默认:6379
#docker create --name redis5 --network=host -v /home/redis/node5/data:/data redis --bind 192.168.59.103 --cluster-enabled yes --cluster-config-file redis-node5.conf --port 6005
redis5端口:6005
#docker create --name redis8 --network=host -v /home/redis/node8/data:/data redis --bind 192.168.59.102 --cluster-enabled yes --cluster-config-file redis-node4.conf --port 6008
redis4端口:6008
#docker start redis2 redis5 redis8
192.168.59.104
#docker create --name redis3 --network=host -v /home/redis/node3/data:/data redis --bind 192.168.59.104 --cluster-enabled yes --cluster-config-file redis-node3.conf
redis3端口默认:6379
docker create --name redis6 --network=host -v /home/redis/node6/data:/data redis --bind 192.168.59.104 --cluster-enabled yes --cluster-config-file redis-node6.conf --port 6006
redis6端口:6006
#docker create --name redis9 --network=host -v /home/redis/node9/data:/data redis --bind 192.168.59.102 --cluster-enabled yes --cluster-config-file redis-node4.conf --port 6009
redis4端口:6009
#docker start redis3 redis6 redis9
3、配置集群
进入任意一个容器
--cluster-replicas 0:0标识无从节点
--cluster-replicas 1:1标识一主一从
--cluster-replicas 2:2标识一主二从
如果实例不是3的倍数会报错,需要手动配置,这里就不说明了
注意配置了密码的话要加 -a 密码:redis-cli --cluster -a 密码 create
# redis-cli --cluster create 192.168.59.102:6379 192.168.59.102:6004 192.168.59.102:6007 192.168.59.103:6379 192.168.59.103:6005 192.168.59.103:6008 192.168.59.104:6379 192.168.59.104:6006 192.168.59.104:6009 --cluster-replicas 2
验证:
关闭192.168.59.102和192.168.59.103服务器
集群正常,因为,主实例挂掉,从实例会升级成为新的主实例,剩下的192.168.59.104集群节点中都有一个主实例在运行
结果:
主/从节点也叫做:主/从实例,一个主实例关闭,从实例就回成为新的主实例
三个集群节点中,主/从实例必要有一个,否则集群关闭