哨兵模式sentinel搭建

Sentinel(哨兵)是用于监控redis集群中Master状态的工具,是Redis 的高可用性解决方案。

当一个集群中的master失效之后,sentinel可以选举出一个新的master用于自动接替master的工作,集群中的其他redis服务器自动指向新的master同步数据。一般建议sentinel采取奇数台,防止某一台sentinel无法连接到master导致误切换。

Redis-Sentinel是Redis官方推荐的高可用性(HA)解决方案,当用Redis做Master-slave的高可用方案时,假如master宕机了,Redis本身(包括它的很多客户端)都没有实现自动进行主备切换,而Redis-sentinel本身也是一个独立运行的进程,它能监控多个master-slave集群,发现master宕机后能进行自动切换。

Sentinel由一个或多个Sentinel 实例 组成的Sentinel 系统可以监视任意多个主服务器,以及这些主服务器属下的所有从服务器,并在被监视的主服务器进入下线状态时,自动将下线主服务器属下的某个从服务器升级为新的主服务器。

部署技巧和注意事项

Sentinel节点建议不要部署在同一台物理机上
目前比较流行一台物理机做成若干虚拟机或者时下流行的容器,虽然他们有不同的IP地址,但实际上还是同一台物理机,如果出现硬件故障,会波及所有。所以请不要将Sentinel节点部署到同一台物理机上。
部署至少三个且奇数个Sentinel节点
这是出于领导者选举的考量,领导者选举需要Sentinel节点半数+1,部署奇数个可以满足条件之外节省一个节点。

Sentinel节点本质上是一个特殊的Redis节点,通过info Sentinel可查询相关信息

安装redis-sentinel后,配置好redis-sentinel.conf后,启动Sentinel节点的方法

方法一
redis-sentinel redis-sentinel-26379.conf

方法二,
redis-server redis-sentinel-26379.conf --sentinel

配置过程

  1. 安装redis-sentinel $ sudo apt-get install redis-sentinel
  2. 配置多个sentinel.conf (注意,同一服务器中搭建多个sentinel集群时,端口号需要不一至)
port 26379 
daemonize no
bind 10.0.0.1
logfile "/data/app/redis/logs/sentinel_26379.log"
dir "/data/db/sentinel_26379"
sentinel monitor mymaster 10.0.0.1 6379 2
# sentinel auth-pass my_master redispass
sentinel down-after-milliseconds mymaster 30000
sentinel parallel-syncs mymaster 1
sentinel failover-timeout mymaster 180000

注意:若sentinel监控的主redis设置了密码,所有被监控的主从机的redis.conf中requirepassmasterpass 都需要设置一样的密码, sentinel的配置中一定要设置auth-pass参数,否则sentinel进行failover时,会出现某些从机同步新的主机。

  1. 分别启动各sentinel $ redis-sentinel sentinel.config
  2. 检查sentinel 启动情况
  • 登录到sentinel redis-cli -h 10.0.0.1 -p 26379
  • 查看sentinel集群列表 sentinel sentinels <master_name>
  • 查看sentinel集群对监控中的主redis信息列表 sentinel masters
  • 查看指定主redis的信息 sentinel master <master_name>
  • 查看sentinel集群对监控中的从redis信息列表 sentinel slaves <master_name>
一次故障转移操作由以下步骤组成:

- 发现主服务器已经进入客观下线状态。
- 对我们的当前纪元进行自增(详情请参考 Raft leader election ), 并尝试在这个纪元中当选。
- 如果当选失败, 那么在设定的故障迁移超时时间的两倍之后, 重新尝试当选。 如果当选成功, 那么执行以下步骤。
- 选出一个从服务器,并将它升级为主服务器。
- 向被选中的从服务器发送 SLAVEOF NO ONE 命令,让它转变为主服务器。
- 通过发布与订阅功能, 将更新后的配置传播给所有其他 Sentinel , 其他 Sentinel 对它们自己的配置进行更新。
- 向已下线主服务器的从服务器发送 SLAVEOF 命令, 让它们去复制新的主服务器。
- 当所有从服务器都已经开始复制新的主服务器时, 领头 Sentinel 终止这次故障迁移操作。

维护

增加一个sentinel实例

增加新的Sentinel实例非常简单,修改好配置文件,启动即可,其他Sentinel会自动发现该实例并加入集群。如果要批量启动一批Sentinel节点,最好以30秒的间隔一个一个启动为好,这样能确保整个 Sentinel集群的大多数能够及时感知到新节点,满足当时可能发生的选举条件。

移除一个sentinel实例

移除一个Sentinel实例会相对麻烦一些,因为Sentinel不会忘记已经感知到的Sentinel实例,所以最好按照下列步骤来处理:

停止将要移除的sentinel进程。
给其余的sentinel进程发送SENTINEL RESET *命令来重置状态,忘记将要移除的sentinel,每个进程之间间隔30秒。
确保所有sentinel对于当前存货的sentinel数量达成一致,可以通过SENTINEL MASTER 命令来观察,或者查看配置文件。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值