標籤:redis keepalived 高可用
1,版本.均為yum安裝.
[[email protected] ~]# redis-server --version
Redis server version 2.4.10 (00000000:0)
[[email protected] ~]# redis-cli --version
redis-cli 2.4.10
[[email protected] ~]# keepalived --version
Keepalived v1.2.13 (03/19,2015)
2,設定檔內容注意事項.
a,要實現redis主從複製,從節點設定檔裡添加一行slaveof 172.16.226.129(主節點ip) 6379(主節點連接埠).
b,keepalived設定檔內容:
vrrp_script chk_redis {
script "/etc/keepalived/scripts/redis_check.sh" ###監控指令碼
interval 2 ###監控時間
}
vrrp_instance VI_1 {
state MASTER ###設定為MASTER
interface eth0 ###監控網卡
virtual_router_id 51
priority 101 ###權重值
authentication {
auth_type PASS ###加密
auth_pass redis ###密碼
}
track_script {
chk_redis ###執行上面定義的chk_redis
}
virtual_ipaddress {
172.16.226.108 ###VIP
}
notify_master /etc/keepalived/scripts/redis_master.sh
notify_backup /etc/keepalived/scripts/redis_backup.sh
notify_fault /etc/keepalived/scripts/redis_fault.sh
notify_stop /etc/keepalived/scripts/redis_stop.sh
}
從節點只需要將權重值設的小一點即可.
3,實現redis主從轉換的指令碼:
[[email protected] keepalived]# cat scripts/redis_master.sh
#!/bin/bash
REDISCLI="/usr/bin/redis-cli"
LOGFILE="/var/log/keepalived-redis-state.log"
echo "[master]" >> $LOGFILE
date >> $LOGFILE
echo "Being master...." >> $LOGFILE 2>&1
echo "Run SLAVEOF cmd ..." >> $LOGFILE
$REDISCLI SLAVEOF 192.168.241.35 6379 >> $LOGFILE 2>&1
sleep 10 #延遲10秒以後待資料同步完成後再取消同步狀態
echo "Run SLAVEOF NO ONE cmd ..." >> $LOGFILE
$REDISCLI SLAVEOF NO ONE >> $LOGFILE 2>&1
[[email protected] keepalived]# cat scripts/redis_check.sh
#!/bin/bash
ALIVE=`/usr/bin/redis-cli PING`
if [ "$ALIVE" == "PONG" ]; then
echo $ALIVE
exit 0
else
echo $ALIVE
exit 1
fi
[[email protected] keepalived]# cat scripts/redis_backup.sh
#!/bin/bash
REDISCLI="/usr/bin/redis-cli"
LOGFILE="/var/log/keepalived-redis-state.log"
echo "[backup]" >> $LOGFILE
date >> $LOGFILE
echo "Being slave...." >> $LOGFILE 2>&1
sleep 15 #延遲15秒待資料被對方同步完成之後再切換主從角色
echo "Run SLAVEOF cmd ..." >> $LOGFILE
$REDISCLI SLAVEOF 192.168.241.35(另外一個節點的ip) 6379 >> $LOGFILE 2>&1
[[email protected] keepalived]# cat scripts/redis_fault.sh
#!/bin/bash
LOGFILE=/var/log/keepalived-redis-state.log
echo "[fault]" >> $LOGFILE
date >> $LOGFILE
[[email protected] keepalived]# cat scripts/redis_stop.sh
#!/bin/bash
LOGFILE=/var/log/keepalived-redis-state.log
echo "[stop]" >> $LOGFILE
date >> $LOGFILE
給指令碼以執行許可權.
測試:略
遠程連結redis: redis-cli -h 172.16.226.108(伺服器ip) -p 6379(服務連接埠)
本文出自 “linux筆記” 部落格,請務必保留此出處http://lsfeng.blog.51cto.com/7959286/1718331
redis-keepalived高可用