Redis哨兵集群搭建
文章目录1 为什么要使用哨兵模式2 哨兵模式的工作原理3 一主二从三哨兵搭建步骤4 测试该哨兵集群是否可用5 Spring Boot连接Redis哨兵集群1 为什么要使用哨兵模式主从模式下,主机会自动将数据同步到从机,为了分载Master的读操作压力,Slave服务器可以为客户端提供只读操作的服务,写服务依然必须由Master来完成,实现读写分离。当主服务器宕机后,需要手动把一台从服务器切换为主服
1 为什么要使用哨兵模式
主从模式下,主机会自动将数据同步到从机,为了分载Master的读操作压力,Slave服务器可以为客户端提供只读操作的服务,写服务依然必须由Master来完成,实现读写分离。当主服务器宕机后,需要手动把一台从服务器切换为主服务器,这就需要人工干预,费事费力,还会造成一段时间内服务不可用。
2 哨兵模式的工作原理
在主从模式下,redis同时提供了哨兵命令redis-sentinel,哨兵是一个独立的进程,作为进程,它会独立运行。其原理是哨兵进程向所有的redis机器发送命令,等待Redis服务器响应,从而监控运行的多个Redis实例。
哨兵可以有多个,一般为了便于决策选举,使用奇数个哨兵。哨兵可以和redis机器部署在一起,也可以部署在其他的机器上。多个哨兵构成一个哨兵集群,哨兵直接也会相互通信,检查哨兵是否正常运行,同时发现master宕机哨兵之间会进行决策选举新的master。
3 一主二从三哨兵搭建步骤
- 将redis文件复制三份到redis-sentinel目录下
mkdir redis-sentinel
cd redis-sentinel/
cp -r /opt/redis-6.2.6/ .
mv redis-6.2.6/ redis-6.2.6-5000/
因为我把redis-6.2.6/redis.conf被我复制到了/usr/local/bin/目录下,并进行了修改,并未使用redis-6.2.6/redis.conf,所以需要替换redis.conf文件
cd redis-6.2.6-5000/
rm -f redis.conf
cp -r /usr/local/bin/redis.conf .
cp -r . ../redis-6.2.6-5001/
cp -r . ../redis-6.2.6-5002/
- 对于主节点(5000)
编辑redis.conf
vi /opt/redis-sentinel/redis-6.2.6-5000/redis.conf
#只需要修改port
port 5000
编辑sentinel.conf
vi /opt/redis-sentinel/redis-6.2.6-5000/sentinel.conf
#修改port
port 26380
#开启守护线程
daemonize yes
#sentinel monitor <master-group-name> <ip> <port> <quorum>
#master-group-name是集群名称 quorum是需要同意主节点不可用的Sentinel的数量
sentinel monitor mymaster ip 5000 2
#主节点密码
#sentinel auth-pass <master-name> <password>
sentinel auth-pass mymaster 主节点密码
- 对于两个从节点(5001,5002)
编辑redis.conf
#修改port(一个为5001,另一个为5002)
port 5001
#主从复制 replicaof <masterip> <masterport>
replicaof 主节点ip 主节点端口号
#主节点密码 masterauth <master-password>
masterauth 主节点密码
编辑sentinel.conf
#修改port(一个为26381,另一个为26382)
port 26381
#开启守护线程
daemonize yes
#sentinel monitor <master-group-name> <ip> <port> <quorum>
sentinel monitor mymaster ip 5000 2
#主节点密码
sentinel auth-pass mymaster 主节点密码
两个从节点的redis.conf只有端口号不相同,三个sentinel.conf也只有端口号不相同,主节点的redis.conf不需要设置replicaof和masterauth,否则复制自身会报错
4 测试该哨兵集群是否可用
- 将master,slave,sentinel全都启动起来
cd /usr/local/bin
master和slave启动方式
./redis-server /opt/redis-sentinel/redis-6.2.6-5000/redis.conf
./redis-server /opt/redis-sentinel/redis-6.2.6-5001/redis.conf
./redis-server /opt/redis-sentinel/redis-6.2.6-5002/redis.conf
sentinel启动方式
./redis-sentinel /opt/redis-sentinel/redis-6.2.6-5000/sentinel.conf
./redis-sentinel /opt/redis-sentinel/redis-6.2.6-5001/sentinel.conf
./redis-sentinel /opt/redis-sentinel/redis-6.2.6-5002/sentinel.conf
- 主从复制,slave只读,master宕机哨兵决策选举新的master均测试成功,由于测试过程不好呈现,故不在文中列出
Redis关闭指定端口
redis-cli -a 该端口节点密码 -p 端口号 shutdown
5 Spring Boot连接Redis哨兵集群
spring:
redis:
password: # 主节点密码
sentinel:
master: mymaster #集群名称
nodes: #只需要配置哨兵 ip:port 列表
- localhost:port1
- localhost:port2
- localhost:port3
更多推荐
所有评论(0)