文章目录
如何实现redis的高可用
1、实现前提
需要配置好redis的主从复制,并且准备好三台虚拟机用于模拟。
此处与redis主从复制准备的虚拟机相同。
2、redis实现高可用的原理
redis提供了Redis Sentinel(哨兵)架构来解决无法自动更改主节点的问题。
(1)什么是主观下线
每隔一秒,每个哨兵节点会向主节点、从节点和其余哨兵节点操作一条ping的命令来做心跳检测,当这些节点超过一定时间没有进行有效的回复时,哨兵节点会对该节点作失败判定,这个行为叫主观下线,由该哨兵节点独自判定。
(2)什么是客观下线
当哨兵节点主观下线的节点是主节点时,该哨兵节点会向其他的哨兵节点询问对主节点的判定结果,若失败的判定结果超过某个设定的个数,意味着多数哨兵节点都同意这个主节点下线,于是该哨兵节点认为主节点确实应该下线,此时该哨兵节点会作出客观下线的决定。
(3)领导者哨兵(Sentinel)节点选举规则
若某哨兵节点最先完成客观下线,那它会向其他哨兵节点发送命令,请求成为领导者哨兵,收到命令的其他哨兵节点如果没有同意过其他哨兵节点的请求,那么就会同意该哨兵节点的请求,否则拒绝,当该哨兵节点发现自己的票数大于等于某个设定值时,它将成为领导者哨兵。
(4)新主节点选举规则
领导者哨兵在节点列表中选取一个节点作为新的主节点,这个节点要与上个主节点复制的相似度最高,领导者哨兵会命令其余从节点成为新的主节点的从节点,哨兵节点集合会将原来的主节点更新为从节点,并在其恢复后命令它成为新的主节点的从节点。
3、在主节点端操作
(1)将安装目录中的sentinel文件复制到/etc/redis下
命令 | 功能 |
---|---|
cd redis安装目录 | 进到该目录中方便操作 |
cp sentinel.conf /etc/redis | 将该文件复制到/etc/redis下 |
cd /etc/redis | 进到该目录中方便操作 |
(2)修改配置
命令 | 功能 |
---|---|
vim sentinel.conf | 修改该文件 |
17 protected-mode no |关闭保护模式
98 sentinel monitor master1 172.25.2.1 6379 2 |意为让哨兵节点监控名为master1的主服务器,该主服务器ip为172.25.2.1,端口为6379,当超过2个哨兵节点给出判定失败时,该主服务器可被判定为失败下线。
(3)开启sentinel服务
命令 | 功能 |
---|---|
redis-sentinel /etc/redis/sentinel.conf | 开启服务,可看到主服务器和从服务器信息 |
4、在从节点端操作
(1)配置从节点端配置文件
将主节点端配置好的sentinel.conf文件拷贝到从节点端即可。
(2)开启sentinel服务
redis-sentinel /etc/redis/sentinel.conf |开启服务,可看到主服务器和从服务器信息
5、配置完成后测试
1、在主节点端配置
命令 | 功能 |
---|---|
redis-cli | 进入redis |
info | 查看信息 |
SHUTDOWN | 停掉redis |
2、在任意服务端查看
命令 | 功能 |
---|---|
redis-sentinel /etc/redis/sentinel.conf | 查看主服务器和从服务器信息,对比先前信息,发现此时主服务器信息改变,则成功测试高可用redis |
在服务端的sentinel服务信息中可以查看到主节点down掉之后发生的改变,如领导者哨兵投票过程及结果、主节点投票过程及结果等等。