概要:
两个都要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