哨兵模式的redis部署
redis的集群模式有三种,主从模式、哨兵模式和cluster集群,本例主要是说明下哨兵模式的部署
一、说明
哨兵模式是基于主从配置,先配置一主多从的环境,然后由哨兵来监控各个节点的运行情况,如果master节点宕机之后会自主在剩下存活的节点中选取一个作为master节点,宕机的节点修复之后启动,会重新作为从节点加入到主从环境中,这过程中每个节点的配置文件(redis.conf)中关于主从配置的参数会自行进行修改。
二、Redis 主从配置
1、修改master配置,上面服务都是以默认的参数进行配置。
vim /etc/redis/6379.conf
添加如下内容:# 修改以下内容开启远程访问 bind 0.0.0.0 # 添加一个密码 requirepass "123"
2、修改两台slave服务器的配置。
-
vim /etc/redis/6379.conf
添加如下内容:# 修改以下内容开启远程访问 bind 0.0.0.0 # 添加一个密码 requirepass 123 # 192.168.1.166为主节点ip,6379为端口 slaveof 192.168.1.166 6379 masterauth 123
[NOTE]
较新的版本中,slaveof
已经更改为replicaof
,需要注意,另外如果配置了密码,在master节点上也需要先配置好masterauth
这个选项,为了在自主切换之后原master节点作为从节点之后能同步到新主节点上的数据。
3、检查主从状态
redis-cli -h 127.0.0.1 -p 6379 -a "password" info Replication
三、Redis sentinel 配置
-
复制模版配置文件
cp /u01/install/redis-5.0.5/sentinel.conf /etc/redis/
-
修改配置文件
vim /etc/redis/sentinel.conf
添加如下内容:# sentinel monitor [master-group-name] [ip] [port] [quorum] sentinel monitor mymaster 192.168.1.166 6379 2 # 主服务器 redis密码 sentinel auth-pass mymaster 123 # 后台运行 daemonize yes # log文件 logfile "/var/log/sentinel.log"
[NOTE]
sentinel monitor mymaster 192.168.1.166 6379 2
该行的意思是:监控的master的名字叫做mymaster (可以自定义),地址为192.168.1.166:6379,行尾最后的一个2代表在sentinel集群中,多少个sentinel认为master死了,才能真正认为该master不可用了。 -
启动哨兵模式
需要先启动redis主服务,即service redis_6379 start
然手启动哨兵模式,redis-server sentinel.conf --sentinel
四、配置哨兵模式开机自动启动
-
这里主要是以配置systemctl系统服务的方式来配置开机自启,另哨兵模式的启动要求先启动主服务,可以将主服务考虑一并做成systemctl系统服务。
-
编写redis.service文件:
vim /usr/lib/systemd/system/redis.service
[Unit] Description=The redis_6379 Process Manager After=syslog.target network.target [Service] Type=forking ExecStart=/usr/local/bin/redis-server /etc/redis/6379.conf ExecReload=/bin/kill -USR2 $MAINPID ExecStop=/bin/kill -SIGINT $MAINPID [Install] WantedBy=multi-user.target
[NOTE]
若配置了密码,ExecStop的部分可以改成/usr/local/bin/redis-cli -p 6379 -a "password" shutdown
-
设置redis主服务开机启动
systemctl enable redis
-
编写redis-sentinel.service文件:
vim /usr/lib/systemd/system/redis-sentinel.service
[Unit] Description=The redis-sentinel Process Manager After=syslog.target network.target [Service] Type=forking ExecStart=/usr/local/bin/redis-server /etc/redis/sentinel.conf --sentinel ExecReload=/bin/kill -USR2 $MAINPID ExecStop=/bin/kill -SIGINT $MAINPID [Install] WantedBy=multi-user.target
-
设置哨兵模式开机启动
systemctl enable redis-sentinel