14. 【实战】在项目中重新搭建一套读写分离+高可用+多master的redis cluster集群

动手实操,练习如何操作部署哨兵集群,如何基于哨兵进行故障转移,还有一些企业级的配置方案

哨兵的配置文件

  1. sentinel.conf
    在这里插入图片描述
    最小的配置

  2. 每一个哨兵都可以去监控多个maser-slaves的主从架构,因为可能你的公司里,为不同的项目,部署了多个master-slaves的redis主从集群,相同的一套哨兵集群,就可以去监控不同的多个redis主从集群,你自己给每个redis主从集群分配一个逻辑的名称

// mymaster和resque就是两个不同的master-slaves主从集群
sentinel monitor mymaster 127.0.0.1 6379 2
sentinel down-after-milliseconds mymaster 60000
sentinel failover-timeout mymaster 180000
sentinel parallel-syncs mymaster 1

sentinel monitor resque 192.168.1.3 6380 4
sentinel down-after-milliseconds resque 10000
sentinel failover-timeout resque 180000
sentinel parallel-syncs resque 5
  1. sentinel monitor mymaster 127.0.0.1 6379:类似这种配置,来指定对一个master的监控,给监控的master指定的一个名称,因为后面分布式集群架构里会讲解,可以配置多个master做数据拆分

  2. sentinel monitor master-group-name hostname port quorum

quorum的解释如下:

  • 至少多少个哨兵要一致同意,master进程挂掉了,或者slave进程挂掉了,或者要启动一个故障转移操作
  • quorum是用来识别故障的,真正执行故障转移的时候,还是要在哨兵集群执行选举,选举一个哨兵进程出来执行故障转移操作
  • 假设有5个哨兵,quorum设置了2,那么如果5个哨兵中的2个都认为master挂掉了; 2个哨兵中的一个就会做一个选举,选举一个哨兵出来,执行故障转移; 如果5个哨兵中有3个哨兵都是运行的,那么故障转移就会被允许执行
  1. sentinel down-after-milliseconds mymaster 60000
    sentinel failover-timeout mymaster 180000
    sentinel parallel-syncs mymaster 1

上面的三个配置,都是针对某个监控的master配置的,给其指定上面分配的名称即可,这是最小的哨兵配置,如果发生了master-slave故障转移,或者新的哨兵进程加入哨兵集群,那么哨兵会自动更新自己的配置文件

  1. down-after-milliseconds:超过多少毫秒跟一个redis实例断了连接,哨兵就可能认为这个redis实例挂了
  2. parallel-syncs:新的master别切换之后,同时有多少个slave被切换到去连接新master,重新做同步,数字越低,花费的时间越多

默认1,基本够用

  • 假设redis集群是1个master,4个slave,然后master宕机了,4个slave中有1个切换成了master,剩下3个slave就要挂到新的master上面去,
  • 这个时候,如果parallel-syncs是1,那么3个slave,一个一个地挂接到新的master上面去,1个挂接完,而且从新的master sync完数据之后,再挂接下一个
  • 如果parallel-syncs是3,那么一次性就会把所有slave挂接到新的master上去
  1. failover-timeout:执行故障转移的timeout超时时长(ms)

搭建集群

第三个redis节点部署

在eshop-cache03上再部署一个redis

  1. 哨兵集群至少需要三个redis节点,所以需要再部署一个
  2. 只要安装redis就可以了,不需要去部署redis实例的启动
  3. 安装
wget http://downloads.sourceforge.net/tcl/tcl8.6.1-src.tar.gz
tar -xzvf tcl8.6.1-src.tar.gz
cd  /usr/local/tcl8.6.1/unix/
./configure  
make && make install
# 使用redis-3.2.8.tar.gz(最新稳定版)
tar -zxvf redis-3.2.8.tar.gz
cd redis-3.2.8
make && make test
make install

哨兵集群配置

哨兵配置文件

哨兵默认用26379端口,默认不能跟其他机器在指定端口连通,只能在本地访问。

mkdir /etc/sentinal
mkdir -p /var/sentinal/5000
/etc/sentinel/5000.conf
// echop-cache01
port 5000
bind 192.168.0.106
dir /var/sentinal/5000
sentinel monitor mymaster 192.168.0.106 6379 2
sentinel down-after-milliseconds mymaster 30000
sentinel failover-timeout mymaster 60000
sentinel parallel-syncs mymaster 1

// echop-cache02
port 5000
bind 192.168.0.107
dir /var/sentinal/5000
sentinel monitor mymaster 192.168.0.106 6379 2
sentinel down-after-milliseconds mymaster 30000
sentinel failover-timeout mymaster 60000
sentinel parallel-syncs mymaster 1

// echop-cache03
port 5000
bind 192.168.0.108
dir /var/sentinal/5000
sentinel monitor mymaster 192.168.0.106 6379 2
sentinel down-after-milliseconds mymaster 30000
sentinel failover-timeout mymaster 60000
sentinel parallel-syncs mymaster 1

启动哨兵进程

  1. eshop-cache01eshop-cache02eshop-cache03三台机器上,分别启动三个哨兵进程,组成一个集群,观察一下日志的输出
redis-sentinel /etc/sentinal/5000.conf
redis-server /etc/sentinal/5000.conf --sentinel
  1. 日志里会显示出来,每个哨兵都能去监控到对应的redis master,并能够自动发现对应的slave
  2. 哨兵之间,互相会自动进行发现,用的就是之前说的pub/sub消息发布和订阅channel消息系统和机制
    在这里插入图片描述

检查哨兵状态

# 连接哨兵
redis-cli -h 192.168.0.106 -p 5000

redis 命令:

sentinel master mymaster
SENTINEL slaves mymaster
SENTINEL sentinels mymaster
SENTINEL get-master-addr-by-name mymaster

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值