Windoows下Redis Sentinel的部署

虽然很久之前就了解了Redis的哨兵机制,今天第一次尝试在多个服务器上部署多个Redis实例,并且设置了哨兵用来进行自动的主从切换。

一、部署Redis

在3台服务器上分别安装了Redis,Redis on Windows下载地址:https://github.com/MSOpenTech/redis/releases

配置文件添加密码:

1
2
requirepass <密码>
masterauth <密码>

除了设置本实例的密码外,还需要输入master的密码(需要和本实例密码相同),所有实例需要设置相同的密码,以便进行主从切换。

需要注意的是,Redis从某个版本起,加入了一个protected-mode的保护模式。启动保护模式的条件是protected-mode开启,且没有设置bind,且没有设置密码。我的Redis的实例部署在多个公网服务器下,所以加密码是必须的,另外需要注释掉默认的bind 127.0.0.1,以使用公网IP。因为设置了密码,所以protected-mode就无需进行改动,直接使用默认的就可以了。但是在后面哨兵的配置中的保护模式会有一个坑。

在3个Redis实例中挑选一个作为初始的master。在另外两个实例的配置文件中,加入slaveof的配置。

二、配置Sentinel

创建哨兵的配置文件,内容如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
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服务

1
redis-server --service-install redis-service-monkey-run.conf --service-name redis-service-monkey-run

2、启动Redis服务

1
redis-server --service-start --service-name redis-service-monkey-run

3、停止Redis服务

1
redis-server --service-stop --service-name redis-service-monkey-run

4、卸载Redis服务

1
2
redis-server --service-stop --service-name redis-service-monkey-run
redis-server --service-uninstall --service-name redis-service-monkey-run

5、安装Sentinel服务

1
redis-server --service-install sentinel-monkey-run.conf --service-name redis-sentinel-service-monkey-run --sentinel

6、启动Sentinel服务

1
redis-server --service-start --service-name redis-sentinel-service-monkey-run

7、停止Sentinel服务

1
redis-server --service-stop --service-name redis-sentinel-service-monkey-run

8、卸载Sentinel服务

1
2
redis-server --service-stop --service-name redis-sentinel-service-monkey-run
redis-server --service-uninstall --service-name redis-sentinel-service-monkey-run

四、其他

验证了一下哨兵的主从切换,很爽!

睡觉!

2016年10月23日凌晨于老家