在前两篇已完成keepalived的安装及service配置,ssdb在此处不再说明,可以参考ssdb官网说明:http://ssdb.io/zh_cn。
以下介绍一下如何结合keepalived+ssdb搭建ssdb高可用环境。
1.配置ssdb的监控命令及脚本
由于ssdb可以兼容redis,所以这里使用redis-cli工具来监控ssdb server。
(1)下载redis server source code
(2)在redis code目录下make
(3)将make好的redis-cli复制到/usr/local/redis_tools目录下
2.配置监控脚本,内容如下:
#!/bin/bash
LOGFILE="/var/log/keepalived-ssdb-check.log"
if [ "`/usr/local/redis_tools/redis-cli -h $1 -p $2 PING`" == "PONG" ]; then :
exit 0
else
sleep 1
if [ "`/usr/local/redis_tools/redis-cli -h $1 -p $2 PING`" == "PONG" ]; then :
exit 0
else
date >> $LOGFILE
echo "Failed:redis-cli -h $1 -p $2 PING" >> $LOGFILE 2>&1
service keepalived stop
exit 1
fi
fi
3.配置keepalived vrrp 内容如下:
keepalived 实例1:Master节点
global_defs {
notification_email {
tt@lxs.com.cn
}
notification_email_from alert@lxs.com.cn
smtp_server smtp.exmail.lxs.com
smtp_connect_timeout 30
enable_traps
router_id SSDBKVM01
}
vrrp_script chk_ssdb {
script "/etc/keepalived/check_ssdb.sh 127.0.0.1 8888"
interval 2
weight -2
}
vrrp_instance VI_1 {
state MASTER
interface eth0
mcast_src_ip 192.168.124.64
virtual_router_id 101
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
track_script {
chk_ssdb
}
virtual_ipaddress {
192.168.124.101/24
}
}
keepalived 实例2:Backup节点
global_defs {
notification_email {
tt@lxs.com.cn
}
notification_email_from alert@lxs.com.cn
smtp_server smtp.exmail.lxs.com
smtp_connect_timeout 30
enable_traps
router_id SSDBKVM01
}
vrrp_script chk_ssdb {
script "/etc/keepalived/check_ssdb.sh 127.0.0.1 8888"
interval 2
weight -2
}
vrrp_instance VI_1 {
state BACKUP
interface eth0
mcast_src_ip 192.168.124.65
virtual_router_id 101
priority 50
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
track_script {
chk_ssdb
}
virtual_ipaddress {
192.168.124.101/24
}
}
其中,virtual_router_id 取值在0-255之间,用来区分多个instance的VRRP组播。在同一网段内virtual_router_id值不能重复,否则会报错:ip address associated with VRID not present in received packet
保存上面的内容,重新加载配置文件。
service keepalived reload