如何使用CentOS 8中的Sentinel设置Redis以实现高可用性

时间:2019-04-29 03:17:14  来源:igfitidea点击:

Redis通过Redis Sentinel(哨兵)分布式系统提供高可用性。Sentinel帮助监视Redis实例,检测故障并自动进行角色切换,从而使Redis部署能够抵抗任何类型的故障。

它具有监视Redis实例(主数据库和副本数据库)的功能,支持通过脚本通知其他服务/进程或系统管理员。

测试环境

根据Redis Sentinel文档,至少需要三个Sentinel实例才能进行可靠的部署。

主服务器和Sentinel1: 10.8.73.100
从服务器和Sentinel2: 10.8.73.21
从服务器和Sentinel3: 10.8.73.22

步骤1:启动Redis Sentinel服务

1.在CentOS 8上,Redis Sentinel服务与Redis服务器一起安装

# systemctl start redis-sentinel
# systemctl enable redis-sentinel
# systemctl status redis-sentinel

步骤2:在所有Redis节点上配置Redis Sentinel

  1. 配置文件 : /etc/redis-sentinel.conf

备份后编辑:

# cp /etc/redis-sentinel.conf /etc/redis-sentinel.conf.orig
# vi /etc/redis-sentinel.conf
  1. 设置监听端口26379
port 26379
  1. 让Sentinel监视我们的主服务器,只有至少两个sentinels同意, 才将其视为“ Objectively Down”状态。 名称“ mymaster ”可以自定义。
# 在主服务器上
sentinel monitor mymaster 127.0.0.1 6379 2

# 在从服务器1上
sentinel monitor mymaster 10.8.73.100 6379 2

# 在从服务器2上
sentinel monitor mymaster 10.8.73.100 6379 2

这几行要放到 auth-pass之前。不然报错 No such master with the specified name.

  1. 如果有密码,设置认证密码
sentinel auth-pass mymaster mima1234
  1. 设置超时时间,超过时间就认为主机不可达,并设置为“Subjectively Down”状态

5000表示5秒

sentinel down-after-milliseconds mymaster 5000
  1. 设置故障转移超时 180秒
sentinel failover-timeout mymaster 180000
  1. 设置在故障转移后可以重新配置为使用新主服务器的副本数。
sentinel parallel-syncs mymaster 1
  1. 在所有节点上重新启动Sentinel服务,使配置生效
# systemctl restart redis-sentinel
  1. 在所有节点上的防火墙中打开端口26379
# firewall-cmd --zone=public --permanent --add-port=26379/tcp
# firewall-cmd --reload

11.所有副本将被自动发现。Sentinel将使用有关副本的其他信息自动更新配置。

步骤3:检查Redis Sentinel设置状态

  1. 使用info sentinel命令,检查主服务器上的Sentinel状态/信息。
# redis-cli -p 26379 info sentinel
  1. 使用sentinel master显示有关主服务器(称为mymaster)的详细信息
# redis-cli -p 26379 sentinel master mymaster
  1. 显示有关从服务器和哨兵的详细信息
# redis-cli -p 26379 sentinel slaves mymaster
# redis-cli -p 26379 sentinel sentinels mymaster
  1. 在从属实例中按名称询问主服务器的地址。
# redis-cli -p 26379 sentinel get-master-addr-by-name mymaster

步骤4:测试Sentinel故障转移

  1. 在主服务器上,使Redis主服务器睡眠60秒。查询副本/从属服务器上当前主服务器的地址。
# redis-cli -p 6379
127.0.0.1:6379> AUTH mima1234
127.0.0.1:6379>  debug sleep 60
# redis-cli -p 26379 sentinel get-master-addr-by-name mymaster
# redis-cli -p 26379 sentinel get-master-addr-by-name mymaster