Redis哨兵Sentinel模式

  Redis 存在多台服务器,实现主从复制功能。哨兵模式是一种特殊模式,Redis 提供哨兵的命令,哨兵是一个独立进程,作为进程会独立运行。原理是哨兵通过发送命令, 等待 Redis 服务器响应,监控运行多个 Redis 实例。

哨兵有两个作用

  • 通过发送命令,让 Redis 服务器返回监测其运行状态,包括主服务器和从服务器。
  • 当 哨兵监测到 master宕机, 会自动将 slave 切换成 master,然后通过发布订阅模式通知到其他的从服务器,修改配置文件,让它们切换主机 。

  只是现实中一个哨兵进程对 Redis 服务器进行监控,也可能出现问题,为了处理这个问题,可以使用多个哨兵的监控,各个哨兵之间还会相互监控,就变为了多个哨兵模式。多个哨兵不仅监控各个 Redis 服务器,而且哨兵之间互相监控 , 看看哨兵们是否还“活 ” 着。 如下图

  

故障切换( failover)的过程:

  假设主服务器岩机,哨兵 1 先监测到这个结果,当时系统并不会马上进行 failover 操作 ,而仅仅是哨兵1 主观地认为主机己经不可用,这个现象被称为主观下线。【SDOWN】
  当后面的哨兵监测也监测到主服务器不可用 并且有 一定数量的哨兵认为主服务器不可用,哨兵之间就会形成一次投票,投票的结果由一个哨兵发起,进行 failover 操作,在 failover 操作的过程中切换成功后,就会通过发布订阅方式,让各个哨兵把自己监控的服务器实现切换主机 , 这个过程被称为客观下线【ODOWN】
  这样对于客户端而言, 一切都是透明的 。  

Sentinel环境搭建

  主机信息 :

  服务类型   是否主服务器   IP地址            端口信息
  Redis      是     192.168.223.129        6379
  Redis         否               192.168.223.131        6379
  Redis                   否               192.168.223.130         6379
      Sentinel                 —               192.168.223.129        26379
      Sentinel                 —               192.168.223.130        26379
      Sentinel                 —                192.168.223.131       26379

防火墙策略的调整

     确保redis和哨兵进程的端口,在防火墙上开放。

  redis的默认6379端口,在防火墙上开放,可以在本地通过RedisDeskTopManager来登录
  哨兵的默认26379端口,在防火墙上开放,确保哨兵之间的通信。

Redis 的主服务器的配置修改

#使得 Redis 服务器可以跨网络访问
bind  0.0.0.0
#设置密码
requirepass  admin
#主服务器密码
masterauth  admin

Redis 的从服务器的配置修改

#使得 Redis 服务器可以跨网络访问
bind  0.0.0.0
#设置密码
requirepass  admin
#指定主服务器,注意:有关 slaveof 的配置只是配置从服务器,而主服务器不需要配置
slaveof 192.168.223.129 6379
#主服务器密码 , 注意:有关 slaveof 的配置只是配置从服务器,而主服务器不需要配置
masterauth  admin

    主要是配置 Redis 服务器,从服务器比主服务器多一个 slaveof 的配置和密码 ,配置的 bind 使得 Redis 服务器可以跨网段访问 。 而对于外部的访问还需要提供密码,因此还提供 requirepass 的配置,用以配置密码 ,这样就配置完 3 台服务器 。

哨兵sentinel.conf 的配置

  配置 3 个哨 兵 , 每一个哨兵的配置都是一样的 ,在 Redis 安装目录下可以找到sentinel.conf 文件

# 禁止保护模式
protected-mode no
# 配置监听的主服务器,这里 sentinel monitor 代表监控 ,
# mymaster 代表服务器名称,可以自定义
# 192.168.223.129 代表监控的主服务器
# 6379 代表端口
# 2 代表只有两个或者两个以上的哨兵认为主服务器不可用的时候,才会做故障切换操作
sentinel monitor mymaster 192.168.223.129  6379 2
# sentinel auth-pass 定义服务的密码
# mymaster 服务名称
# admin Redis 服务器密码
sentinel auth-pass mymaster admin 

启动顺序

首先是主机 192.168.223.129的 Redis 服务进程 ,然后启动从机的服务进程,最后启动 3 个哨兵的服务进程

哨兵进程启动命令,指定配置文件

 ./redis-sentinel  ../etc/sentinel.conf

哨兵模式的其他配置顶

配置项                     参数类型               作用
port                       整数             启动哨兵进程端口
dir                     文件夹目录         哨兵进程服务临时文件夹,默认为/tmp , 要保证有可写入的权限
sentinel down-after-milliseconds          〈服务名称〉〈毫秒数(整数)>          指定哨兵在监视j Red i s 服务时,当 Red is 服务在一个毫秒数内都无法回答时,单个哨兵认为的主观下线时间,默认为 30000 (30 秒)
sentinel parallel-syncs                      〈服务名称〉〈服务器数(整数)>          指定可以有多少 Redis 服务同步新的主机, 一般而言 , 这个数字越小同步时间就越长,而越大,贝lj对网络资源要求则越高
sentinel failover-timeout                  〈服务名称〉〈毫秒数(整数)〉              指定在故障切换允许的毫秒数,当超过这个毫秒数的时候,就认为切换故障失败,默认为 3 分钟
sentinel notification-script                     〈服务名称〉〈脚本路径〉                   指定 sentinel 检测到该监控的 redis 实例指向的实例异常时,调用的报警脚本.该配置项可选,比较常用
sentinel down-after-milliseconds                                                                        配置项只是一个哨兵在超过其指定的毫秒数依 旧没有得到回答消息后,会自己认为主机不可用。对于其他哨兵而言,并不会认为主机不可用。

 

 

 

posted on 2019-03-10 22:48  溪水静幽  阅读(440)  评论(0)    收藏  举报