Redis主从+sentinel(哨兵)+keepalived

栏目: 服务器 · 发布时间: 5年前

内容简介:实现的原理

环境介绍:

Redis主从+sentinel(哨兵)+keepalived

实现的原理

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 主从切换日志提示此错误

Redis主从+sentinel(哨兵)+keepalived

解决办法:

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》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Developing Large Web Applications

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》 这本书的介绍吧!

在线进制转换器
在线进制转换器

各进制数互转换器

HTML 编码/解码
HTML 编码/解码

HTML 编码/解码

正则表达式在线测试
正则表达式在线测试

正则表达式在线测试