在Windows上搭建redis sentinel(哨兵机制)部署
Windows配置redis哨兵
redis主从模式必有单点问题,所以redis的哨兵机制就是来弥补这一问题,接下来我们在Windows环境下配置一下redis的哨兵。
1. 下载Windows版redis地址:https://github.com/MicrosoftArchive/redis/releases
2.解压到目录,6379 master, 6380 6381slave
3.redis主从配置
3.1 master文件配置redis.windows.conf
port 6379
3.2 6380 slave文件配置redis.windows.conf
port6380
slaveof 127.0.0.1 6379
3.3 6381 slave文件配置redis.windows.conf
port6381
slaveof 127.0.0.1 6379
4.redis哨兵配置
每一个redis目录中都创建一个文sentinel.conf文件
4.1 master 6379的sentinel.conf文件配置如下
port 26379 // 当前Sentinel服务运行的端口
#Sentinel去监视一个名为mymaster的主redis实例,这个主实例的IP地址为本机地址127.0.0.1,端口号为6379,而将这个主实例判断为失效至少需要2个 Sentinel进程的同意,只要同意Sentinel的数量不达标,自动failover就不会执行
sentinel monitor mymaster 127.0.0.1 6379 2
#指定了Sentinel认为Redis实例已经失效所需的毫秒数。当 实例超过该时间没有返回PING,或者直接返回错误,那么Sentinel将这个实例标记为主观下线。只有一个 Sentinel进程将实例标记为主观下线并不一定会引起实例的自动故障迁移:只有在足够数量的Sentinel都将一个实例标记为主观下线之后,实例才会被标记为客观下线,这时自动故障迁移才会执行
sentinel down-after-milliseconds mymaster 5000
#指定了在执行故障转移时,最多可以有多少个从Redis实例在同步新的主实例,在从Redis实例较多的情况下这个数字越小,同步的时间越长,完成故障转移所需的时间就越长
sentinel parallel-syncs mymaster 1
#如果在该时间(ms)内未能完成failover操作,则认为该failover失败
sentinel failover-timeout mymaster 15000
#指定了在执行故障转移时,最多可以有多少个从Redis实例在同步新的主实例,在从Redis实例较多的情况下这个数字越小,同步的时间越长,完成故障转移所需的时间就越长
sentinel config-epoch master 12
#如果在该时间(ms)内未能完成failover操作,则认为该failover失败
sentinel leader-epoch master 13
4.2 slave 6380中的sentinel.conf文件配置
port 26479 // 当前Sentinel服务运行的端口
sentinel monitor mymaster 127.0.0.1 6379 2
sentinel down-after-milliseconds mymaster 5000
sentinel parallel-syncs mymaster 1
sentinel failover-timeout mymaster 15000
4.3 slave 6381中的sentinel.conf文件配置
port 26579 // 当前Sentinel服务运行的端口
sentinel monitor mymaster 127.0.0.1 6379 2
sentinel down-after-milliseconds mymaster 5000
sentinel parallel-syncs mymaster 1
sentinelfailover-timeout mymaster 15000
5.启动redis服务
分别启动master,slave1,slave2
启动命令分别如下:
redis-server.exeredis.conf
6. 启动哨兵服务
redis-server.exesentinel.conf --sentinel
7. 测试redis服务
8.查看sentinel的状态