上一篇中,我们对LVS作了一个简要的介绍,我们对LVS已经有了简单的认识,从这篇开始,我们将对LVS的如何使用进行以及其相关原理进行学习。
本篇内容,我们将讲述LVS负载均衡技术中的使用NAT实现负载均衡,我们将共同学习:
(1)、LVS-NAT的架构拓扑以及原理。
(2)、使用LVS-NAT技术的具体操作以及注意事项。
一、LVS-NAT的架构拓扑以及原理
NAT全称是“Natwork Address Translation”中文译为网络地址转换转换技术。它通过对数据包地址的重写,使得多台主机在只有一个公网IP的情况下仍然可以照常的与外网通讯。而LVS-NAT技术则是通过网络地址转换技术,依赖LVS的核心调度器,根据我们预设的负载均衡调度算法对请求的数据包进行目标地址的重写,最终使数据包分派到后方的真是服务器,对于真实服务器响应的报文,报文将原路返回到LVS中,LVS将再次改写报文数据包中的源地址并推送到网卡,完整整个的负载均衡工作。
这句话可能并不是特别好理解,我们结合这个拓扑图来解析。当一个用户从Internat访问您的域名时,电信的DNS会吧域名解析为您的公网IP,继而访问到您的主机(譬如这里访问了jhonge.net,面向公网的网卡也假定为eth0),当请求到达LVS服务器后,数据包从eth0网卡进入服务器,ipvsadm组件将根据预设的负载均衡算法对数据包的目标IP进行改写,再通过Linux的路由转发功能,数据包从eth1网卡出来,经过交换机,最终到达了真实服务器。
而真实服务器在接收到这些请求后会进行处理并响应,响应的报文按照原路,经过交换机到达LVS服务器,数据包从eth1网卡进入服务器,经过ipvsadm改写源地址后从eth0网卡推送出来(到Internat中),完整整个请求-响应的负载均衡工作。
使用这种LVS-NAT作为负载均衡有这么几点的好处:
(1)、您只需要一个公网IP即可使用负载均衡(而其他的则需要多个,后面几篇会讲到)。
(2)、您可以保证内外网的分离,避免或减少内网环境被直接访问的潜在危险。
(3)、拓扑结构非常简单,也非常清晰。
(4)、虽然使用LVS-NAT时,LVS服务器看起来可能是潜在的瓶颈,但由于LVS-NAT的报文转发性能很高基本可以达到网卡上限,相对而言,那小水管般的网络更可能成为您的瓶颈所在。
二、使用LVS-NAT技术的具体操作以及注意事项
简单的说了LVS-NAT的拓扑以及原理之后,我们接下来讲解LVS-NAT的实操。
我这里总共准备了三台CentOS服务器,它们分别是:
作为LVS的服务器:eth0(充当公网):192.168.1.100/24、eth1(充当私网):192.168.21.55/24
真实服务器A:eth0:192.168.21.201/24 gw:192.168.21.55
真实服务器B:eth0:192.168.21.202/24 gw:192.168.21.55
要配置LVS之前,请确保您的LVS服务器已经发安装了ipvsadm,比较简单的方式就是直接从yum源中装一个回来即可。
接下来我们需要对LVS服务器进行配置(先实现,后解析)。
首先我们打开路由转发功能:
echo '1'>/proc/sys/net/ipv4/ip_forward
接着配置我们的ipvsadm
ipvsadm -C #清空ipvsadm
ipvsadm -A -t 192.168.1.100:80 -s rr #指定使用LVS的ip及端口
ipvsadm -a -t 192.168.1.100:80 -r 192.168.21.201:80 -m #注册一台真实机器
ipvsadm -a -t 192.168.1.100:80 -r 192.168.21.202:80 -m #再注册一台真实机器
这样,我们就很简单的完成了LVS-NAT的配置了,超级简单。
这里有几点需要注意的地方:
(1)、请确认机器之间是可以通讯的(废话了)。
(2)、确认LVS服务器的路由转发功能已经开启,否则数据包将无法通过数据包进行转发。
(3)、小心真实服务器中的网关,请确保指向LVS服务器。
(4)、简单解析一下上面参数的意思:
-t:表示使用的是TCP协议;
-A:表示添加一台转发规则;
-a:表示添加一台真是服务器;
-s:表示设置转发规则,旁边的rr表示使用“Round Robin”也就是普通的轮询;
-m:则指定它使用LVS-NAT工作模式;
-r:表示真实服务器的地址及端口;
嗯,至此,LVS-NAT已经讲解完毕,下一篇中,我们将对LVS-Tun进行讲解,我们下回见。