目录
什么是Redis Sentinel
搭建Redis Sentinel
启动与验证
什么是Redis Sentinel
官方文档:Redis 的 Sentinel 文档
搭建Redis Sentinel
首先需要在CentOS环境下准备三个redis节点和三个sentinel节点:
首先要在CentOS环境下安装好Redis,具体可以参考:CentOS7安装Redis
然后在redis的bin文件夹下创建sentinel文件夹,具体命令如下:
[root@localhost ~]# cd /usr/local/redis/bin/
[root@localhost bin]# mkdir sentinel
[root@localhost bin]# cd sentinel/
[root@localhost sentinel]# mkdir 6380 6381 6382 26380 26381 26382
1、在6380、6381、6382文件夹下创建redis.conf配置文件
[root@localhost sentinel]# cp ../redis.conf 6380/
[root@localhost sentinel]# cp ../redis.conf 6381/
[root@localhost sentinel]# cp ../redis.conf 6382/
修改配置文件:
protected-mode no
daemonize yes
port 6380
6381、6382两个节点作为6380的从节点,除了上面的配置外还需增加配置:
slaveof 192.168.115.134 6380
2、创建sentinel.conf配置文件
sentinel.conf可以从redis源码中cp
[root@localhost sentinel]# cp /usr/local/redis-source/sentinel.conf 26380/
[root@localhost sentinel]# cp /usr/local/redis-source/sentinel.conf 26381/
[root@localhost sentinel]# cp /usr/local/redis-source/sentinel.conf 26382/
修改端口、启动方式、哨兵要监控的master信息:
port 26380
daemonize yes
sentinel monitor mymaster 192.168.115.134 6380 2
最后一行配置代表Sentinel去监视一个名为mymaster的主服务器, 这个主服务器的 IP 地址为 192.168.115.134 , 端口号为 6380, 而将这个主服务器判断为失效至少需要2个Sentinel同意(即至少有2个Sentinel节点存活,才能完成master的选举)。
3、创建批量执行脚本
批量启动:
start-all.sh
/usr/local/redis/bin/redis-server /usr/local/redis/bin/sentinel/6380/redis.conf
/usr/local/redis/bin/redis-server /usr/local/redis/bin/sentinel/6381/redis.conf
/usr/local/redis/bin/redis-server /usr/local/redis/bin/sentinel/6382/redis.conf
/usr/local/redis/bin/redis-sentinel /usr/local/redis/bin/sentinel/26380/sentinel.conf
/usr/local/redis/bin/redis-sentinel /usr/local/redis/bin/sentinel/26381/sentinel.conf
/usr/local/redis/bin/redis-sentinel /usr/local/redis/bin/sentinel/26382/sentinel.conf
shutdown-all.sh
/usr/local/redis/bin/redis-cli -p 6380 shutdown
/usr/local/redis/bin/redis-cli -p 6381 shutdown
/usr/local/redis/bin/redis-cli -p 6382 shutdown
/usr/local/redis/bin/redis-cli -p 26380 shutdown
/usr/local/redis/bin/redis-cli -p 26381 shutdown
/usr/local/redis/bin/redis-cli -p 26382 shutdown
最后为脚本赋予权限
[root@localhost sentinel]# chmod +x start-all.sh shutdown-all.sh
启动与验证
执行start-all.sh脚本:
[root@localhost sentinel]# ./start-all.sh
登录一个哨兵节点,并查看是否启动成功:
[root@localhost sentinel]# ../redis-cli -p 26380
127.0.0.1:26380> info sentinel
# Sentinel
sentinel_masters:1
sentinel_tilt:0
sentinel_running_scripts:0
sentinel_scripts_queue_length:0
sentinel_simulate_failure_flags:0
master0:name=mymaster,status=ok,address=192.168.115.134:6380,slaves=2,sentinels=3
查看master节点详细信息:
127.0.0.1:26380> sentinel master mymaster
查看slave节点的详细信息:
127.0.0.1:26380> sentinel slaves mymaster
如果我们将当前的master节点下掉,哨兵会从slave节点中选举新的master:
[root@localhost sentinel]# ps -ef|grep redis
root 40180 1 0 22:13 ? 00:00:01 /usr/local/redis/bin/redis-server *:6380
root 40185 1 0 22:13 ? 00:00:00 /usr/local/redis/bin/redis-server *:6381
root 40190 1 0 22:13 ? 00:00:01 /usr/local/redis/bin/redis-server *:6382
root 40196 1 0 22:13 ? 00:00:01 /usr/local/redis/bin/redis-sentinel *:26380 [sentinel]
root 40201 1 0 22:13 ? 00:00:01 /usr/local/redis/bin/redis-sentinel *:26381 [sentinel]
root 40206 1 0 22:13 ? 00:00:01 /usr/local/redis/bin/redis-sentinel *:26382 [sentinel]
[root@localhost sentinel]# kill -9 40180
[root@localhost sentinel]# ../redis-cli -p 26380
127.0.0.1:26380> info sentinel
# Sentinel
sentinel_masters:1
sentinel_tilt:0
sentinel_running_scripts:0
sentinel_scripts_queue_length:0
sentinel_simulate_failure_flags:0
master0:name=mymaster,status=ok,address=192.168.115.134:6381,slaves=2,sentinels=3