Redis主从复制-哨兵模式(Sentinel)
反客为主的自动版,能够后台监控Master是否故障,如果故障了,根据投票数自动将Slave转换为 Master。
哨兵模式是一种特殊的模式,首先Redis提供了哨兵的命令,哨兵是一个独立的进程,作为进程,它会独 立运行。其原理是哨兵通过发送命令,等待Redis服务器响应,从而监控运行的多个Redis实例。
哨兵模式的使用
-
将服务器调整为一主多从(6379带6380、6381)。
-
在/usr/local/myredis文件夹下创建sentinel.conf文件(名字一定不能错)。
-
配置哨兵,sentinel.conf添加内容
# sentinel monitor <master-name> <ip> <port> <count>w sentinel monitor myredis 127.0.0.1 6379 1
其中:myredis 为监控对象起的服务器名称(随意),1代表至少有1个哨兵投票同意迁移
如果Master存在密码,需要配置sentinel auth-pass 服务器名 密码
sentinel auth-pass myredis 123456 daemonize yes
-
启动哨兵,在/usr/local/bin/文件夹下执行./redis-sentinel /usr/local/myredis/sentinel.conf命 令。
-
模拟Master宕机,哨兵会切换Master
- 通过kill命令关闭Master(6379)
- 等待一段时间,哨兵窗口就会输出信息
根据窗口信息可知,Master由6379转换为6380,进入6380客户端执行info replication
-
重新启动6379服务器后,自动转换为Slave。
复制延迟
由于所有的写操作都是先在Master上操作,然后同步更新到Slave上,所以从Master同步到Slave机器有 一定的延迟,Slave机器数量的增加,会使延迟问题会更加严重。