在日常的系统管理当中,某些应用对可用性要求比较高,简单的冷备是不能满足需求,所以才需要双机热备即HA.根据此应用要求,我们介绍一个软件实现高可用性.
keepalived是Linux下一个双机热备的软件,可提供vrrp以及health-check功能,目前仅用它提供双机漂移ip,通过vrrp协议实现。
1.安装
在官方网页下载keepalived的最新版(现为1.1.12版),URL: ,tar zxvf your-directory/keepalived-1.1.12.tar.gz ,然后是标准的Linux源码安装过程:configure→make→make install 。 需要注意的是,在RedHat AS4的系统上安装过程没有问题,但是在AS3的系统上configure编译过程会出错,出错提示如下:
checking openssl/ssl.h usability… no
checking openssl/ssl.h presence… no
checking for openssl/ssl.h… no
configure: error:
!!! OpenSSL is not properly installed on your system. !!!
!!! Can not include OpenSSL headers files. !!!
其实系统安装了openssl,ssl.h文件也没问题,问题在于redhat AS3 把Kerberos includes 放在一个“奇怪”的地方,以致于keepalived的configure程序找不到,只好报openssl安装有问题。解决方法是设置编译环境的CPPFLAGS变量:export CPPFLAGS=-I/usr/kerberos/include ,再次编译就通过了。
安装完成后Service 控制文件/usr/local/etc/init.d/keepalived,拷贝到/etc/init.d/vrrpd,或者建立一个符号链接:ln -s /usr/local/etc/init.d/keepalived /etc/init.d/vrrpd 进行修改,用service vrrpd start|stop|restart进行控制。
配置模板在/usr/local/etc/keepalived目录,可执行文件在/usr/local/sbin/keepalived。
2.配置
控制文件配置:cp /usr/local/etc/init.d/keepalived /etc/init.d/vrrpd ,vi /etc/vrrpd ,修改文件为以下内容(其中PID_FILE要改为keepalived_vrrp.pid,因为系统实际产生的pid文件就是这个名字;–vrrp参数是控制仅使用vrrp功能;-f参数指定配置文件所在位置):
#!/bin/sh
#
# Startup script for the Keepalived daemon
#
# processname: keepalived
# pidfile: /var/run/keepalived_vrrp.pid
# config: /etc/vrrpd.conf
# chkconfig: 35 21 79
# description: Start and stop Keepalived
# Global definitions
PID_FILE=”/var/run/keepalived_vrrp.pid”
CMD=”/usr/local/sbin/keepalived”
# See how we were called.
case “$1″ in
start)
echo -n “Starting Keepalived for VRRP: ”
$CMD –vrrp -f /etc/vrrpd.conf
touch /var/lock/subsys/keepalived
echo
;;
stop)
echo -n “Shutting down Keepalived for VRRP: ”
PID=`cat $PID_FILE`
kill $PID
rm -rf /var/lock/subsys/keepalived
echo
;;
restart)
echo -n “Shutting down Keepalived for VRRP: ”
PID=`cat $PID_FILE`
kill $PID
echo
echo -n “Starting Keepalived for VRRP: ”
$CMD –vrrp -f /etc/vrrpd.conf
echo
;;
reload)
echo -n “Reloading Keepalived config: ”
killall -HUP keepalived
echo
;;
*)
echo “Usage: $0 {start|stop|restart|reload}”
exit 1
esac
exit 0
3. 配置文件:指定vrrp的虚拟ip地址、权重、角色等,参考文件如下
global_defs {
notification_email {
}
notification_email_from cfengine@alipay.com
smtp_server email.alipay.com
smtp_connect_timeout 30
router_id dns2
}
vrrp_instance VI_1 {
state MASTER
interface bond0
virtual_router_id 50
smtp_alert
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass alibaba
}
virtual_ipaddress {
192.168.188.254
}
}
其中auth_pass的值要一致,keepalived根据这个验证vip的成员。state的值有MASTER和BACKUP之分,priority是权重配置,数值越大权重越高越优先。有关email的设定是发生事件时会自动发email报告,请按照实际情况设置。
NOW,use ” service vrrpd start ” on both nodes to start vip !
4.注意事项
1、输出的日志信息: /var/log/messages ,更具体的日志信息输出需要在启动keepalived时加 -d 参数。
2、在都为MASTER且priority一样的情况下,后启的节点(service vrrp start)会取代正在运行的节点变成主用的。
3、一台为MASTER且priority较高的情况下,不受次节点down/up影响,并且其本身再从down变为up时,会抢夺控制权。
4、在都为MASTER且priority一样的情况下,正在运行的主节点down(断网),次节点会自动接管,主节点再起来时不会去抢夺控制权。