利用NAT实现TCP负载均衡原理

来源:互联网 发布:网易和暴雪 知乎 编辑:程序博客网 时间:2024/06/05 08:28

1.1 使用NAT实现TCP负载均衡

可以通过目的地址循环转换实现服务器的TCP负载均衡,可以把一个虚拟主机映射到多个真实的主机(如Web服务器)上。虚拟主上每次发起的新TCP会话将与一个不同的真实主机进行。通过NAT,你可以在你的内部网络建立多个真实主机,以分担众多用户对一个虚拟主机访问的负荷。每次从外部网络发起的新会话所对应的真实主机的循环是通过对目的地址以地址池的方式进行轮回转换实现的。它是一种反向NAT转换,是对目的地址的转换,而不是对源地址的转换。

1.1.1 利用NAT实现TCP负载均衡原理

下面以一个示例介绍利用NAT实现TCP负载均衡的原理。示例网络结构如图5-21所示。在本示例中,内部网络有多个真实服务器主机,IP地址分别是1.1.1.1、1.1.1.2、1.1.1.3……。而对应的全局地址(虚拟主机)只有一个,那就是1.1.1.127。外部用户对内部的真实主机访问时,NAT路由器会会截获得访问的数据包,把目的地址以以循环方式把目的地址转换为对应的真实主机上,这样就可以完成内部真实主机(服务器)的TCP负载均衡。

 (点击查看大图)图5-21  利用NAT实现TCP负载均衡示例网络结构

下面是具体的转换原理示例。

(1)外部网络用户主机B(IP地址为9.6.7.3)发起与虚拟主机(内部全局地址)1.1.1.127的连接。此时数据包中的源地址为外部本地地址9.6.7.3,目的地址为虚拟主机地址1.1.1.127。

(2)当路由器接收到连接请求数据包时,创建一个内部网络中真实主机(如1.1.1.1)进行关联的新的NAT转换条目。

(3)NAT路由器把连接请求的数据包中的目的地址用真实主机的本地地址进行替换(源地址不变),然后继续发送连接请求数据包。

(4)内部网络中真实主机1.1.1.1接收到这个连接请求数据包,并发出一个应答数据包。应答数据包中的源地址是内部真实主机本地地址(1.1.1.1),目的地址为外部网络主机B的IP地址(9.6.7.3)。

(5)当NAT路由器接收到这个应答数据包后,使用内部本地地址和端口号,以及外部地址和端口号作为关键字在NAT表中进行查找。找到后把应答包中的源地址转换成虚拟主机地址(内部全局地址)进行替换(目的地址不变),继续转发应答数据包。直接外部网络用户收到应答数据包。

后面的转换过程就是前面的重复,但下一次转换时虚拟主机所对应的内部主机本地地址不再是1.1.1.1,可能是1.1.1.2,或者1.1.1.3……。这是一个动态NAT转换,不是静态的。

原创粉丝点击