一:整体哨兵模式规划
redis节点规划:6381 (master), 6382 (slave),6383 (slave),6384 (slave)
sentinel模式节点规划:26381 , 26382
二:Redis主从安装步骤
2.在/usr/local/目录下创建 redis-sentinel文件夹
3.进入/usr/local/redis-sentinel目录下,创建文件夹 master-6381 ,slave-6382 ,slave-6383 ,slave-6384 ,sentinel-26381 ,sentinel-26382
4.把单机版安装目录下redis.conf拷贝到目录下 master-6381 slave-6382 slave-6383 slave-6384
5.把单机版安装目录下 sentinel.conf 拷贝到 sentinel-26381 ,sentinel-26382
6.修改/usr/local/redis-sentinel/master-6381/目录下 redis.conf 配置文件 (主服务器)
- bind 192.168.1.62 --修改成自己的IP地址
- port 6381 --主服务器的端口号
- daemonize yes --后台启动
- pidfile /var/run/redis_6381.pid -- redis 后台启动的时候,会在/var/run/默认生成一个pid文件
- protected-mode no--保护模式关闭,否则启动哨兵的时候,无法正常运行(还可以设置密码的方式)
- dir /usr/local/redis-sentinel/master-6381/data --数据保存目录
7.修改/usr/local/redis-sentinel/slave-6382/目录下 redis.conf 配置文件 (从服务器)
- bind 192.168.1.62 --修改成自己的IP地址
- port 6382 --主服务器的端口号
- daemonize yes --后台启动
- pidfile /var/run/redis-6382.pid -- redis 后台启动的时候,会在/var/run/默认生成一个pid文件
- protected-mode no--保护模式关闭,否则启动哨兵的时候,无法正常运行(还可以设置密码的方式)
- dir /usr/local/redis-sentinel/slave-6382/data --数据保存目录
- slaveof 192.168.1.62 6381 --主服务器的IP 主服务器端口号
8.其他从服务器类似步骤7
9.此时启动会包错误,因为需要在相应的位置创建data文件夹
10.步骤9执行完后,就可以正常运行了
/usr/local/redis/bin/redis-server /usr/local/redis-sentinel/master-6381/redis.conf |
/usr/local/redis/bin/redis-server /usr/local/redis-sentinel/slave-6382/redis.conf |
/usr/local/redis/bin/redis-server /usr/local/redis-sentinel/slave-6383/redis.conf |
/usr/local/redis/bin/redis-server /usr/local/redis-sentinel/slave-6384/redis.conf |
10.启动完成后,连接主服务器客户端,查看主服务器信息 info
/usr/local/redis/bin/redis-cli -h 192.168.1.62 -p 6381 |
11.在主服务器节点上添加一个值,看看是否能同步到从服务器上去
三.在二完成的基础上添加哨兵监控主节点
1.修改/usr/local/redis-sentinel/sentinel-26381目录下的sentinel.conf
- port 26381 -- 指定sentinel端口号
- daemonize yes -- 指定sentinel为后台启动
- protected-mode no --关闭保护模式
- sentinel monitor mymaster [主服务器节点IP] [主服务器节点port] [几个哨兵检测到主节点失联数量] -- 至少有几个哨兵检测到主服务器故障了,才进行故障迁移 ,实例 sentinel monitor mymaster 192.168.1.62 6381 2
- sentinel down-after-milliseconds mymaster 30000--指定Sentinel判定Master断线的时间
- logfile "/usr/local/redis-sentinel/sentinel-26381/sentinel-26381.log"
- dir "/usr/local/redis-sentinel/sentinel-26381/data"
2.修改/usr/local/redis-sentinel/sentinel-26382目录下的sentinel.conf
- port 26382 -- 指定sentinel端口号
- daemonize yes -- 指定sentinel为后台启动
- protected-mode no --关闭保护模式
- sentinel monitor mymaster [主服务器节点IP] [主服务器节点port] [几个哨兵检测到主节点失联数量] -- 至少有几个哨兵检测到主服务器故障了,才进行故障迁移 ,实例 sentinel monitor mymaster 192.168.1.62 6381 2
- sentinel down-after-milliseconds mymaster 30000--指定Sentinel判定Master断线的时间
- logfile "/usr/local/redis-sentinel/sentinel-26382/sentinel-26382.log"
- dir "/usr/local/redis-sentinel/sentinel-26382/data"
3.启动哨兵,并查看哨兵日志
/usr/local/redis/src/redis-sentinel /usr/local/redis-sentinel/sentinel-26381/sentinel.conf |
/usr/local/redis/src/redis-sentinel /usr/local/redis-sentinel/sentinel-26382/sentinel.conf |
tail -f /usr/local/redis-sentinel/sentinel-26381/sentinel-26381.log |
tail -f /usr/local/redis-sentinel/sentinel-26382/sentinel-26382.log |
4.直接把master节点进程kill掉,再次观看哨兵日志
在杀掉主节点进程的时候,没有发生主从切换,并且日志打印如下,解决方法时 在sentinel.conf配置文件中添加 protected-mode no (这个的前提是redis.conf文件的配置也是 protected-mode no )
5.解决4的问题后,重新启动sentinel,杀掉主节点进程和查看sentinel日志
1) 主节点从6381变成6384
2)把节点6384的进程杀掉,主节点变成6382了