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

1. 哨兵配置文件

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

1
1
  • 最小配置

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

因为生产环境一般会部署多个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。

  • quorum详解:

  1. 至少需要quorum个哨兵一致同意,master进程挂掉了,获取slave进程挂掉了,获取要启动一个故障转移操作。

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

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

1.2 sentinel down-after-milliseconds

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

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 排版

以上是 【Redis主从架构】搭建经典的3节点哨兵集群 的全部内容, 来源链接: utcz.com/a/29995.html

回到顶部