环境与工具
部署环境
- 阿里云Ubuntu 16.04
- Redis 3.0.6
部署工具
- Xshell 6
- Xftp 6
安装sentinel(哨兵)
键入sudo apt-get install redis-sentinel
此时在
/etc/redis
下可以看到新的哨兵配置文件sentinel.conf
:
sentinel配置文件解读
键入vim sentinel.conf
查看配置文件:
几个重要的配置内容如下:
#是否为守护进程
daemonize yes
pidfile "/var/run/redis/redis-sentinel.pid"
logfile "/var/log/redis/redis-sentinel.log"
bind 127.0.0.1
port 26379
#工作目录
dir "/var/lib/redis"
#声明该哨兵的主库是mymaster,主库的ip和端口分别为127.0.0.1和6379
#最后一个2的含义是,在哨兵发生领导选举时,该哨兵需要获得2票才能成为leader
sentinel monitor mymaster 127.0.0.1 6379 2
#在mymaster宕机30秒后进行主观下线
sentinel down-after-milliseconds mymaster 30000
#指定在发生failover故障转移时最多可以有1个slave同时对新的master进行同步
sentinel parallel-syncs mymaster 1
#设置故障转移超时时间为180秒
#这个参数的意义比较复杂,详细可以参考官方的注释说明
sentinel failover-timeout mymaster 180000
#发现两个从节点
sentinel known-slave mymaster 127.0.0.1 6380
sentinel known-slave mymaster 127.0.0.1 6381
#epoch实现类似版本号的功能
sentinel current-epoch 0
创建三个sentinel
键入vim sentinel-26379.conf
,编辑文件如下:
port 26379
daemonize yes
dir /opt/redis-5.0.4/data
logfile "26379.log"
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
键入cp -v sentinel-26379.conf sentinel-26380.conf
并修改新配置文件如下:
也即将端口改为26380即可。
同理,再复制出一份sentinel-26381.conf
,完成三个哨兵的配置。
启动sentinel
键入 redis-sentinel sentinel-26379.conf
:
发现提示说没有创建文件夹,创建再重新执行即可:
依次键入mkdir /opt/redis-5.0.4
,mkdir /opt/redis-5.0.4/data
:
执行成功。
查看进程:
同样,我们启动
sentinel-26380.conf
与sentinel-26381.conf
:
查看sentinel信息
-
键入
vim sentinel-26381.conf
可以看到配置有一些自动添加的内容:
如果发生了故障转移,sentinel的配置文件会自动进行相应的更改。 -
键入
redis-cli -p 26379 info
,可以看到部分信息如下:
# Sentinel
sentinel_masters:1
sentinel_tilt:0
sentinel_running_scripts:0
sentinel_scripts_queue_length:0
#主节点是mymaster,ip和端口分别为127.0.0.1和6379,有2个从节点,共4个sentinel
master0:name=mymaster,status=ok,address=127.0.0.1:6379,slaves=2,sentinels=4
配置成功。
更多Redis高可用配置请参考: