LVS是一个关于服务器负载均衡的开源项目
下面是我的实施步骤:
没有采用NAT,应为不方便效率也比较低,我采用DR+TUN的方式,因为有台HP的机器(hppa)在另外一个网段,所以它用TUN,其他都是DR
所有机器就一块网卡eth0,括号是IP地址,VIP是10.60.65.222
1. DIRECTOR-Master db3 (10.60.65.105) C2.4G/128M/Gentoo/2.6.19-gentoo-r5 2. DIRECTOR-Slave druggo (10.60.65.68) AMD2500+/256M/Gentoo/2.6.20-gentoo-r4 3. RS1 magic (10.60.65.37) P2.4G/256M/MagicLinux/2.6.9 4. RS2 hppa (192.168.17.114) PA8500/2046M/Gentoo/2.6.20.1-hppa
DIRECTOR配置
安装带ldirectord的heartbeat以及ipvsadm,然后配置
1. /etc/ha.d/ha.cf
logfacility local0 bcast eth0 auto_failback on node db3 druggo
2. /etc/ha.d/haresources
db3 10.60.65.222/32/eth0/10.60.65.222 ldirectord
3. /etc/ha.d/authkeys
auth 1 1 crc
4. /etc/ha.d/conf/ldirectord.cf
logfile = "/var/log/ldirectord.log" virtual = 10.60.65.222:80 real=hppa:80 ipip 2 #real=druggo:80 gate 2 (本来是RS,为了试试心跳所以……) real=magic:80 gate 3 scheduler=wlc protocol = tcp virtual = 10.60.65.222:23 real=hppa:23 ipip 1 scheduler=wlc protocol = tcp
DIRECTOR-Master配置结束,Slave的配置直接拷贝Master的一模一样。
REALSERVER配置 magic 用DR方式,跑脚本 uplo
#!/bin/sh ifconfig lo:0 10.60.65.222 broadcast 10.60.65.222 netmask 255.255.255.255 up route add -host 10.60.65.222 dev lo:0 echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce echo 1 > /proc/sys/net/ipv4/conf/lo/arp_ignore echo 2 > /proc/sys/net/ipv4/conf/lo/arp_announce echo 0 > /proc/sys/net/ipv4/conf/lo/rp_filter
hppa 用TUN方式,需要编译ip-tunneling支持,然后modprobe ipip,这样就有tunl0了 跑脚本 uptunl
#!/bin/sh ifconfig tunl0 10.60.65.222 broadcast 10.60.65.222 netmask 255.255.255.255 up route add -host 10.60.65.222 dev tunl0 echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce echo 1 > /proc/sys/net/ipv4/conf/tunl0/arp_ignore echo 2 > /proc/sys/net/ipv4/conf/tunl0/arp_announce echo 0 > /proc/sys/net/ipv4/conf/tunl0/rp_filter
至此配置完毕,可以开机了,先把magic和hppa上的apache打开,然后把db3和druggo上的心跳起动,一切就绪,在db3上运行
#ipvsadm
IP Virtual Server version 1.2.1 (size=4096) Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
TCP 10.60.65.222:http wlc
-> magic:http Route 3 0 0 -> hppa:http Tunnel 2 0 0
TCP 10.60.65.222:telnet wlc
-> hppa:telnet Tunnel 1 0 0
访问VIP,正常工作,AB测试,按权分配连接。telnet服务也正常工作。
测试心跳,拔掉db3的网线,VIP不可访问,大约1分钟后,VIP正常,发现druggo已经工作。 插上db3的网线,VIP不可访问,大约1分钟后VIP正常,发现druggo停止,db3重新起动并工作。哈哈……
Last comments