Redis主从+sentinel(哨兵)+keepalived

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

内容简介:实现的原理

环境介绍:

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

查看所有标签

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

算法数论

算法数论

裴定一、祝跃飞 / 科学出版社 / 2002年09月 / 19.00

本书论述了算法数论的基本内容,其中包括:连分数、代数数域、椭圆曲线、素性检验、大整数因子分解算法、椭圆曲线上的离散对数、超椭圆曲线。本书的特点是内容涉及面广,在有限的篇幅内,包含了必要的预备知识和数学证明,尽可能形成一个完整的体系。并且本书的部分内容曾多次在中国科学院研究生院信息安全国家重点实验室和广州大学作为硕士研究生教材使用。 本书可作为信息安全、数论等专业的研究生教材及相关专业的研究人......一起来看看 《算法数论》 这本书的介绍吧!

URL 编码/解码
URL 编码/解码

URL 编码/解码

XML、JSON 在线转换
XML、JSON 在线转换

在线XML、JSON转换工具

UNIX 时间戳转换
UNIX 时间戳转换

UNIX 时间戳转换