Redis的哨兵模式配置
在非自用场景下,单机的redis很明显不够用。当一台服务宕机时,需要及时启用备用服务,这就是哨兵的用处。
按我的理解,哨兵模式主要有两部分组成,主从复制和哨兵节点。
主从复制
主从复制没有什么新鲜的,一个主节点,若干个从节点,从节点与主节点保持数据一致,很好理解。
一台服务器上可以启动多个实例,每个实例使用不同的配置文件启动即可。这时每个实例配置文件中的pidfile需要做修改,防止冲突。
如果是在多台不同的服务器上启动redis则无需修改pidfile。
主节点配置
配置文件就在redis安装路径的根目录下,文件名为redis.conf
。
配置如下:
1 | # 端口,一般是6379 |
最后启动就OK了./src/redis-server ./redis.conf
。
从节点配置
从节点的端口、密码和pidfile配置和主节点一致,需要额外配置的是主节点ip,不然从节点无法找到主节点,就只是一个单独的redis服务罢了。
1 | # 5.0.0版本之前: |
当主节点有密码时,需要额外配置masterauth <主节点密码>
哨兵节点
其实上述主从节点配置好之后,理论上就已经可以容灾了。但是上述模式有一个缺点,就是当主节点宕机时,需要手动切换为从节点读写数据。比较麻烦的同时,也有着时效性不高的问题。
而哨兵节点就是为了解决这个问题而存在的。
哨兵节点本身只存储主从节点的IP等数据,当主节点宕机之后,哨兵节点会计算所有从节点的权值,选出一个新的主节点,并修改主从节点的配置文件。
哨兵节点配置
配置文件也在redis安装路径的根目录下,文件名为sentinel.conf
。
一般要启动多个哨兵实例。
配置如下:
1 | # 哨兵端口,默认为26379 |
然后启动哨兵节点,./src/redis-sentinel ./sentinel.conf
再多整几个配置文件,多起几个实例,就OK了。