Redis高可用
Redis 的 Sentinel 分布式系统:
- 监控(Monitoring): Sentinel 会不断地检查你的主服务器和从服务器是否运作正常。
- 提醒(Notification): 当被监控的某个 Redis 服务器出现问题时, Sentinel 可以通过 API 向管理员或者其他应用程序发送通知。
- 自动故障迁移(Automatic failover): 当一个主服务器不能正常工作时, Sentinel会开始一次自动故障迁移操作, 它会将失效主服务器的其中一个从服务器升级为新的主服务器, 并让失效主服务器的其他从服务器改为复制新的主服务器。
1 . 把redis1的redis源码目录中的sentinel.conf 复制到/etc/redis/
[root@Redis1 redis-5.0.14]# cp sentinel.conf /etc/redis/ [root@Redis1 redis-5.0.14]# cd /etc/redis/ [root@Redis1 redis]# ls 6379.conf sentinel.conf [root@Redis1 redis]#
2.编辑复制的文件(/etc/redis/sentinel.conf)
[root@Redis1 redis]# vim sentinel.conf 84 sentinel monitor mymaster 192.168.2.10 6379 2 ##所有节点指向master节点,2表示万一master节点出问题需要有2票认为确认master下线 113 sentinel down-after-milliseconds mymaster 10000 ##表示30秒连接不上就认为master出了故障的时间,这里因为是测试环境所以由原来的30秒设置为10秒
3. 把编辑好的sentinel.conf文件scp到两个slave节点中位置同样在/etc/redis/sentinel.conf
[root@Redis1 redis]# scp sentinel.conf redis2:/etc/redis/ root@redis2's password: sentinel.conf 100% 9712 1.9MB/s 00:00 [root@Redis1 redis]# scp sentinel.conf redis3:/etc/redis/ root@redis3's password: sentinel.conf 100% 9712 10.0MB/s 00:00 [root@Redis1 redis]#
注意:一定要在启动服务前把文件拷贝过去,不然启动服务后再复制会把主节点多余的主从信息一同拷贝过去。
至此Redis高可用就配置完了。
然后在不论那台主机中执行redis-cli info都可以看到配置的主从信息
[root@Redis1 redis-5.0.14]# redis-cli info ...... # Replication role:slave master_host:192.168.2.30 master_port:6379 master_link_status:up master_last_io_seconds_ago:8 master_sync_in_progress:0 slave_repl_offset:1498 slave_priority:100 slave_read_only:1 connected_slaves:0 master_replid:e5abdc2eea064803ab5c2f9a909fb55908a03027 master_replid2:0000000000000000000000000000000000000000 master_repl_offset:1498 second_repl_offset:-1 repl_backlog_active:1 repl_backlog_size:1048576 repl_backlog_first_byte_offset:211 repl_backlog_histlen:1288
执行 redis-sentinel /etc/redis/sentinel.conf(向网内扫描主从信息,记录到/etc/redis/sentinel.conf文件中)就可以在终端前显示出来高可用的信息。可以试着关闭master节点的redis服务,通过刚才部署的高可用,它会自动选择一个slave节点作为master,再重新启动原来master节点,会发现它变成了slave节点。这就是Redis高可用保证如果master节点出现问题,数据也不会丢失。