Redis Sentinel哨兵集群

Redis Sentinel(哨兵集群)是一种高可用的redis部署方案。在集群中的redis-master服务挂掉时,无需人为干预,即可通过哨兵集群的自我调整,实现redis服务的持续可用。

哨兵集群的功能:

  1. 监控:持续监测集群中的master和slave是否可用。
  2. 通知:通知系统管理员,集群中的部分服务不可用。
  3. 故障切换:若master挂掉,哨兵集群会启动故障切换,选出其中一个slave作为新的master。使用redis的应用程序也会被告知使用新的master。
  4. 提供配置信息:哨兵集群为redis客户提供服务发现功能,客户端访问哨兵集群,会被告知当前的master地址。

哨兵集群的分布式特性:多个哨兵进程协同工作。

多个哨兵进程的好处:

  1. 故障需要多个进程同时确认,降低了发现故障时出错的概率。
  2. 部分哨兵进程挂掉后,集群同样可以维持工作,从而使系统更加健壮。

运行哨兵的命令

redis-sentinel /path/to/sentinel.conf

或者

redis-server /path/to/sentinel.conf --sentinel

哨兵集群的配置文件必须存在,且是可写的。

哨兵集群中的各个redis间默认使用26379端口来通信。

部署哨兵集群之前之前必须明确:

  1. 至少有三台redis才能保证系统的健壮
  2. 三台或三台以上redis必须部署在不同的计算机或者虚拟机中,从而降低各个redis同时挂掉的概率
  3. 哨兵+ redis分布式系统不保证承认写过程中保留故障,由于Redis使用异步复制。然而,有一些方法来部署哨兵,使窗口失去写入限制到某些时刻,而有其他不太安全的方法来部署它。
  4. redis客户端需要支持哨兵集群

哨兵集群的配置

案例1:

port 5000
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

案例2

sentinel monitor resque 192.168.1.3 6380 4
sentinel down-after-milliseconds resque 10000
sentinel failover-timeout resque 180000
sentinel parallel-syncs resque 5

第一行配置的详解:

sentinel monitor    

 

案例1中,port5000是指sentinel工作的端口是5000

监控名为mymaster的哨兵集群,地址为 127.0.0.1 端口为6379 ,2表示两个哨兵发现master不可用才发起故障切换.

案例2中,监控名为resque的哨兵集群,地址为192.168.1.3 端口为6380,4个哨兵发现master不可用才能发起故障切换。

注意:故障切换的两个条件:

1.quorum个哨兵发现master不可用

2.半数以上的哨兵可用

 

关于sentinel的一些常用命令:

1.首先通过redis-cli 登录

redis-cli -p 5000

2.查看master信息,其中mymaster是哨兵集群的名称

sentinel master mymaster

3.查看slaves信息

SENTINEL slaves mymaster

4.查看其它哨兵信息

SENTINEL sentinels mymaster

5.查看master的地址

SENTINEL get-master-addr-by-name mymaster

6.其它

1.PING //测试sentinel是够正常,正常的话返回PONG

2.sentinel masters //返回哨兵集群监控的master列表和状态

3.SENTINEL MONITOR      //运行时增加监控对象

4.SENTINEL REMOVE   //删除所监控的master

5.SENTINEL SET    //修改配置

 

 增加哨兵

1.配置sentinel文件

2.执行启动命令

sentinel  sentinel.conf

删除哨兵

1.杀死哨兵进程

2.所有其他的哨兵执行

sentinel reset  mastername

3.查看各个哨兵监测的master

sentinel master mastername

删除master的slave,更改master的配置文件后对各个哨兵执行

sentinel reset mastername

 

 工作原理:

 

首先来了解哨兵集群中两个重要的基本概念:

SDOWN(主观宕机):哨兵实例的PING命令没有返回+PONG,-LOADING error,-MASTERDOWN error。

ODOWN(客观宕机):足够数量(大于等于sentinel.conf文件中的配置)的哨兵实例判断出发生了SDOWN。

 

发生客观宕机后开始故障切换。

 

哨兵集群可以自动发现各个哨兵实例以及redis master的slave

转载于:https://www.cnblogs.com/swaggyC/p/5780361.html

你可能感兴趣的:(数据库,运维)