概要:
两个都要masterauth

1.修改主机名,关闭selinux和iptables

sed -i 's@SELINUX=enforcing@SELINUX=disabled@g' /etc/selinux/config
setenforce 0

主从

主:

hostnamectl set-hostname redis-master

hostnamectl set-hostname redis-slave

2.安装keepalived并配置

网卡地址和ip地址,虚拟ip
主机
-

yum install -y keepalived
mv /etc/keepalived/keepalived.conf /etc/keepalived/keepalived.conf_bak
vi /etc/keepalived/keepalived.conf 

global_defs {
    router_id redis2  #hostname
}
vrrp_script chk_redis {
    script "/etc/keepalived/scripts/redis_check.sh 127.0.0.1 6379 你的密码"
    interval 2
    timeout 2
    fall 3
}
vrrp_instance redis {
    state BACKUP
    interface ens192 //这个地址要用网卡的真实名字
    virtual_router_id 166 //这个id不应该和其他的router_id冲突
    priority 100
    advert_int 1
    authentication { #all node must same
    auth_type PASS
    auth_pass 1111
   }
virtual_ipaddress {
    192.168.0.18 //定义虚拟IP
}
track_script {
    chk_redis
}
notify_master "/etc/keepalived/scripts/redis_master.sh 另外一台机器 6379 你的密码"
notify_backup "/etc/keepalived/scripts/redis_backup.sh 另外一台机器 6379 你的密码"
notify_fault "/etc/keepalived/scripts/redis_fault.sh"
notify_stop "/etc/keepalived/scripts/redis_stop.sh"
}

redis_backup.sh

#!/bin/bash
REDISCLI="/usr/local/bin/redis-cli "
LOGFILE="/var/log/keepalived-redis-state.log"
echo "[backup]" >> $LOGFILE
date >> $LOGFILE
echo "Run SLAVEOF cmd ..." >> $LOGFILE
$REDISCLI -a $3 SLAVEOF NO ONE >> $LOGFILE 2>&1
$REDISCLI -a $3 SLAVEOF $1 $2 >> $LOGFILE 2>&1

redis_check.sh

#!/bin/bash
ALIVE=$(/usr/local/bin/redis-cli -h "$1" -p "$2" -a "$3" PING)
LOGFILE="/var/log/keepalived-redis-check.log"
echo "[CHECK]" >> $LOGFILE
date >> $LOGFILE
if [ $ALIVE == "PONG" ]; then :
    echo "Success: redis-cli -h $1 -p $2 -a $3 PING $ALIVE" >> $LOGFILE 2>&1
    exit 0
else
    echo "Failed:redis-cli -h $1 -p $2 -a $3 PING $ALIVE " >> $LOGFILE 2>&1
    exit 1
fi

redis_fault.sh

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

redis_master.sh

#!/bin/bash
REDISCLI="/usr/local/bin/redis-cli"
LOGFILE="/var/log/keepalived-redis-state.log"
echo "[master]" >> $LOGFILE
date >> $LOGFILE
echo "Being master...." >> $LOGFILE 2>&1
echo "Run MASTER cmd ..." >> $LOGFILE 2>&1
$REDISCLI  -a $3 SLAVEOF NO ONE >> $LOGFILE 2>&1

redis_stop.sh

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

给脚本都加上可执行权限:
(这点很重要,最开始由于这不没做,运行后一直报错 “VRRP_Instance(Redis) Now in FAULT state”)
$ chmod +x /etc/keepalived/scripts/*.sh

最后修改:2024 年 12 月 27 日
如果觉得我的文章对你有用,请随意赞赏