内容简介:实现的原理
环境介绍:
实现的原理
在 master和backup服务器分别安装哨兵和keepalived,master的优先级为100,backup的优先级为99,在salve服务器上配置vrrp_script检查脚本规则,检查slave当前的角色状态,一旦slave的 redis 角色状态为master,就把slave的优先级加2变为101,使其获得vip的权限;
当 master的redis服务挂掉后,哨兵会将slave提升为新的master,slave检查角色状态为master时将优先级加2获得vip,当原来master的redis服务起来后哨兵将其作为slave加入到主从复制
当变为 master的slave节点上redis服务挂掉后,哨兵会将redis的master设置为原来的master节点,vrrp_script检查自己的redis不是master时,将优先级减2变为99,原来的master优先级比slave优先级高,原来的master获得vip权限
以下操作主从服务器步骤一样,这里只安装一次
一、安装redis和哨兵服务
1、下载redis服务软件包到服务器,解压后并编译安装(主从步骤一样,这里只安装一次)
[root@centos01 /]# tar xzvf redis-3.2.9.tar.gz [root@centos01 /]# cd redis-3.2.9/ [root@centos01 redis-3.2.9]# make && make install [root@centos01 redis-3.2.9]# ./utils/install_server.sh Welcome to the redis service installer ##一路回车 Installation successful!
2、 修改 redis配置文件,修改为后台运行、监听所有地址(其他参数按需修改),重启redis服务
[root@centos01 redis-3.2.9]# vim /etc/redis/6379.conf bind 0.0.0.0 daemonize yes [root@centos01 redis-3.2.9]# /etc/init.d/redis_6379 restart
3、复制哨兵的配置文件和启动文件到redis安装目录
[root@centos01 redis-3.2.9]# cp sentinel.conf /etc/redis/ [root@centos01 redis-3.2.9]# cp src/redis-sentinel /etc/redis/
二、设置 redis主从复制,并配置哨兵监控
1、登录slave-redis服务器,将master设置为192.168.2.225
[root@slave /]# redis-cli 127.0.0.1:6379> SLAVEOF 192.168.2.225 6379 ##设置master为2.225 127.0.0.1:6379> INFO Replication
3、 修改 master和slave服务器的sentinel.conf配置文件(master和slave配置一致)
##修改master的哨兵文件 [root@master /]# cd /etc/redis/ [root@master /]# vim /etc/redis/sentinel.conf port 26379 dir "/tmp" sentinel monitor mymaster 192.168.2.225 6379 1 #(指定监控的master地址和端口号,1表示多个sentinel同意才进行主从切换) sentinel down-after-milliseconds mymaster 4000 #(超过多少毫秒连接不到master认定为master死掉) sentinel failover-timeout mymaster 18000 #(当主从切换多久后认为主从切换失败) daemonize yes #(后台运行) logfile "/var/log/redis_sentinel.log" #(日志文件保存路径) [root@master redis]# ./redis-sentinel sentinel.conf #启动哨兵服务
三、 配置 keepalived实现高可用
1、 使用 yum方式安装keepalived软件包(master和slave都安装)
[root@master redis]# yum install -y keepalived [root@master redis]# ./redis-sentinel sentinel.conf #启动哨兵服务
2、 修改 keepalived配置文件
Master配置文件内容 ! Configuration File for keepalived global_defs { router_id redis-225 ##设备名称 } vrrp_instance VI_redis { state MASTER ##当前设备为master interface eth0 ##vip绑定的网卡 virtual_router_id 79 ##备份组id,同一备份组要一致 priority 100 ##优先级,优先级高的成为master advert_int 3 ##每多少秒进行一次健康检查 authentication { auth_type PASS auth_pass redis } virtual_ipaddress { 192.168.2.253 dev eth0 label eth0:1 ##vip地址并设置一个网卡别名 } }
BACKUP配置文件内容
! Configuration File for keepalived global_defs { router_id redis-224 } vrrp_script chkmaster { script "/etc/keepalived/scripts/chkmaster.sh" #检查当前redis是否为master interval 3 #每3秒检查一次 weight 2 #当本机为master检测结果返回1,将优先级加2 } vrrp_instance VI_redis { state BACKUP #本机的状态信息 interface eth0 #vip绑定的网卡 virtual_router_id 79 ##备份组id,同一备份组要一致 priority 99 ##优先级,优先级高的成为master advert_int 3 ##每多少秒进行一次健康检查 authentication { auth_type PASS auth_pass redis } virtual_ipaddress { 192.168.2.253 dev eth0 label eth0:1 } track_script { ##调用状态检查 chkmaster } }
状态检查脚本内容:
#!/bin/bash STATUS=`/usr/local/bin/redis-cli info | grep role:master | wc -l` echo $STATUS if [ "$STATUS" -eq 0 ];then exit 1 else exit 0 fi
验证结果:
1. 关闭 master 的 redis 服务程序,查看 vip 和 redis 主服务器切换到 slave
2. 开启 master 的 redis 服务程序, redis 服务以 slave 身份加入到 slave 服务器中
3. 关闭 slave 服务器的 redis 服务,查看 vip 和 redis 主服务器切换到 master
4. 开启 slave 的 redis 服务程序, redis 服务以 slave 身份加入到 master 服务器中
遇到的一个主从不切换的坑
停掉 master 主从切换日志提示此错误
解决办法:
1)如果redis实例没有配置
protected-mode yes
bind 192.168.98.136
则在 sentinel 配置文件加上
protected-mode no
即可
2)如果redis实例有配置
protected-mode yes
bind 192.168.98.136
则在 sentinel 配置文件加上
protected-mode yes
bind 192.168.98.136
以上所述就是小编给大家介绍的《Redis主从+sentinel(哨兵)+keepalived》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!
猜你喜欢:- 搭建Redis主从+哨兵模式
- redis的主从复制,哨兵值守
- Redis集群主从复制及哨兵模式实现
- Redis全方位讲解--主从复制和哨兵模式
- 《吊打面试官》系列-Redis哨兵、持久化、主从、手撕LRU
- Redis 哨兵节点之间相互自动发现机制(自动重写哨兵节点的配置文件)
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Developing Large Web Applications
Kyle Loudon / Yahoo Press / 2010-3-15 / USD 34.99
As web applications grow, so do the challenges. These applications need to live up to demanding performance requirements, and be reliable around the clock every day of the year. And they need to withs......一起来看看 《Developing Large Web Applications》 这本书的介绍吧!