上一篇中,我们讲解了LVS的IP隧道模式,IP隧道模式虽然功能强大,但是却远没有设计精巧的直接路由模式常见,本篇中,我们将讲解LVS IP负载均衡技术中的最后一个技术——直接路由模式(LVS-DR)。
在本篇内容中,我们将进行讲解:
(1)、LVS-DR的架构拓扑以及原理。
(2)、LVS-DR模式的具体操作。
(3)、拓展阅读。
一、直接路由模式的架构拓扑以及原理
按照惯例,先上一个艹图:
是的,您没有看错,直接路由模式的物理拓扑图跟IP隧道模式是一模一样的。同样的来自用户的数据包也是先通过LVS然后进入真实服务器,而真实服务器响应所发出的数据包则直接“回送”到用户手中,完成整套的“请求-响应”负载均衡工作。事实上,直接路由模式和IP隧道模式还是存在一些不同之处,下面我将通过列举直接路由模式的优缺点的方式来标注它们的异同:
使用直接路由模式,至少拥有以下优点:
1、兼容性更好(不再走IP隧道,不需要考虑当前版本的Linux是否支持)
2、吞吐量也比NAT更高(这点和IP隧道相同)
3、工作的OSI层级更低(比IP隧道还低,因此效率更高)
4、没有IP隧道的消耗,性能更好
更多……
但同样的,也会存在以下的缺点:
1、与IP隧道一样,整套集群需要多个公网IP
2、与IP隧道一样,所有的真实服务器都暴露在外网之中,增加潜在的危险
3、直接路由模式无法穿越网段,因此所有的内网服务器只能处于一个局域网内。
二、直接路由模式的具体操作
我们这里有几台机器,其参数如下:
LVS服务器:eth0:192.168.1.100/24
真实服务器A:eth0:192.168.1.201/24
真实服务器B:eth0:192.168.1.202/24
VIP:192.168.1.56
首先我们先对LVS服务器进行配置:
ifconfig eth0:0 192.168.1.56 netmask 255.255.255.255 up
route add -host 192.168.192.56 dev eth0:0
ipvsadm -C
ipvsadm -A -t 192.168.1.56:80 -s rr
ipvsadm -a -t 192.168.1.56:80 -r 192.168.1.201 -g
ipvsadm -a -t 192.168.1.56:80 -r 192.168.1.202 -g
然后配置真实服务器(A与B一样配置):
ifconfig lo:0 192.168.1.56 netmask 255.255.255.255
route add -host 192.168.1.56 dev lo:0
echo '1'>/proc/sys/net/ipv4/conf/lo/arp_ignore
echo '1'>/proc/sys/net/ipv4/conf/all/arp_ignore
echo '2'>/proc/sys/net/ipv4/conf/lo/arp_announce
echo '2'>/proc/sys/net/ipv4/conf/all/arp_announce
可以看出,使用直接路由模式和使用IP隧道模式的配置脚本非常类似,区别就只是添加真是服务器时,负载均衡模式设置为“g(gateway)”。
三、拓展阅读
直接路由模式转发报文的方式是通过改变数据包的MAC地址的方式,因此它无法穿越vlan,这种特性规定了它必须工作在同一个局域网之内,这是它的弱势之处,但这个弱势也正是它的优势,由于这是直接工作在二层协议之中,无需再对上层进行操作,因此这种三角通讯网络的效率会进一步提高,以下是它的简图:
好的,直接路由模式就讲这么多了,下一篇我们再对LVS的一些其他知识进行讲解,我们下回见。