Redis配置哨兵
Redis sentinel(哨兵)
主从切换技术的方法是:当主服务器宕机后,需要手动把一台从服务器切换为主服务器,这就需要人工干预,费事费力,还会造成一段时间内服务不可用。这不是一种推荐的方式,更多时候,我们优先考虑哨兵模式。
哨兵概论与运行机制
哨兵模式是一种特殊的模式,首先Redis提供了哨兵的命令,哨兵是一个独立的进程,作为进程,它会独立运行。其原理是哨兵通过发送命令,等待Redis服务器响应,从而监控运行的多个Redis实例。
Redis Sentinel的主要功能
Sentinel的主要功能包括主节点存活检测、主从运行情况检测、自动故障转移(failover)、主从切换。Redis的Sentinel最小配置是一主一从。 Redis的Sentinel系统可以用来管理多个Redis服务器,该系统可以执行以下四个任务:
监控
Sentinel会不断的检查主服务器和从服务器是否正常运行。
通知
当被监控的某个Redis服务器出现问题,Sentinel通过API脚本向管理员或者其他的应用程序发送通知。
自动故障转移
当主节点不能正常工作时,Sentinel会开始一次自动的故障转移操作,它会将与失效主节点是主从关系的其中一个从节点升级为新的主节点, 并且将其他的从节点指向新的主节点。
当哨兵监测到master宕机,会自动将slave切换成master,然后通过发布订阅模式通知其他的从服务器,修改配置文件,让它们切换主机
配置提供者
在Redis Sentinel模式下,客户端应用在初始化时连接的是Sentinel节点集合,从中获取主节点的信息。
Redis配置哨兵模式
如图:配置3个哨兵和1主2从的Redis服务器来演示这个过程。
第一步 配置一主两从
如果不会配主从的话可以去查看我之前的文章 主从配置
在原先的从基础上再拷贝一个从
1
2# cp 要拷贝的文件 拷贝完的文件
sudo cp redis1.conf redis2.conf更改从的配置端口
1
2
3
4# 进入文本编辑
sudo gedit /etc/redis/redis2.conf
# 找到 port 更改为 6381 # 有一个从的端口为 6380
port 6381测试运行
1
ps -aux|grep redis
如果出现 默认的主从进程 就强制删除 强制删除不了强制停止
1
2
3# 强制停止
/etc/init.d/redis-server stop
# 执行完要求你输入密码
第二步 配置三哨兵
配置3个哨兵,每个哨兵的配置都是一样的。在Redis安装目录下有一个sentinel.conf文件,copy一份进行修改。如果没有 就自行创建一个文件 (sudo touch xxx
)在里面更改配置
配置哨兵文件如下:
三个哨兵 分别在27000 2700127002 三个端口上
重点更改下面 第二行的的端口号
以及 第十七行的主服务器ip端口地址
1 | # 端口 |
哨兵执行命令
1 | # 开启哨兵 文件名后面添加--sentinel |
第三步 建立连接
用redic-cli 连接服务器后 检查主从状态
1 | # 进入服务器后 执行命令 |
主状态:
从状态:
启动主从服务器与哨兵
这里就不演示代码了 - 最后执行状态
可以自己尝试全部开始后去删除主服务器从服务器的**自动故障转移
**一般都是转移到默认从服务
当**主服务器(旧)**再启动时,已经转移为当前主服务器的从服务器了。
参考文章:秃头哥编程之Redis哨兵