(二)lvs客户端
Lvs的客户端指负载均衡其/转发器(director)后面提供服务的真实机器。负载均衡类型(lb_kind)一般分直接路由模式DR 、网络地址转换模式 NAT以及隧道模式TUN三种。Lvs客户端的配置是根据其所采用的负载均衡种类(lb_kind)来做相应操作的。在我们的应用环境里,为了获得最高的性能,采用的负载均衡种类(lb_kind)是直接路由模式DR。
不管采取哪一种模式,lvs客户端都不需安装额外的软件。
Lvs可支持的客户端包括:各种GNU/linux、大部分unix已经windows。目前我已经成功运行的lvs客户端环境有centos、redhat、freebsd、windows等。需要注意的是,由于客户端操作系统的不同,lvs客户端的配置也就各不相同了。本书中,将以centos及freebsd两种操作系统作为lvs的客户端,给出其直接路由模式DR的配置方法。
● lvs客户端(真实服务器)操作系统是centos时的配置文件
[root@huludao-2 ~]# more /usr/local/bin/lvs_real
#!/bin/bash
#description : start realserver
VIP=61.135.20.16
/etc/rc.d/init.d/functions
case "$1" in
start)
echo " start LVS of REALServer"
/sbin/ifconfig lo:0 $VIP broadcast $VIP netmask 255.255.255.255 up
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
;;
stop)
/sbin/ifconfig lo:0 down
echo "close LVS Directorserver"
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 "Usage: $0 {start|stop}"
exit 1
esac
这里对配置文件里重要的一些项进行说明:
1、 vip(virtual ip)。直接路由模式的vip必须跟服务器对外提供服务的ip地址在同一个网段,并且lvs 负载均衡器和其他所有提供相同功能的服务器都使用这个vip.
2、 vip被绑定在环回接口lo0:0上,其广播地址是其本身,子网掩码是255.255.255.255。这与标准的网络地址设置有很大的不同。采用这种可变长掩码方式把网段划分成只含一个主机地址的目的是避免ip地址冲突。
3、 echo "1",echo "2" 这段的作用是抑制arp广播。如果不做arp抑制,将会有众多的机器向其他宣称:"嗨!我是奥巴马,我在这里呢!",这样就乱套了。
● lvs客户端(真实服务器)操作系统是freebsd时的配置文件
fav1# more /usr/local/bin/lvs_real_bsd
#!/usr/local/bin/bash
#description : start realserver
VIP=61.135.20.16
case "$1" in
start)
echo " start LVS of REALServer"
/sbin/ifconfig lo0 $VIP netmask 255.255.255.255 alias -arp up
;;
stop)
/sbin/ifconfig lo0 alias down
echo "close LVS Directorserver"
/sbin/ifconfig lo0 127.0.0.1 arp up
;;
*)
echo "Usage: $0 {start|stop}"
exit 1
esac
在这里,我们同样对这个配置脚本的某些项进行说明:
1、vip地址设置和arp抑制用 /sbin/ifconfig lo0 $VIP netmask 255.255.255.255 alias -arp up
这么一行就实现了。
我们把这两种操作系统的lvs客户端做个比较,发现freebsd的配置书写上要简洁一些,是不是可以认为freebsd的网络功能比linux强大呢?