使用Redis For Windows部署Redis主从和哨兵集群,实例为一主二从三哨兵。Redis文件夹如下,因为需要启动多个实例,所以需要准备多份redis.conf,将redis.windows.conf拷贝六份,根据主从、哨兵信息命名。
下载地址 https://github.com/microsoftarchive/redis/releases
主库配置为:
port:6379
#需要密码连接
requirepass:test
bind 0.0.0.0
从库1配置为:
port:6380
#配置master
slaveof 127.0.0.1 6379
# 从库优先级
slave-priority 100
requirepass "test"
masterauth "test"
dbfilename dump6380.rdb
bind 0.0.0.0
从库2配置为:
port:6381
#配置master
slaveof 127.0.0.1 6379
# 从库优先级
slave-priority 80
requirepass "test"
masterauth "test"
dbfilename dump6381.rdb
bind 0.0.0.0
主从连接验证, 依次启动上述主从实例后,从库向主库发送slaveof命令创建同步连接。
主从同步验证,在主库写入数据后,同步至从库。
哨兵配置为:
#三个哨兵port依次为26379,26380,26381,其余配置保持一致
port 26379
#配置master信息,2个sentinel选举成功后才有效,哨兵通过主库可以得到从库的IP、Port再进行连接
sentinel monitor master_6379 127.0.0.1 6379 2
#判断主master的挂机时间(毫秒),超时未返回正确信息后标记为sdown状态(主观下线)
sentinel down-after-milliseconds master_6379 5000
#若sentinel在该配置值内未能完成failover操作(即故障时master/slave自动切换),则认为本次failover失败。
sentinel failover-timeout master_6379 18000
以哨兵模式启动
哨兵集群信息
主从切换
注销6379主库实例,哨兵先判断主库实例已经下线,然后再进行主库选举。在两个从库网络均良好时,由于我们给两个从库配置的优先级不一致,6380实例优于6381,所以将6380选择为了新主库。6379和6381对应的Redis.conf文件也被更新为了新的主从库配置信息,在6379实例重启后,向新主库6380实例发起同步请求。哨兵实例conf文件中主库配置也被自动替换为了新的主库信息。