LVS 负载均衡(四)tun模式

一、规划

<img src="https://www.361way.com/wp-content/uploads/2016/05/lvstun.png" title="lvstun" alt="lvstun" height="487" width="718" />



这里以三台RS主机为例,其中两台和DR主机在同一网段,另外一台主机需要需要通过tun进行连通 。具体网络部分的配置可以参看 <a target="_blank" href="https://www.361way.com/linux-tunnel/5199.html" rel="noopener">Linux ipip隧道及实现</a> 。



<br />
RIP1=192.168.1.131
RIP2=192.168.1.132
RIP3=192.168.0.100

二、lvs-tun配置

1、director主机上的配置

#!/bin/sh
# description: start LVS of Directorserver
VIP=192.168.1.140(注意,lvs server那台机器2个ip,一个是vip,一个是本身ip例如192.168.25.42)
RIP1=192.168.1.131
RIP2=192.168.1.132
RIP3=192.168.0.100
. /etc/rc.d/init.d/functions
case "$1" in
    start)
        echo " start LVS of DirectorServer"
        # set the Virtual IP Address
        /sbin/ifconfig tunl0 $VIP broadcast $VIP netmask 255.255.255.0 up
        /sbin/route add -host $VIP dev tunl0
        #Clear IPVS table
        /sbin/ipvsadm -C
        #set LVS
        /sbin/ipvsadm -A -t $VIP:80 -s rr
        /sbin/ipvsadm -a -t $VIP:80 -r $RIP1:80 -i
        /sbin/ipvsadm -a -t $VIP:80 -r $RIP2:80 -i
        #/sbin/ipvsadm -a -t $VIP:80 -r $RIP3:80 -i
        #Run LVS
        /sbin/ipvsadm
        #end
    ;;
    stop)
        echo "close LVS Directorserver"
        ifconfig tunl0 down
        /sbin/ipvsadm -C
    ;;
    *)
        echo "Usage: $0 {start|stop}"
        exit 1
esac 

2、realserver主机的配置

<br />
#!/bin/sh
# description: Config realserver tunl port and apply arp patch
VIP=192.168.1.140
. /etc/rc.d/init.d/functions
case "$1" in
    start)
        echo "Tunl port starting"
        ifconfig tunl0 $VIP netmask 255.255.255.0 broadcast $VIP up
        /sbin/route add -host $VIP dev tunl0
        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
        sysctl -p
        ;;
    stop)
        echo "Tunl port closing"
        ifconfig tunl0 down
        echo 1 > /proc/sys/net/ipv4/ip_forward
        echo 0 > /proc/sys/net/ipv4/conf/all/arp_announce
        ;;
    *)
        echo "Usage: $0 {start|stop}"
        exit 1
esac
本质上来说,lvs tun模式和lvs dr模式在配置方法上没有区别,都需要将浮动地址在每台主机上进行配置 。需要在realserver服务器上配置arp的相关参数 。无非在操作之间,需要将不同网段的主机先打通进同一个网络。

三、总结

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



<img src="https://www.361way.com/wp-content/uploads/2016/05/lvs-diff.png" title="lvs-diff" alt="lvs-diff" height="375" width="686" />



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

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注