1.lvs的realserver的脚本
vim /usr/sbin/realserver.sh
#!/bin/bash
VIP=192.168.203.77
case "$1" in
start )
/sbin/ifconfig lo:0 $VIP broadcast $VIP netmask 255.255.255.255 up
/sbin/route add -host $VIP dev lo:0
echo "1" >/proc/sys/net/ipv4/conf/lo/arp_ignore
echo "2" >/proc/sys/net/ipv4/conf/lo/arp_announce
echo "1" >/proc/sys/net/ipv4/conf/all/arp_ignore
echo "2" >/proc/sys/net/ipv4/conf/all/arp_announce
sysctl -p
echo "realserver start"
;;
stop )
/sbin/ifconfig lo:0 down
/sbin/route del -host $VIP
echo "0" >/proc/sys/net/ipv4/conf/lo/arp_ignore
echo "0" >/proc/sys/net/ipv4/conf/lo/arp_announce
echo "0" >/proc/sys/net/ipv4/conf/all/arp_ignore
echo "0" >/proc/sys/net/ipv4/conf/all/arp_announce
echo "realserver stop"
;;
* )
echo "argment is wrong"
exit 1
esac
exit 0
2.在主从调度器下载源码包
ipvsadm-1.24.tar.gz
keepalived-1.1.15.tar.gz
3.分别在主从调度器上安装这两个源码包,主服务器192.168.203.57,从服务器192.168.203.58
ln -s /usr/src/kernels/2.6.18-308.1.1.el5-x86_64/ /usr/src/linux 不做这一步,ipvsadm会安装失败
tar zxvf ipvsadm-1.24.tar.gz -C /usr/src
cd /usr/src/ipvsadm-1.24
make && make install
tar zxvf keepalived-1.1.15.tar.gz -C /usr/src
cd /usr/src/keepalived-1.1.15
./configure && make && make install
cp /usr/local/etc/rc.d/init.d/keepalived /etc/rc.d/init.d/
cp /usr/local/etc/sysconfig/keepalived /etc/sysconfig/
mkdir /etc/keepalived
cp /usr/local/etc/keepalived/keepalived.conf /etc/keepalived/
cp /usr/local/sbin/keepalived /usr/sbin/
#service keepalived start|stop 做成系统启动服务
4.修改主服务器(192.168.203.57)上/etc/keepalived/keepalived.conf文件,备份服务器(192.168.203.58)只需要修改state的值为BACKUP, priority 的值需要的比主服务器的值小即可,配置文件中的花括号{前,一定要加空格,否则可能会失败
! Configuration File for keepalived
global_defs {
notification_email {
leey@afd.com
}
notification_email_from leey@afd.com
smtp_server localhost
smtp_connect_timeout 30
router_id LVS_DEVEL
}
vrrp_instance VI_1 {
state MASTER
interface eth0
virtual_router_id 51 #虚拟路由标示,同一个vrrp使用唯一的标示,在同一个vrrp——instance下,master和backup是一致的
priority 100 #优先级,数字越大优先级越高,master的优先级必须大于backup的优先级
advert_int 1 #master和backup之间的同步检查的时间间隔
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.203.77
}
}
virtual_server 192.168.203.77 3306 {
delay_loop 6 #realserver运行情况的检查时间间隔
lb_algo lc #负载的调度算法
lb_kind DR #直接路由方式
persistence_timeout 50 #session的持续时间.动态网页非常有用
protocol TCP #转发的协议,tcp和UDP两种
real_server 192.168.203.181 3306 {
weight 1
TCP_CHECK {
connect_timeout 3 #realserver的响应超时时间
nb_get_retry 3 #重试次数
delay_before_retry 3 #重试的时间间隔
}
}
real_server 192.168.203.182 3306 {
weight 1
TCP_CHECK {
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
}
}
real_server 192.168.203.183 3306 {
weight 1
TCP_CHECK {
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
}
}
real_server 192.168.203.184 3306 {
weight 1
TCP_CHECK {
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
}
}
}
5.在realserver(192.168.203.181-184)上执行/usr/sbin/realserver.sh start 脚本,在主从调度器上都打开keepalived服务
这样可以做到lvs的高可用性,并且可以检测realserver的健康状态。