【Redis主从架构】搭建经典的3节点哨兵集群

1. 哨兵配置文件

位于redis解压根目录下:sentinel.confweb

1
1
  • 最小配置

每个哨兵均可以去监控多个master-slaves的主从架构redis

由于生产环境通常会部署多个master-slaves的redis主从集群缓存

相同的一套哨兵集群,能够去监控不一样的多个redis主从集群架构

你能够给每一个redis主从集群分配一个逻辑的名称编辑器

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  复制代码

1.1 sentinel monitor mymaster 192.168.0.102 6379 2

指定一个master的监控,给监控的master指定一个名称指定监控的IP地址和端口号,2表示qronum。flex

  • quorum详解:
  1. 至少须要quorum个哨兵一致赞成,master进程挂掉了,获取slave进程挂掉了,获取要启动一个故障转移操做。ui

  2. quorum是用来识别故障的,真正执行故障转移的时候,还要在哨兵集群执行选举,选举一个哨兵进程出来进行故障转移操做。url

  3. 假若有5个哨兵,quorum设置了2,那么5个哨兵中的2个都认为master挂掉了,master才会认为是odown了。就会从2个哨兵中的选举一个哨兵,来执行故障转移。若是5个哨兵中有3个哨兵都是运行的,那么故障转移就会别容许执行。spa

1.2 sentinel down-after-milliseconds

超过多少毫秒跟一个redis实例端口了链接,哨兵就可能认为redis实例挂掉了。.net

1.3 sentinel failover-timeout

执行故障转移的timeout的超时时长,若是限定时长内没有完成故障转移,就会认为执行故障转移失败,就从剩下的哨兵选择一个哨兵重新执行故障转移

1.4 sentinel parallel-syncs

新的master切换以后,容许同时有多少个slave被切换到去链接新的master,从新作同步,数字越低,花费的事件就越高。

假如你的redis是1个master,4个slave

而后你的master宕机了,4个salve中有一个切换成了master,剩下3个slave就要挂到新的master上去。

这个时候,若是parallel-syncs是1,那么3个slave,会一个接一个挂到新的master上面去,一个挂完后,并且重新的master sync完数据以后,再挂接下一个。

若是parallel-syncs是3,那么一次性就会把全部的slave挂接到新的master上去

2. 安装一主二从的redis主从架构

eshop-cache01,eshop-cache02,eshop-cache03上安装redis,并启动。

# 安装tcl
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 tar -zxvf redis-3.2.8.tar.gz cd redis-3.2.8 make && make test make install 复制代码

3. 搭建经典三个节点的哨兵集群

哨兵默认是用26279端口,默认不能跟其余集群在指定端口联通,只能在本地访问

mkdir /etc/sentinal
 mkdir -p /var/sentinal/5000/log  # 编辑etc/sentinel/5000.conf cp sentinal.conf 5000.conf  vi 5000.conf  复制代码
  • 配置sentinal
# redis绑定端口
port 5000 # redis绑定ip bind 192.168.31.187 # redis绑定缓存存储目录 dir /var/sentinal/5000 # 哨兵绑定端口,ip,设置quorum sentinel monitor mymaster 192.168.0.102 6379 2 # 哨兵链接 master 超时时间 sentinel down-after-milliseconds mymaster 30000 # 哨兵设置 哨兵故障转移超时时间 sentinel failover-timeout mymaster 60000 # 哨兵设置 运行同时挂载到新master的slave数量 sentinel parallel-syncs mymaster 1 复制代码

3.1 启动哨兵进程

eshop-cache01,eshop-cache02,eshop-cache03三个节点启动sentinal,并查看日志。

  • 启动sentinal命令
redis-sentinel /etc/sentinal/5000.conf
redis-server /etc/sentinal/5000.conf --sentinal 复制代码

日志会显示出来,每一个哨兵去监控对应的redis master,而且可以自动发现对应的slave。

哨兵之间,互相也会自动进行发现,用的就是pub/sub消息发布和订阅信息系统和机制

2019-11-09-11-16-23
2019-11-09-11-16-23

3.2 检查哨兵转态

SENTINEL get-master-addr-by-name mymaster
复制代码
  • 进入哨兵命令行
redis-cli -h 192.168.31.187 -p 5000
复制代码
  • 查看sentinel是否搭建成功
info sentinel
复制代码
2019-11-09-12-30-37
2019-11-09-12-30-37

从图片中能够看到:redis的master节点有两个从节点,sentinel有三个节点。

  • 查看全部master的信息
sentinel master mymaster
复制代码
2019-11-09-11-20-02
2019-11-09-11-20-02
  • 查看全部slave的信息
SENTINEL slaves mymaster
复制代码
2019-11-09-11-22-33
2019-11-09-11-22-33
2019-11-09-11-23-00
2019-11-09-11-23-00
  • 查看全部的哨兵信息
SENTINEL sentinels mymaster
复制代码
2019-11-09-12-28-16
2019-11-09-12-28-16
  • 根据master名称获取master地址信息
SENTINEL get-master-addr-by-name mymaster
复制代码
2019-11-09-12-29-02
2019-11-09-12-29-02

本文使用 mdnice 排版

相关文章
相关标签/搜索