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节点出现问题,数据也不会丢失。

 


云野 » Redis高可用

发表回复