一、规划

lvstun
lvstun

这里以三台RS主机为例,其中两台和DR主机在同一网段,另外一台主机需要需要通过tun进行连通 。具体网络部分的配置可以参看 Linux ipip隧道及实现

1RIP1=192.168.1.131
2RIP2=192.168.1.132
3RIP3=192.168.0.100

二、lvs-tun配置

1、director主机上的配置

 1#!/bin/sh
 2# description: start LVS of Directorserver
 3VIP=192.168.1.140(注意,lvs server那台机器2个ip,一个是vip,一个是本身ip例如192.168.25.42)
 4RIP1=192.168.1.131
 5RIP2=192.168.1.132
 6RIP3=192.168.0.100
 7. /etc/rc.d/init.d/functions
 8case "$1" in
 9    start)
10        echo " start LVS of DirectorServer"
11        # set the Virtual IP Address
12        /sbin/ifconfig tunl0 $VIP broadcast $VIP netmask 255.255.255.0 up
13        /sbin/route add -host $VIP dev tunl0
14        #Clear IPVS table
15        /sbin/ipvsadm -C
16        #set LVS
17        /sbin/ipvsadm -A -t $VIP:80 -s rr
18        /sbin/ipvsadm -a -t $VIP:80 -r $RIP1:80 -i
19        /sbin/ipvsadm -a -t $VIP:80 -r $RIP2:80 -i
20        #/sbin/ipvsadm -a -t $VIP:80 -r $RIP3:80 -i
21        #Run LVS
22        /sbin/ipvsadm
23        #end
24    ;;
25    stop)
26        echo "close LVS Directorserver"
27        ifconfig tunl0 down
28        /sbin/ipvsadm -C
29    ;;
30    *)
31        echo "Usage: $0 {start|stop}"
32        exit 1
33esac 

2、realserver主机的配置

 1#!/bin/sh
 2# description: Config realserver tunl port and apply arp patch
 3VIP=192.168.1.140
 4. /etc/rc.d/init.d/functions
 5case "$1" in
 6    start)
 7        echo "Tunl port starting"
 8        ifconfig tunl0 $VIP netmask 255.255.255.0 broadcast $VIP up
 9        /sbin/route add -host $VIP dev tunl0
10        echo "1" >/proc/sys/net/ipv4/conf/tunl0/arp_ignore
11        echo "2" >/proc/sys/net/ipv4/conf/tunl0/arp_announce
12        echo "1" >/proc/sys/net/ipv4/conf/all/arp_ignore
13        echo "2" >/proc/sys/net/ipv4/conf/all/arp_announce
14        sysctl -p
15        ;;
16    stop)
17        echo "Tunl port closing"
18        ifconfig tunl0 down
19        echo 1 > /proc/sys/net/ipv4/ip_forward
20        echo 0 > /proc/sys/net/ipv4/conf/all/arp_announce
21        ;;
22    *)
23        echo "Usage: $0 {start|stop}"
24        exit 1
25esac

本质上来说,lvs tun模式和lvs dr模式在配置方法上没有区别,都需要将浮动地址在每台主机上进行配置 。需要在realserver服务器上配置arp的相关参数 。无非在操作之间,需要将不同网段的主机先打通进同一个网络。

三、总结

单director下三种模式的LVS配置到此已经告一段落。三种模式来说,各自有各自的特色,具体可以参看如下列表。

lvs-diff
lvs-diff

LVS本身由于活动在四层,内部实现起来较nginx和haproxy要简单,因为简单,所以高效(毕竟只专注于做一件事)。但本身也有一些局限性,比如,不支持基本的防护、director节点本身存在单节点问题,对后端服务器的状态没有健康检测机制等。后面的部分,会针对以下问题,结合keepalive、结合heartbeat解决LVS本身的一些不足。也会介绍下基于ipvs封装的商业软件如redhat的Piranha 。