redis-sentinel安装配置

作者:Chris

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

  • 1,不时地监控redis是否按照预期良好地运行;
  • 2,如果发现某个redis节点运行出现状况,能够通知另外一个进程(例如它的客户端);
  • 3,能够进行自动切换。当一个master节点不可用时,能够选举出master的多个slave(如果有超过一个slave的话)中的一个来作为新的master,其它的slave节点会将它所追随的master的地址改为被提升为master的slave的新地址。

此处不再赘述。。。

Redis安装及主从配置 #

redis-sentinel安装配置 #

redis-sentinel无需额外安装,包含在redis的bin目录之中,属于redis基本功能之一

[root@3-225 ~]#  ll /app/redis-sentinel/bin
redis-benchmark  redis-check-aof  redis-check-dump  redis-cli  redis-sentinel  redis-server

启动命令

[root@3-225 ~]# cat start.sh 
dir=$(pwd)
nohup $dir/bin/redis-sentinel sentinel1.conf >> sentinel1.log &

配置文件说明

[root@3-225 ~]#  cat sentinel1.conf 
# Example sentinel.conf

# port <sentinel-port>
port 17399

# 守护进程模式
daemonize no

# 指明日志文件名
logfile "./sentinel1.log"

# 工作路径,sentinel一般指定/tmp比较简单
dir "/app/redis-sentinel"

# 此处需要手动指明master的ip和端口,别名叫做TestMaster
sentinel monitor TestMaster 10.27.5.170 7399 1

# master或slave多长时间(默认30秒)不能使用后标记为s_down状态。
sentinel down-after-milliseconds TestMaster 1500

# 若sentinel在该配置值内未能完成failover操作(即故障时master/slave自动切换),则认为本次failover失败。
sentinel failover-timeout TestMaster 10000

# 设置master和slaves验证密码
#sentinel auth-pass TestMaster 0234kz9*l

sentinel config-epoch TestMaster 8896
sentinel leader-epoch TestMaster 8896

# 以下为自动发现slave和监控此群集的其他sentinel毋须手动指定,启动之后自动添加
sentinel known-slave TestMaster 10.27.5.164 7399
sentinel known-sentinel TestMaster 10.27.5.164 17399 84a31d367c23ffe837f7903e968c1ade361e4021
sentinel known-sentinel TestMaster 10.27.5.170 17399 ddbf0e2e5fe937d978b15b4cc83585b453db72f1

# Generated by CONFIG REWRITE
sentinel current-epoch 8896
[root@3-225 ~]# 

常用命令 #

以下为常用查看命令,增删改命令目前暂未使用过,此处不在赘述,参考Redis 复制、Sentinel的搭建和原理说明

# bin/redis-cli  -p 17399
127.0.0.1:17399> 
info
SENTINEL masters  //显示被监控的所有master以及它们的状态,要是有多个master就显示多个
SENTINEL master TestMaster  //显示指定master的信息和状态
SENTINEL slaves TestMaster  //显示指定master的所有slave以及它们的状态
sentinel get-master-addr-by-name TestMaster  //返回指定master的ip和端口,如果正在进行failover或者failover已经完成,将会显示被提升为master的slave的ip和端口

您的评论

Build by Loppo 0.6.14