Docker的Redis集群配置

一、启动六台redis 

命令解释如下:

  • 分别起名redis-node-1~6;
  • -d:开启后台;
  • --net host:使用宿主机的ip和端口;
  • --privileged=true:开启权限;
  • -v:数据卷备份;
  • redis:6.0.8:启用的镜像是redis:6.0.8;
  • --cluster-enabled yes:是否开启集群:确认开启;
  • --appendonly yes:开启持久化;
  • 端口号分别是6381~6;
docker run -d --name redis-node-1 --net host --privileged=true -v /data/redis/share/redis-node-1:/data redis:6.0.8 --cluster-enabled yes --appendonly yes --port 6381
docker run -d --name redis-node-2 --net host --privileged=true -v /data/redis/share/redis-node-2:/data redis:6.0.8 --cluster-enabled yes --appendonly yes --port 6382
docker run -d --name redis-node-3 --net host --privileged=true -v /data/redis/share/redis-node-3:/data redis:6.0.8 --cluster-enabled yes --appendonly yes --port 6383
docker run -d --name redis-node-4 --net host --privileged=true -v /data/redis/share/redis-node-4:/data redis:6.0.8 --cluster-enabled yes --appendonly yes --port 6384
docker run -d --name redis-node-5 --net host --privileged=true -v /data/redis/share/redis-node-5:/data redis:6.0.8 --cluster-enabled yes --appendonly yes --port 6385
docker run -d --name redis-node-6 --net host --privileged=true -v /data/redis/share/redis-node-6:/data redis:6.0.8 --cluster-enabled yes --appendonly yes --port 6386

二、构建主从关系

配置ip,注意!此处的ip地址为真实ip地址(ifconfig查看ens33)

  • --cluster create:构建集群;
  • --cluster-replicas 1 :表示为每个master创建一个slave节点 (即一主一从形式)
docker exec -it redis-node-1 /bin/bash
redis-cli --cluster create 192.168.138.156:6381 192.168.138.156:6382 192.168.138.156:6383 192.168.138.156:6384 192.168.138.156:6385 192.168.138.156:6386 --cluster-replicas 1

输入上述命令后,将会产生三台master的redis,以及三台slave的reds 。

其架构如下所示(redis最多拥有16384个槽,平均分配给3个主节点redis):

Can I set the above configuration? (type 'yes' to accept): yes

成功后显示如下:

  • 3主3从,M是master、S是slave;
  • 端口6381~3为主,6384~6为从;


三、以6381作为切入点,查看集群状态

redis-cli -p 6381
cluster info
cluster nodes

可查看到redis一共有16384个槽,并且一共存在6个节点。 

cluster nodes可以更详细的查看到节点信息、挂载信息,是自动随机挂载的。 

  • Master        Slave
  • 6381           6385
  • 6382           6386
  • 6383           6384

为防止路由失效,不能使用以前单机的 redis-cli -p 6381 因为redis集群以及分配了对应的槽,若存储的数据的槽位不在当前redis,则会出现存储失败。

集群环境下应该加参数c,优化路由:redis-cli -p 6381 -c

redis集群会自动寻找对应插槽位置并重定向路由至对应的redis插槽。

 

查看集群状态的另一条命令: redis-cli --cluster check 192.168.138.156:6381

表示当前redis集群中有3个keys存在与3个master中,两个存在6381,一个存在8383.


四、主从切换

主机宕机时,从机会上位充当主机。

  • Master        Slave
  • 6381(宕机) 6385(上位切换)
  • 6382           6386
  • 6383           6384

下面模拟6381宕机,查看6385是否自动上位。

  • docker stop redis-node-1:关闭6381,模拟宕机。

  • docker exec -it redis-node-2 /bin/bash:进入节点2的redis
  • redis-cli -p 6382 -c:查看集群状态
  • 发现6381宕机,但是6385自动上位成为了master,主从切换成功。

若此时6381启动成功,则6381降级为slave从机6385保持master主机

若想保持6381为主机,则手动stop6385即可。


至此Docker中的Redis集群环境搭建完毕。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值