kavin

tun方式的负载均衡集群设置举例

kavin 运维技术 2022-11-16 577浏览 0

前面我们学习了nat的负载均衡集群的配置过程,接下来就是另一种配置方式了——lvs/tun的设置过程。同样,我们通过对TUN的理解和架构的介绍,来完成脚本的设置。还望大家可以做一个对比学习,之后还有一种设置方式,敬请期待。

设定LVS/TUN方式的负载均衡集群

TUN是指IP Tunneling,它的转发流程是:Director机器收到外界请求,按相应的调度算法将其通过IP隧道发送到相应Real Server,Real Server处理完该请求后,将结果数据包直接返回给客户。至此完成一次负载调度。

最简单的LVS/TUN方式的负载均衡集群架构下图所示。

LVS/TUN使用IP Tunneling技术,在Director机器和Real Server机器之间架设一个IP Tunnel,通过IP Tunnel将负载分配到Real Server机器上。Director和Real Server之间的关系比较松散,可以是在同一个网络中,也可以是在不同的网络中,只要两者能够通过IP Tunnel相连就行。收到负载分配的Real Server机器处理完后会直接将反馈数据送回给客户,而不必通过Director机器。实际应用中,服务器必须拥有正式的IP地址用于与客户机直接通信,并且所有服务器必须支持IP隧道协议。

LVS/TUN方式的集群简图

LVS/TUN方式的集群简图

这里将所有LVS的配置命令写到一个可执行脚本,脚本内容如下:

#!/bin/bash 
#CloseIPForwarding 
echo0>/proc/sys/net/ipv4/ip_forward 
ifconfigeth0down 
ifconfigeth0192.168.0.253netmask255.255.255.0broadcast192.168.0.255up 
ifconfigeth0:0192.168.0.254netmask255.255.255.255broadcast192.168.0.254up 
ipvsadm-C 
ipvsadm-A-t192.168.0.254:80-swlc 
ipvsadm-a-t192.168.0.254:80-r192.168.0.1-i-w3 
ipvsadm-a-t192.168.0.254:80-r192.168.1.201-i-w1 
ipvsadm

#p#将上面的脚本保存为/root/lvs_tun.sh。然后加上可执行属性,执行它:

#chmoda+x/root/lvs_tun.sh 
#/root/lvs_tun.sh

运行此脚本之后应该出现如下信息:

#./lvs-tun.sh 
IPVirtualServerversion1.0.9(size=4096) 
ProtLocalAddress:PortSchedulerFlags 
->RemoteAddress:PortForwardWeightActiveConnInActConn 
TCP192.168.0.254:httpwlc 
->192.168.1.201:httpTunnel100 
->192.168.0.1:httpTunnel100

另外在每台Real Server上还要执行如下的命令:

ifconfigtunl0192.168.0.254netmask255.255.255.255broadcast192.168.0.254up 
routeadd-host192.168.0.254devtunl0 
echo1>/proc/sys/net/ipv4/conf/all/hidden 
echo1>/proc/sys/net/ipv4/conf/tunl0/hidden

注意Real Server的内核必须打上修正ARP问题的内核补丁,如Linux2.4.20的内核是hidden-2.4.20pre10-1.diff,编译内核的方法参见Director机器。

通过本例来简单评价一下LVS/TUN负载均衡集群方式。该方式中Director将客户请求分配到不同的Real Server,Real Server处理请求后直接回应给用户,这样Director就只处理客户机与服务器的一半连接,极大地提高了Director的调度处理能力,使集群系统能容纳更多的节点数。另外TUN方式中的Real Server可以在任何LAN或WAN上运行,这样可以构筑跨地域的集群,其应对灾难的能力也更强,但是服务器需要为IP封装付出一定的资源开销,而且后端的Real Server必须是支持IP Tunneling的操作系统。

继续浏览有关 网络 的文章
发表评论