配置了兩臺redis主從failover
阿新 • • 發佈:2018-12-25
使用keepalived+lvs配置了兩臺redis,
切換本機redis為主機指令碼
切換本機為從 指令碼
用作主從failover,
192.168.56.101:6380工作機器1 ;部署redis1 keepalived 1
192.168.56.102:6380工作機器2;部署redis1 keepalived 1
192.168.56.103對外開放的訪問VIP
效果:兩臺機器中有任何一臺keepalived掛掉後,另外一臺keepalived會爭搶VIP,同時執行切換指令碼,保證了VIP服務的可用性
客戶端只要連線VIP就可以透明使用redis.
缺點:如果只是redis掛掉,keepalived沒掛掉,則切換不成功
-----------------------------------keepalived配置-----------------------------------------
檔案/etc/keepalived/keepalived.conf
vrrp_script chk_redis { script "/home/proxy/keep2machine2redis/scripts/redis_check.sh" 2 interval 2 } vrrp_instance VI_1 { state SLAVE interface eth3 virtual_router_id 51 priority 150 nopreempt authentication { auth_type PASS auth_pass redis track_script { chk_redis } virtual_ipaddress { 192.168.56.103 } notify_master /home/proxy/keep2machine2redis/scripts/redis_master.sh notify_backup /home/proxy/keep2machine2redis/scripts/redis_backup.sh notify_fault /home/proxy/keep2machine2redis/scripts/redis_fault.sh notify_stop /home/proxy/keep2machine2redis/scripts/redis_stop.sh }
redis狀態與主從切換指令碼
/home/proxy/keep2machine2redis/scripts
檢測存活指令碼
#!/bin/bash echo "going PING 6380" >>/home/proxy/keep2machine2redis/log.txt ALIVE=`/home/cache/redis6380/src/redis-cli -p 6380 PING` echo "6380" $ALIVE >>/home/proxy/keep2machine2redis/log.txt if [ "$ALIVE" == "PONG" ]; then echo $ALIVE exit 0 else echo $ALIVE exit 1 fi
切換本機redis為主機指令碼
#!/bin/bash
REDISCLI="/home/cache/redis6380/src/redis-cli -p 6380"
LOGFILE="/home/proxy/keep2machine2redis/log.txt"
echo "[master]" >> $LOGFILE
date >> $LOGFILE
echo "Being master...." >> $LOGFILE 2>&1
echo "Run SLAVEOF cmd ..." >> $LOGFILE
$REDISCLI SLAVEOF 192.168.56.102 6380 >> $LOGFILE 2>&1
sleep 10 #延遲10秒以後待資料同步完成後再取消同步狀態
echo "Run SLAVEOF NO ONE cmd ..." >> $LOGFILE
$REDISCLI SLAVEOF NO ONE >> $LOGFILE 2>&1
切換本機為從 指令碼
#!/bin/bash
REDISCLI="/home/cache/redis6380/src/redis-cli -p 6380 "
LOGFILE="/home/proxy/keep2machine2redis/log.txt"
echo "[backup]" >> $LOGFILE
date >> $LOGFILE
echo "Being slave....wait" >> $LOGFILE 2>&1
sleep 5
echo "Run SLAVEOF cmd ..." >> $LOGFILE
$REDISCLI SLAVEOF 192.168.56.102 6380 >> $LOGFILE 2>&1
需要解決的問題:
1.keepalived是多久檢測一次redis狀態,是否可以心跳?
2.我試圖在同一個keepalived配置中配置兩個vrrp例項,但是這樣啟動有問題,檢視ip addr發現vip沒繫結上
3.我本來是用keepalived -f configFile.conf 的啟動方式,但是檢視/etc/log/message 發現三個程序中有一個child process faild,啟動失敗,
後來是用預設的配置檔案位置就好了。。。。