LVS-VIP:192.168.159.250LVS-server:192.168.159.91mysql-server:192.168.151.150
####系统版本CentOS6.4###
####由于LVS DR模式基于同一网段,MySQL实例基于不同网段,所以选择TUN模式,本例由于是测试环境,所有只有一台realserver。
一、在lvs-server安装ipvsadm和keepalived
1.安装ipvsadm
1.1初始化环境
yum install libnl* libpopt* kernel-devel
###安装popt-static###
wget http://mirrors.163.com/centos/6/os/x86_64/Packages/popt-static-1.13-7.el6.x86_64.rpm
rpm -ivh popt-static-1.13-7.el6.x86_64.rpm
###环境初始化完毕###
1.2创建软连接
ln -s /usr/src/kernels/2.6.32-358.el6.x86_64/ /usr/src/linux
1.3安装ipvsadm
cd /usr/local/src/ipvsadm-1.26
make
make install
1.4测试ipvsadm
ipvsadm -v
#ipvsadm v1.26 2008/5/15 (compiled with popt and IPVS v1.2.1)
安装完成
2.安装keepalived
yum -y install popt-devel openssl openssl-devel
cd/usr/local/src/keepalived-1.2.13./configure --prefix=/usr/local/src/keepalived --with-kernel-dir=/usr/src/kernels/2.6.32-358.el6.x86_64/
make && make install
cp /usr/local/src/keepalived-1.2.13/sbin/keepalived /usr/sbin/
cp /usr/local/src/keepalived-1.2.13/etc/sysconfig/keepalived /etc/sysconfig/
cp /usr/local/src/keepalived-1.2.13/etc/rc.d/init.d/keepalived /etc/init.d/chkconfig--add keepalived
chkconfig keepalived on
二、整合keepalived和lvs
1.1添加keepalived.conf配置文件
! Configuration File forkeepalived
vrrp_instance VIP_91
{
state MASTER
interface eth0
virtual_router_id91priority100advert_int2smtp_alert
authentication
{
auth_type PASS
auth_pass123456}
virtual_ipaddress
{192.168.159.250/24}
}
virtual_server192.168.159.250 3358{
delay_loop6lb_algo rr
#lb_kind DR
lb_kind TUN
persistence_timeout60protocol TCP
real_server192.168.151.150 3358{
weight3TCP_CHECK {
connect_timeout10nb_get_retry3delay_before_retry3connect_port3358}
}
}
1.2lvs-server绑定vip到tunl0网卡
###vim /usr/locsl/src/ipvsdr.sh###
#!/bin/bash
VIP=192.168.159.250RIP1=192.168.151.150./etc/rc.d/init.d/functionscase "$1" instart)echo "start LVS of DirectorServer"#Set the Virtual IP Address
/sbin/ifconfig tunl0 $VIP broadcast $VIP netmask 255.255.255.255up/sbin/route add -host $VIP dev tunl0
#Clear IPVS Table/sbin/ipvsadm -C
#Set Lvs/sbin/ipvsadm -A -t $VIP:3358 -s rr/sbin/ipvsadm -a -t $VIP:3358 -r $RIP1:3358 -g#Run Lvs/sbin/ipvsadm
;;
stop)echo "close LVS Directorserver"
ifconfigtunl0 down/sbin/ipvsadm -C
;;*)echo "Usage: $0 {start|stop}"exit1
esac
#####执行ipvsdr.sh脚本、启动keepalived#####
sh ipvsdr.sh
service keepalived restart
####测试vip可用性######
[root@xxxxxx keepalived]# ping 192.168.159.250 -c 4
PING 192.168.159.250 (192.168.159.250) 56(84) bytes of data.
64 bytes from 192.168.159.250: icmp_seq=1 ttl=64 time=10.6 ms
64 bytes from 192.168.159.250: icmp_seq=2 ttl=64 time=0.053 ms
64 bytes from 192.168.159.250: icmp_seq=3 ttl=64 time=0.038 ms
64 bytes from 192.168.159.250: icmp_seq=4 ttl=64 time=0.049 ms
--- 192.168.159.250 ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3000ms
rtt min/avg/max/mdev = 0.038/2.692/10.628/4.581 ms
1.3real-server绑定vip并禁止ARP广播响应
###vim realserver.sh###
#!/bin/bash
VIP=192.168.159.250
case $1 instart)ifconfigtunl0 up/sbin/ifconfig tunl0 $VIP broadcast $VIP netmask 255.255.255.255up/sbin/route add -host $VIP dev tunl0echo "1" > /proc/sys/net/ipv4/conf/tunl0/arp_ignoreecho "2" > /proc/sys/net/ipv4/conf/tunl0/arp_announceecho "1" > /proc/sys/net/ipv4/conf/all/arp_ignoreecho "2" > /proc/sys/net/ipv4/conf/all/arp_announceecho 0 > /proc/sys/net/ipv4/conf/tunl0/rp_filterecho 1 > /proc/sys/net/ipv4/conf/tunl0/forwardingecho 1 > /proc/sys/net/ipv4/ip_forward
sysctl-p >/dev/null 2>&1
echo "RealServer Start OK";;
stop)ifconfigtunl0 down
route del $VIP>/dev/null 2>&1
echo "0" > /proc/sys/net/ipv4/conf/tunl0/arp_ignoreecho "0" > /proc/sys/net/ipv4/conf/tunl0/arp_announceecho "0" > /proc/sys/net/ipv4/conf/all/arp_ignoreecho "0" > /proc/sys/net/ipv4/conf/all/arp_announceecho "RealServer Stoped";;*)echo "Usage: $0 {start|stop}"exit1
esacexit0
最后,测试mysql连接状态,查看lvs调度信息
[root@xxxxxx keepalived]# ipvsadm -lnIP Virtual Server version1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags->RemoteAddress:Port Forward Weight ActiveConn InActConn
TCP192.168.159.250:3358 rr persistent 60
-> 192.168.151.150:3358 Tunnel 3 1 0
至此搭建完毕。