首页 最新文章网站服务器运维正文

redis高可用负载安装配置指南

硬件:至少两台linux

软件:redis+keeplived

步骤:

1、安装redis(主从)

2、安装keeplived(主从)

yum install -y keepalived   //yum安装软件
systemctl start keepalived   //启动 keepalived
systemctl enable keepalived  //加入开机启动 keepalived
systemctl restart keepalived  //重新启动 keepalived
systemctl status keepalived   //查看 keepalived 状态

3、配置redis

4、配置keeplived

keeplived.conf(主从机器的配置需要调换ip地址即可)

#全局配置
global_defs {
   #负载均衡标识,局域网内唯一
   router_id redis_SLB
   #运行脚本的用户
   script_user redis
   enable_script_security
}
#周期性执行的脚本,脚本的退出状态码会被调用它的所有的VRRP Instance记录
vrrp_script chk_redis 
{ 
     #要执行的脚本的路径
     script "/home/script/redis_check.sh passwd 111.111.111.111 6392"
     #脚本执行的间隔,单位是秒
     interval 5
     #在多少秒后,脚本被认为执行失败
     timeout 3
     #执行失败多少次才认为失败
     fall 3
     #1. 如果脚本执行成功(退出状态码为0),weight大于0,则priority增加。
     #2. 如果脚本执行失败(退出状态码为非0),weight小于0,则priority减少。
     #3. 其他情况下,priority不变
     weight -20
}
#同步服务绑定的VRRP实例
vrrp_instance redis {
    #指定该keepalived节点的初始状态
    state BACKUP
    #vrrp实例绑定的接口
    interface eth0  
    #指定VRRP实例ID
    virtual_router_id 100 
    #指定优先级,优先级高的将成为MASTER
    priority  90
    #Nopreempt # no seize,must add
    advert_int 1
    authentication {   #all node must same
    #指定认证方式。PASS简单密码认证
    auth_type PASS
    auth_pass passwd
    }
    #指定源IP地址
    unicast_src_ip 111.111.111.111
    #邻居IP
    unicast_peer {
        111.111.111.112
    }    
    #虚拟ip
    virtual_ipaddress {  
        111.111.111.113
    }
    #循环执行脚本
    track_script { 
         chk_redis 
    } 
     
     #当切换到master时执行
     notify_master "/home/script/redis_master.sh 111.111.111.111  111.111.111.112 6392 passwd"
     #当切换到back时执行
     notify_backup "/home/script/redis_backup.sh 111.111.111.111  111.111.111.112 6392 passwd"
     #发生故障时执行
     notify_fault /home/script/redis_fault.sh 
     #服务终止时执行
     notify_stop /home/script/redis_stop.sh 
}

5、制作脚本

redis_backup.sh

#!/bin/sh
REDISCLI="/soft/redis/bin/redis-cli -a $4 -h $1 -p $3" 
LOGFILE="/log/keepalived/keepalived-redis-state.log" 
echo "[backup]" >> $LOGFILE 
date >> $LOGFILE 
echo "Run SLAVEOF cmd ..." >> $LOGFILE 
$REDISCLI SLAVEOF $2 $3 >> $LOGFILE 2>&1 
# echo "Being slave...." >> $LOGFILE 2>&1 
sleep 15 
#delay 15 s wait data SYNc exchange role

redis_check.sh

#!/bin/sh
ALIVE=`/soft/redis/bin/redis-cli -a $1 -h $2 -p $3 PING`
LOGFILE="/log/keepalived/keepalived-redis-check.log"
echo "[CHECK]" >> $LOGFILE
date >> $LOGFILE
if [[ $ALIVE == "PONG"  ]]; then :
 echo "SUCCESS:reidis-cli -h $2 -p $3 PING $ALIVE" >> $LOGFILE 2>&1
 exit 0
else
 echo "FAILED:redis-cli -h $2 -p $3 PING $ALIVE" >> $LOGFILE 2>&1
 exit 1
fi

redis_fault.sh

#!/bin/sh
LOGFILE=/log/keepalived/keepalived-redis-state.log 
echo "[fault]" >> $LOGFILE
date >> $LOGFILE

redis_master.sh

#!/bin/sh
REDISCLI="/soft/redis/bin/redis-cli -a $4 -h $1 -p $3" 
LOGFILE="/log/keepalived/keepalived-redis-state.log" 
echo "[master]" >> $LOGFILE 
date >> $LOGFILE 
echo "Being master...." >> $LOGFILE 2>&1  
echo "Run MASTER cmd ..." >> $LOGFILE 2>&1
$REDISCLI SLAVEOF $2 $3 >> $LOGFILE  
sleep 10 
#delay 10 s wait data async cancel sync
echo "Run SLAVEOF NO ONE cmd ..." >> $LOGFILE
$REDISCLI SLAVEOF NO ONE >> $LOGFILE 2>&1

redis_stop.sh

#!/bin/sh
LOGFILE=/log/keepalived/keepalived-redis-state.log 
echo "[stop]" >> $LOGFILE 
date >> $LOGFILE

 脚本赋权:

chmod 755 ./*.sh

6、启动redis和keeplived服务,通过虚拟ip调用redis:

111.111.111.113

左手Excel右手VBA此处内容已经被作者隐藏,请输入验证码查看内容
验证码:
请关注本站微信公众号,回复“验证码”,获取验证码。在微信里搜索“左手Excel右手VBA”或者“URItker”或者微信扫描右侧二维码都可以关注本站微信公众号。

#转载请注明出处!

评论

精彩评论
  • 2021-12-03 02:46:24

    果断MARK!!!!!

觉得有用就打赏吧
关注本站公众号,享受更多服务!
联系方式
QQ:########
地址:中国·辽宁
Email:2727987445#qq.com
Copyright ©2015-2021.Powered by 云水客 | 网站地图 | 辽ICP备14000512号-5