Keepalived会主动检测web服务器,把有故障的服务器从系统中剔除,在服务器修复以后会重新加入到服务器群众,不影响服务器的正常工作
VRRP:虚拟路由冗余协议它把一个虚拟路由器的责任动态的分配到局域网中的VRRP中的一台。控制虚拟路由IP地址的VRRP路由器称为主路由器,负责转发数据到虚拟IP地址,一旦主路由出现故障,就把数据包转发到备用的路由器上,虚拟IP地址在路由之间是共享的,其中一个指定为主路由,其余的作为备份路由,如果主路由出现故障,这个虚拟IP地址就会映射到一个备用路由上,这个备份路由就成为主路由
VRRP:能够动态的将一个虚拟路由器的责任指定至同一个VRRP组中的其它路由器上,消除静态路由配置的单点故障,同时切换路由的过程会比较块,主要是在主路由出现故障时,启用备用路由
配置keepalived为实现haproxy高可用的双主模型配置文件示例:
安装keepalived,先配置好两个高可用节点
在两个节点上安装keeoalived
在keepalived中指定vrrp
用不上的话禁用smnp
下载keepalived-1.2.7-5.el5.i386
yum-yinstall--nogpgchecklocalinstallkeepalived-1.2.7-5.el5.i386
Scpkeepalived-1.2.7-5.el5.i386.rpmnode2:/root/复制到另外一个节点
在另外一个节点上再执行yum-yinstall--nogpgchecklocalinstallkeepalived-1.2.7-5.el5.i386
安装keepalived
cdkeepalivedkeepalived的配置文件keepalived.conf
!ConfigurationFileforkeepalived
global_defs{
notification_email{
linuxedu@
mageedu@
}
notification_email_fromkanotify@
smtp_connect_timeout3
smtp_server127.0.0.1
router_idLVS_DEVEL
}
vrrp_scriptchk_haproxy{
script"killall-0haproxy"
interval1
weight2
}
vrrp_scriptchk_mantaince_down{
script"[[-f/etc/keepalived/down]]&&exit1||exit0"
interval1
weight2
}
vrrp_instanceVI_1{
interfaceeth0
stateMASTER#BACKUPforslaverouters
priority101#100forBACKUP
virtual_router_id51
garp_master_delay1
authentication{
auth_typePASS
auth_passpassword
}
track_interface{
eth0
}
virtual_ipaddress{
172.16.116.7/16deveth0labeleth0:0
}
track_script{
chk_haproxy
chk_mantaince_down
}
notify_master"/etc/keepalived/notify.shmaster"
notify_backup"/etc/keepalived/notify.shbackup"
notify_fault"/etc/keepalived/notify.shfault"
}
vrrp_instanceVI_2{
interfaceeth0
stateBACKUP#BACKUPforslaverouters
priority100#100forBACKUP
virtual_router_id52
garp_master_delay1
authentication{
auth_typePASS
auth_passpassword
}
track_interface{
eth0
}
virtual_ipaddress{
172.16.116.7/16deveth0labeleth0:1
}
track_script{
chk_haproxy
chk_mantaince_down
}
notify_master"/etc/keepalived/notify.shmaster"
notify_backup"/etc/keepalived/notify.shbackup"
notify_fault"/etc/keepalived/notify.shfault"
}
notify.sh脚本的简单示例:
#!/bin/bash
#Author:MageEdu<linuxedu@>
#description:Anexampleofnotifyscript
#
vip=172.16.116.8
contact='root@localhost'
Notify(){
mailsubject="`hostname`tobe$1:$vipfloating"
mailbody="`date'+%F%H:%M:%S'`:vrrptransition,`hostname`changedtobe$1"
echo$mailbody|mail-s"$mailsubject"$contact
}
case"$1"in
master)
notifymaster
/etc/rc.d/init.d/haproxystart
exit0
;;
backup)
notifybackup
/etc/rc.d/init.d/haproxyrestart
exit0
;;
fault)
notifyfault
exit0
;;
*)
echo'Usage:`basename$0`{master|backup|fault}'
exit1
;;
esac
配置好keepalived以后安装haproxy-1.4.22.tar.gz
tarxfhaproxy-1.4.20.tar.gz
cdhaproxy-1.4.20
makeTARGET=linux26PREFIX=/usr/local/haproxyinstall
cd/usr/local/haproxy/
mkdirconflogs
cdconf/
vimhaproxy.cfg
/usr/local/haproxy/sbin/haproxy-f/usr/local/haproxy/conf/haproxy.cfg
修改完成后,启动keepalived服务
查看node1与node2上的VIP地址配置node1主机是否为172.16.116.7eth0:0是否为172.16.116.8
用172.16.116.7测试网页,node1的返回结果是
用172.16.116.8测试网页,node2的返回结果是