Windoows 下 Redis Sentinel 的部署
虽然很久之前就了解了 Redis 的哨兵机制,今天第一次尝试在多个服务器上部署多个 Redis 实例,并且设置了哨兵用来进行自动的主从切换。
一、部署 Redis
在 3 台服务器上分别安装了 Redis,Redis on Windows 下载地址:https://github.com/MSOpenTech/redis/releases。
配置文件添加密码:
requirepass <密码>
masterauth <密码>
除了设置本实例的密码外,还需要输入 master 的密码(需要和本实例密码相同),所有实例需要设置相同的密码,以便进行主从切换。
需要注意的是,Redis 从某个版本起,加入了一个protected-mode
的保护模式。启动保护模式的条件是protected-mode
开启,且没有设置bind
,且没有设置密码。我的 Redis 的实例部署在多个公网服务器下,所以加密码是必须的,另外需要注释掉默认的bind 127.0.0.1
,以使用公网 IP。因为设置了密码,所以protected-mode
就无需进行改动,直接使用默认的就可以了。但是在后面哨兵的配置中的保护模式会有一个坑。
在 3 个 Redis 实例中挑选一个作为初始的 master。在另外两个实例的配置文件中,加入slaveof
的配置。
二、配置 Sentinel
创建哨兵的配置文件,内容如下:
port <端口号>
sentinel monitor redis-master <Master IP> <Master端口号> 2
sentinel down-after-milliseconds redis-master 5000
sentinel failover-timeout redis-master 900000
sentinel parallel-syncs redis-master 2
sentinel auth-pass redis-master <密码>
logfile "LogFiles/monkeyrun-sentinel.log"
protected-mode no
具体参数的含义不再赘述,可以 Google。
这里需要加上最后一行protected-mode no
,把哨兵的保护模式关掉。因为哨兵目前不支持设置密码,如果不加这行就会启动保护模式了,外网无法访问,会出现哨兵与哨兵之间互相认为对方不可用的情况。
三、一些命令
因为是在 Windows 下,有些命令可以通过批处理文件方便处理。将如下代码分别保存为.bat 文件,可以直接双击执行。默认安装完会新建一个名叫 Redis 的服务,我不喜欢这个名字,可以先卸载这个默认的 Redis 服务,然后重新安装自己命名的服务。这样的好处是以后可以在一台服务器上安装多个不同用途的 Redis 实例,以便区分。
1、安装 Redis 服务
redis-server --service-install redis-service-monkey-run.conf --service-name redis-service-monkey-run
2、启动 Redis 服务
redis-server --service-start --service-name redis-service-monkey-run
3、停止 Redis 服务
redis-server --service-stop --service-name redis-service-monkey-run
4、卸载 Redis 服务
redis-server --service-stop --service-name redis-service-monkey-run
redis-server --service-uninstall --service-name redis-service-monkey-run
5、安装 Sentinel 服务
redis-server --service-install sentinel-monkey-run.conf --service-name redis-sentinel-service-monkey-run --sentinel
6、启动 Sentinel 服务
redis-server --service-start --service-name redis-sentinel-service-monkey-run
7、停止 Sentinel 服务
redis-server --service-stop --service-name redis-sentinel-service-monkey-run
8、卸载 Sentinel 服务
redis-server --service-stop --service-name redis-sentinel-service-monkey-run
redis-server --service-uninstall --service-name redis-sentinel-service-monkey-run
四、其他
验证了一下哨兵的主从切换,很爽!
睡觉!