安装keepalived前需要安装的包
[root@dns2 /]# yum -y install kernel kernel-devel
安装keepalived
wget http://www.keepalived.org/software/keepalived-1.1.19.tar.gz
# tar zxvf keepalived-1.1.19.tar.gz
# cd keepalived-1.1.19
# ./configure --prefix=/usr/local/keepalived --with-kernel-dir=/usr/src/kernels/2.6.18-164.el5xen-i686/
# make&&make install
# cp /usr/local/keepalived/etc/rc.d/init.d/keepalived /etc/rc.d/init.d/
# cp /usr/local/keepalived/etc/sysconfig/keepalived /etc/sysconfig/
# mkdir /etc/keepalived
# cp /usr/local/keepalived/etc/keepalived/keepalived.conf /etc/keepalived/
# cp /usr/local/keepalived/sbin/keepalived /usr/sbin/
# vi /etc/keepalived/keepalived.conf
global_defs {
notification_email {
longmu@taobao.com
}
notification_email_from lb@proxy
smtp_server localhost
smtp_connect_timeout 30
router_id haproxy_wf
}
vrrp_script chk_haproxy { #用来检测该服务器上haproxy服务的健康状态
script "killall -0 haproxy"
interval 2
weight 2
}
vrrp_instance VI_9 { #这里的VI_1最好重新命名,且跟备机一直,并确保同段网络内没有相同的命名
state MASTER #主为MASTER
interface eth0
virtual_router_id 59 #主备配置要一样,这个值是路由的配对,不能跟其他机器一样
priority 100 #优先级,主配置必须比备机上值大
advert_int 1
authentication {
auth_typePASS
auth_pass haproxy_wf #加密串,主和备上定义必须相同
}
track_script {
chk_haproxy
}
virtual_ipaddress {
10.13.23.83 #定义虚IP
}
}
以下为备机配置,注意几个值不同:
global_defs {
notification_email{
longmu@taobao.com
}
notification_email_from lb@proxy
smtp_server localhost
smtp_connect_timeout 30
router_id haproxy_wf
}
vrrp_script chk_haproxy { #用来检测该服务器上haproxy服务的健康状态
script "killall -0 haproxy"
interval 2
weight 2
}
vrrp_instance VI_9 {
state BACKUP
interface eth0
virtual_router_id 59
priority 99
advert_int 1
authentication {
auth_typePASS
auth_pass haproxy_wf
}
track_script {
chk_haproxy
}
virtual_ipaddress {
10.13.23.83
}
}
# service keepalived start
#tail –f /var/log/message 监听日志,查看状态,测试负载均衡及高可用性是否有效。
haproxy安装配置请参考http://johnsz.blog.51cto.com/525379/715922
备注:
keepalived 两个主机不能正常通信,除了配置错误之外,通常是由于防火墙的原因,很多资料都没有提及这点,难道让服务器裸奔不成。请检查防火墙规则符合下面的条件:
1、keepalived 默认需要使用D类多播地址224.0.0.18 进行心跳通信
2、keepalived 使用vrp协议进行通信(协议号码为112)
防火墙添加规则:
iptables -A INPUT -i eth1 -d 224.0.0.0/8 -j ACCEPT
iptables -A INPUT -i eth1 -p 112 -j ACCEPT
参考文献:
http://rfyimcool.blog.51cto.com/1030776/680666
http://www.cnblogs.com/davidwang456/p/3718865.html
http://blog.chinaunix.net/uid-25266990-id-3989321.html