本文简单聊聊Sentinel哨兵的安装部署(参考付磊、张益军两位大神的《Redis开发与运维》)
环境:Ubuntu 18.04.1 LTS
部署拓扑结构
我们如图这样部署拓扑结构,有3个Sentinel节点、一个Master节点、两个Slave节点组成的Redis Sentinel。
部署Redis数据节点
- 启动Master主节点
在redis目录下的复制个配置副本,起名为redis-6379.conf,在里面添加
port 6379
daemonize yes
logfile "log_6379.log"
dbfilename "dump_6379.rdb"
dir "/redis/data/"
启动主节点(后台启动,进入redis所在目录运行):
redis-server redis-6379.conf
确认是否启动:
redis-cli -h 127.0.0.1 -p 6379 ping
如果结果为PONG,说明节点启动了
- 启动Slave节点
与主节点启动方式相同,启动完成后,配置主从关系:
slaveof 127.0.0.1 6379
同样用ping来判断从节点是否启动成功,也可以通过ps命令查看:
ps -ef | grep redis
部署Sentinel节点
- 配置Sentinel节点
在redis目录下再复制个副本,重命名为redis-sentinel-26379.conf,加上配置:
port 26379
daemonize yes
logfile "sentinel_26379.log"
dir "/redis/data/"
sentinel monitor mymaster 127.0.0.1 6379 2
sentinel down-after-milliseconds mymaster 30000
sentinel parallel-syncs mymaster 1
sentinel failover-timeout mymaster 180000
- Sentinel节点的默认端口是26379
-
sentinel monitor mymaster 127.0.0.1 6379 2
配置代表Sentinel节点需要监控127.0.0.1:6379节点,2表示判断主节点失败至少需要2个Sentinel节点同意(客观下线),mymaster是主节点的别名
- 启动Sentinel节点
- 方法一,
redis-sentinel redis-sentinel-26379.conf
- 方法二,
redis-server redis-sentinel-26379.conf --sentinel
- 确认
Sentinel节点本质上是一个特殊的Redis节点,通过info Sentinel
可查询相关信息。
部署技巧和注意事项
- Sentinel节点建议不要部署在同一台物理机上
目前比较流行一台物理机做成若干虚拟机或者时下流行的容器,虽然他们有不同的IP地址,但实际上还是同一台物理机,如果出现硬件故障,会波及所有。所以请不要将Sentinel节点部署到同一台物理机上。 - 部署至少三个且奇数个Sentinel节点
这是出于领导者选举的考量,领导者选举需要Sentinel节点半数+1,部署奇数个可以满足条件之外节省一个节点。
部署方案选择
Redis Sentinel部署的时候,Sentinel节点集合可以监控一个主节点,也可以监控多个主节点,也就是下面两种拓扑图
方案一:一套Sentinel集合监控多个,这种方案一定程度上降低了维护成本,只需要维护固定数目的Sentinel节点,放更多的精力在多个Redis节点管理上。但是如果这套Sentinel集合出现异常,可能会对多个Redis节点造成影响。并且如果监控的Redis节点数量很多,Sentinel节点监控需要很多的网络连接,很影响监控效果。
方案二:一套Sentinel集合监控一个,这种方案优缺点与方案一是完全相反。做到了Sentinel彼此隔离,但也会造成Sentinel资源浪费。
P.S. 如果Sentinel节点集合监控的是同一个业务的多个主节点集合,那采用方案一,否则采用方案二