LVS VS-TUN ipvsadm+heartbeat-ldirectord搭建linux集群


测试环境

  • 一台调度机,两台真实机,使用ipvsadm+ldirectord搭建vs-tun的linux集群
  • 3台服务器都安装centos5.4
  • 调度机IP:eth0:192.168.11.10
  • 调度机VIP:eth0:0:192.168.11.20
  • 真实机1IP:eth0:192.168.11.11
  • 真实机1tunnel IP:tunl0:192.168.11.20
  • 真实机2IP:eth0:192.168.11.12
  • 真实机2tunnel IP:tunl0:192.168.11.20
  • ipvsadm与ldirectord都只需在调度机安装,真实机不用安装软件。

    调度机操作

#安装ipvsadm
yum install ipvsadm
#安装heartbeat-ldirectord
yum install heartbeat-ldirectord
#配置VIP地址到eth0:0
ifconfig eth0:0 192.168.11.20 netmask 255.255.255.255 broadcast 192.168.11.20 up
#增加eth0:0路由
route add -host 192.168.11.20 dev eth0:0  //测试删除不影响使用。
#配置网络系统参数(eth0为绑定VIP的网卡设备)
echo "0" >/proc/sys/net/ipv4/ip_forward //tunl模式时其实不用关心此参数,但是为了避免干扰所以关闭。但DR模式需要开启转发
echo "1" >/proc/sys/net/ipv4/conf/all/send_redirects
echo "1" >/proc/sys/net/ipv4/conf/default/send_redirects
echo "1" >/proc/sys/net/ipv4/conf/eth0/send_redirects
#配置IPVS的服务类型、VIP地址以及对应的真实机信息
ipvsadm -C #清空规则
ipvsadm -A -t 192.168.11.20:80 -s wlc
ipvsadm -a -t 192.168.11.20:80 -r 192.168.11.11 -i -w 1
ipvsadm -a -t 192.168.11.20:80 -r 192.168.11.12 -i -w 1

--------------------------------------------------------
-A:为add-service的意思,此参数表示随后的设定将为群集新增一个网路服务
-t:表示此网络使用TCP通讯协议
192.168.11.20:80表示对外的VIP和端口
-s:设定此网路服务器将采用哪一种调度演算法进行负载均衡的调度,
wlc:为加权最少链接调度算法的所写
---------------------------
-a:为add-server的意思,表示随后将为群集添加一个真实服务器
-t:使用TCP
192.168.11.20:80表示对外的VIP和端口
-r:设定真实服务器IP
-m:设定网路服务采用的运作方式,-m:VS-NAT;-g:VS-DR;-i:VS-TUN
-w:权重
ipvsadm还有一个“--persistent”的参数,可以让真实服务器间保持固定连线,也就是虚拟服务器将某个使用者的第一次连线分配至真实服务器,未来同一个使用者的连线都会被分配到相同的真实服务器。
---------------------------------------------------------

[root@lb1 ~]# ipvsadm //检查运行状况
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
TCP 192.168.11.20:http wlc //对外的网络服务
-> 192.168.11.12:http Tunnel 1 0 0
-> 192.168.11.11:http Tunnel 1 0 0
Tunnel:lvs运作的方式
1:真实服务器的权重,越大权重越高,说明服务器性能越高
0:正在连线至该真实服务器的数目
0:已连线至该真实服务器的连线数目
---------------------------------------------------------
[root@lb1 ~]# ipvsadm -lnc //检查连接情况
IPVS connection entries
pro expire state source virtual destination
TCP 01:44 FIN_WAIT 192.168.1.26:55900 192.168.11.20:80 192.168.11.11:80
TCP 01:43 FIN_WAIT 192.168.1.26:55899 192.168.11.20:80 192.168.11.12:80
TCP 01:44 FIN_WAIT 192.168.1.26:55901 192.168.11.20:80 192.168.11.12:80
TCP 01:45 FIN_WAIT 192.168.1.26:55902 192.168.11.20:80 192.168.11.11:80
---------------------------------------------------------
#复制ldirectord配置文件到/etc/ha.d/目录
cp /usr/share/doc/heartbeat-ldirectord-2.1.3/ldirectord.cf /etc/ha.d/
#默认启动不了ldirectord,需要修改/etc/rc.d/init.d/ldirectord
注释掉该行: . /etc/ha.d/shellfuncs
#修改/etc/ha.d/ldirectord.cf 配置文件:
# Global Directives
checktimeout=3 //检查超时
checkinterval=1 //检查间隔
autoreload=yes //是否自动重载
logfile="/var/log/ldirectord.log"
logfile="local0"
quiescent=yes //为yes时,设置真实机器权值为0即不可达,设置为no时,则删除不可达的真实机器
# Sample for an http virtual service
virtual=192.168.11.20:80    //下面的内容要有缩进
        real=192.168.11.11:80 ipip 1 // gate(VSDR)、masq(VSNAT)或ipip(VSTUN)指出要使用的转发方法 1表示权重
        real=192.168.11.12:80 ipip 1
        service=http
        scheduler=wlc
        #persistent=600
        protocol=tcp
        checktype=connect //检测端口是否可达
        #checktype=negotiate
        checkport=80
        #request="index.html" //checktype=negotiate时候检查的页面文件
        #receive="Test Page" //返回的内容

#启动ldirectord
service ldirectord start

真实机操作(两台)

(真实机配置和DR模式不同)
#配置tunl0
ifconfig tunl0 192.168.11.20 broadcast 192.168.11.20 netmask 255.255.255.255 up
#增加路由
route add -host 192.168.11.20 dev tunl0


#关闭转发功能
echo "0" >/proc/sys/net/ipv4/ip_forward
#解决arp问题
echo 1 > /proc/sys/net/ipv4/conf/tunl0/arp_ignore
echo 2 > /proc/sys/net/ipv4/conf/tunl0/arp_announce
echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore
echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce
#解决源地址验证问题
echo 0 > /proc/sys/net/ipv4/conf/tunl0/rp_filter
echo 0 > /proc/sys/net/ipv4/conf/all/rp_filter

#启动两台真实机的apache应用首页index.htm写入不同的内容,访问测试.