经过一次failover后,会发现Sentinel配置文件变更了以下一些内容.可以看到Sentinel将最新的集群状态写入了配置文件.
$ cat /etc/redis/sentinel.conf
# Generated by CONFIG REWRITE
maxclients 4064
sentinel leader-epoch redis-master 1
sentinel known-slave redis-master 192.168.2.211 6379
sentinel known-slave redis-master 192.168.2.210 6379
sentinel known-sentinel redis-master 192.168.2.212 26379 bbf85fae74692d9527e77c5b0bb83a2b5db40dd2
sentinel known-sentinel redis-master 192.168.2.210 26379 2b2446b24a2bd01b9f54a6b2ca4f945a3480dd7e
sentinel current-epoch 1
验证下三台主机上的角色
以下输出信息,表明192.168.2.212上的Redis是Master角色.
$ redis-cli -p 6379 -h 192.168.2.212 -a 000000 info Replication
# Replication
role:master
connected_slaves:2
slave0:ip=192.168.2.211,port=6379,state=online,offset=2312008,lag=0
slave1:ip=192.168.2.210,lag=0
master_repl_offset:2312008
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:1639828
repl_backlog_histlen:672181
以下输出信息,表明192.168.2.210上的Redis是Slave角色.
$ redis-cli -p 6379 -h 192.168.2.210 -a 000000 info Replication
# Replication
role:slave
master_host:192.168.2.212
master_port:6379
master_link_status:up
master_last_io_seconds_ago:0
master_sync_in_progress:0
slave_repl_offset:2222825
slave_priority:100
slave_read_only:1
connected_slaves:0
master_repl_offset:0
repl_backlog_active:0
repl_backlog_size:1048576
repl_backlog_first_byte_offset:593455
repl_backlog_histlen:1048576
以下输出信息,表明192.168.2.211上的Redis是Slave角色.
$ redis-cli -p 6379 -h 192.168.2.211 -a 000000 info Replication
# Replication
role:slave
master_host:192.168.2.212
master_port:6379
master_link_status:up
master_last_io_seconds_ago:0
master_sync_in_progress:0
slave_repl_offset:2283392
slave_priority:100
slave_read_only:1
connected_slaves:0
master_repl_offset:0
repl_backlog_active:0
repl_backlog_size:1048576
repl_backlog_first_byte_offset:0
repl_backlog_histlen:0
Sentinel日常运维
Sentinel常用命令
以下列出的是Sentinel接受的命令:
PING :返回PONG.
SENTINEL masters :列出所有被监视的主服务器,以及这些主服务器的当前状态.
SENTINEL master <master name> :用于查看监控的某个Redis Master信息,包括配置和状态等.
SENTINEL slaves <master name> :列出给定主服务器的所有从服务器,以及这些从服务器的当前状态.
SENTINEL sentinels <master name> :查看给定主服务器的Sentinel实例列表及其状态.
SENTINEL get-master-addr-by-name <master name> :返回给定名字的主服务器的IP地址和端口号. 如果这个主服务器正在执行故障转移操作,或者针对这个主服务器的故障转移操作已经完成,那么这个命令返回新的主服务器的IP地址和端口号.
SENTINEL reset <pattern> :重置所有名字和给定模式pattern相匹配的主服务器.pattern 参数是一个Glob风格的模式.重置操作清除主服务器目前的所有状态,包括正在执行中的故障转移,并移除目前已经发现和关联的,主服务器的所有从服务器和Sentinel.
SENTINEL failover <master name> :当主服务器失效时,在不询问其他Sentinel意见的情况下,强制开始一次自动故障迁移(不过发起故障转移的Sentinel会向其他Sentinel发送一个新的配置,其他Sentinel会根据这个配置进行相应的更新).
SENTINEL reset <pattern> :强制重设所有监控的Master状态,清除已知的Slave和Sentinel实例信息,重新获取并生成配置文件.
SENTINEL failover <master name> :强制发起一次某个Master的failover,如果该Master不可访问的话.
SENTINEL ckquorum <master name> :检测Sentinel配置是否合理,failover的条件是否可能满足,主要用来检测你的Sentinel配置是否正常.
SENTINEL flushconfig :强制Sentinel重写所有配置信息到配置文件.
SENTINEL is-master-down-by-addr <ip> <port> :一个Sentinel可以通过向另一个Sentinel发送SENTINEL is-master-down-by-addr 命令来询问对方是否认为给定的服务器已下线.
增加和移除监控以及修改配置参数
SENTINEL MONITOR <name> <ip> <port> <quorum>
SENTINEL REMOVE <name>
SENTINEL SET <name> <option> <value>
增加和移除Sentinel
增加新的Sentinel实例非常简单,修改好配置文件,启动即可,其他Sentinel会自动发现该实例并加入集群.如果要批量启动一批Sentinel节点,最好以30秒的间隔一个一个启动为好,这样能确保整个 Sentinel集群的大多数能够及时感知到新节点,满足当时可能发生的选举条件.
(编辑:ASP站长网)
|