keepalived搭建主备redis高可用

一、环境说明

   1、操作系统内核版本:Centos7

   2、Keepalived软件版本:keepalived-1.3.5

 

二、环境配置

  1、主Keepalived服务器IP地址 192.168.2.104

  2、备Keepalived服务器IP地址  192.168.2.105

  3、Keepalived虚拟IP地址  192.168.2.201

 

三、安装

1)关闭Selinux

       临时关闭:

[root@localhost ~]# getenforce
Enforcing

[root@localhost ~]# setenforce 0
[root@localhost ~]# getenforce
Permissive

     永久关闭:

[root@localhost ~]# vim /etc/sysconfig/selinux
SELINUX=enforcing 改为 SELINUX=disabled
重启服务reboot

 

2)安装redis

wget http://download.redis.io/releases/redis-3.0.0.tar.gz
tar -zxvf redis-3.0.0.tar.gz -C .
cd /opt/redis-3.0.0
make PREFIX=/opt/redis install
cp /opt/redis-3.0.0/redis.conf  /opt/redis/bin
cd /usr/local/redis/bin
./redis-server ./redis.conf

 

3)安装keepalived

 yum  -y install keepalived

 

4)配置

vim /etc/keepalived/keepalived.conf  

#192.168.2.104配置
global_defs {
   router_id Node104
}

vrrp_script check_server {
   script "/opt/redis/redis-check.sh"
   interval 1
   weight -10
   fall 2
   rise 1
}

vrrp_instance VI_1 {
    state BACKUP
    interface bond0
    virtual_router_id 51
    priority 95
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.2.201
    }
    track_script {
        check_server
    }
    notify_master "/opt/redis/redis-to-master.sh"
    notify_backup "/opt/redis/redis-to-slave.sh"
}




#192.168.2.105配置
global_defs {
   router_id Node105
}

vrrp_script check_server {
   script "/opt/redis/redis-check.sh"
   interval 1
   weight -10
   fall 2
   rise 1
}

vrrp_instance VI_1 {
    state BACKUP
    interface bond0
    virtual_router_id 51
    priority 100
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.2.201
    }
    track_script {
        check_server
    }
    notify_master "/opt/redis/redis-to-master.sh"
    notify_backup "/opt/redis/redis-to-slave.sh"
}

备注:同一局域网中非同个keepalived集群,不能使用相同的 virtual_router_id 值

 

 

 vim /opt/redis/redis-check.sh

###### 192.168.2.104  192.168.2.105 配置
#!/bin/bash
# redis-check.sh

MANUAL_DOWN_FILE="/opt/redis/down"
if [ -e $MANUAL_DOWN_FILE ];then
    echo "down file exist,exit 1"
    exit 1
fi

REDIS_COUNT=`ps -C redis-server --no-headers | wc -l`
if [ "$REDIS_COUNT" -eq "0" ];then
    echo "redis-server is down"
    exit 1
fi

exit 0

 

vim /opt/redis/redis-to-master.sh

# 192.168.2.104  192.168.2.105 共同配置
#!/bin/sh
# redis-to-master.sh

REDIS_HOME="/opt/redis"
REDIS_LOG_HOME="/data2/redis-logs"
PASSWD="gzdata"

${REDIS_HOME}/bin/redis-cli -a ${PASSWD} slaveof no one

perl -pi -e 's/^slaveof.*/slaveof no one/' ${REDIS_HOME}/bin/redis.conf

mkdir -p ${REDIS_LOG_HOME}
echo $(date "+%Y-%m-%d %H:%M:%S") "the redis is to be the master." >> ${REDIS_LOG_HOME}/redis-keepalived.log

 

vim /opt/redis/redis-to-slave.sh

#  192.168.2.104 配置 (192.168.2.105配置只需更改下面IP即可)
#!/bin/sh
# redis-to-slave.sh

REDIS_HOME="/opt/redis"
REDIS_LOG_HOME="/data2/redis-logs"
PASSWD="gzdata"
PEER_HOST="192.168.2.104"
PEER_PORT=6379

${REDIS_HOME}/bin/redis-cli -a ${PASSWD} slaveof $PEER_HOST $PEER_PORT

perl -pi -e "s/^slaveof.*/slaveof $PEER_HOST $PEER_PORT/" ${REDIS_HOME}/bin/redis.conf

mkdir -p ${REDIS_LOG_HOME}
echo $(date "+%Y-%m-%d %H:%M:%S") "the redis is to be the slave." >> ${REDIS_LOG_HOME}/redis-keepalived.log

 

5)启动

        启动redis:    redis-server  redis.conf

        设置开机自启: 

# vim /usr/lib/systemd/system/redis.service
[Unit]
Description=redis service
After=network.target

[Service]
Type=forking
PIDFile=/var/run/redis_6379.pid
ExecStart=/opt/redis/bin/redis-server /opt/redis/bin/redis.conf
ExecReload=/opt/redis/bin/redis-cli -a gzdata shutdown; /opt/redis/bin/redis-server /opt/redis/bin/redis.conf
ExecStop=/opt/redis/bin/redis-cli -a gzdata shutdown;
KillMode=process
PrivateTmp=true


[Install]
WantedBy=multi-user.target


# 设置权限
chmod 0644 /usr/lib/systemd/system/redis.service

# redis启动
systemctl start redis

# redis停止
systemctl stop redis

# redis开机自启
systemctl enable redis

# 查看服务
systemctl   list-units --type=service | grep redis

# 查看是否开机自启
systemctl list-unit-files | grep redis

        启动keepalived:  systemctl  start  keepalived

        设置开机自启:     systemctl enable keepalived

 

 

6)原理

       只要存在 /opt/redis/down 这个文件 或者 redis 服务宕机, 就会自动切换VIP至备机,同时切换redis主备模式。

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值