作者:雷明彬
[摘要]本文先介绍了随电子商务的发展,需要提供更高负载的WEB服务,然后介绍了网络地址转换的种类和原理,最后给出了一个利用网络地址转换达到电子商务网站WEB服务负载均衡的实现例子。
目前,电子商务是最为活跃的一种网络应用,而作为电子商务的基础平台——电子商务网站的WEB服务是开展电子商务的第一步,其负载往往是非常重的。而一般的做法是在建立网站WEB服务的初期,用于网站的WEB服务器的配置都是当时够用即可并且只有一台。随着业务的发展,该服务器的负载就越来越重,甚至到了不能容忍的地步。这时一般的思路是要么投入配置更高的服务器,原有服务器不再使用(但如果业务继续发展,那这种办法就会不停的更换高配置的服务器);
要么再投入一台可以满足分担增长负载的服务器,原有服务器继续使用(两台提供同一服务),但原有服务器和新的服务器要提供相同的服务那必须要购置相应的负载均衡的硬件或软件,购置这种负载均衡的硬件或软件的成本可能比更换更高配置的服务器还高。有没有一种不购置负载均衡的硬件或软件,但可以达到它的效果呢?笔者经过对网络设备功能的研究和分析,得出一种利用网络设备(一般是网络中的路由器或防火墙)提供的网络地址转换来实现电子商务网站利用多台服务器提供负载均衡的方法。
一、地址转换概述
网络地址转换(NAT)是用于将一个地址域(如专用Intranet)映射(或翻译)到另一个地址域(如Internet)的标准方法。NAT技术使得一个采用保留地址或非注册地址的网络可以通过注册的地址连接到外部世界,位于内部网络和外部网络中的NAT设备(一般是路由器或防火墙)在发送数据包之前,负责把内部非注册地址翻译成注册地址。
NAT的翻译可以采取静态翻译和动态翻译两种。静态翻译是将内部地址和外部地址一对一对应。动态翻译是当需要翻译时,从一个地址池中选择一个没有使用的地址来翻译,如果允许多个地址翻译为一个地址,就是端口地址转换。地址转换时,转换设备上接内部网络的接口称内部接口,接外部网络的接口称外部接口。
网络地址转换一般有两种常用的使用方法:
1.内部源地址翻译
这种方法主要用于提供内部非注册地址访问外部网络的环境。
工作原理:在内部网络主机连接到外部网络时,当第一个数据包到达NAT设备时,NAT设备检查它的NAT表,因为是第一次通过NAT设备,故NAT表中没有相应的翻译,然后NAT设备根据翻译的类型将数据包的内部局部IP(源地址)更换成内部全局地址,再从外部转发出去。外部主机接收到数据包用接受到的内部全局地址来响应,NAT设备接受到外部回来的数据包,再根据NAT表把地址翻译成内部局部IP,从内部转发出去。
2.内部目的地址翻译
这种方法主要用于将内部的多个地址映射到一个虚拟地址,让外部主机可以用一个虚拟地址的方式来访问内部提供的一个服务的环境(即负载重分配)。
工作原理:外部主机向内部虚拟主机通讯,NAT设备接受外部主机的请求并依据NAT表建立与内部某台真实主机的连接,即把内部全局地址翻译成内部局部某个地址,并转发数据包到内部的该台主机,内部主机接受包并作出响应。此时,如果再做第二个连接,NAT设备将根据NAT表将建立与另一个内部主机的连接,并转发数据,依次类推,直到到达内部最后一台主机,然后有从第一台主机开始,从而达到负载重分配的功能。
二、电子商务网站利用NAT技术实现负载均衡的例子
可以在电子商务网站WEB服务器所在网络的路由器上利用网络地址转换的第二种使用方法,来达到多个服务器负载均衡的目的,如某个电子商务网站的网络拓扑如下图:
假设现有三台(可以更多)服务器做电子商务的网站服务器,提供相同的WEB服务:服务器1的ip地址为202.115.144.3、服务器2的ip地址为202.115.144.4、服务器3的ip地址为202.115.144.5,现用202.115.144.2这个虚拟ip地址对外提供网站服务,路由器的快速以太网0(ip地址为202.115.144.1)连接服务器所在交换机,快速以太网1连接外部网络。外部网络的主机访问202.115.144.2的时候,经过路由器的地址转换,就可以达到轮循的使用202.115.144.3、202.115.144.4、202.115.144.5来提供服务,从而达到三台服务器负载均衡的目的。
在思科路由器上实现的步骤如下:
1.定义访问控制列表(即内部虚拟的IP地址)
access-list 1 permit 1 host 202.115.144.2
2.定义地址池(即内部真实的地址段,并且是循环的使用)
ip nat pool real-host 202.115.144.3 202.115.144.5 netmask 255.255.255.0 type rotary
3.定义转换规则(内部目的地址的转换)
ip nat inside destination list 1 pool real-host
4.定义内部接口
interface f0/0
ip nat inside
5.定义外部接口
interface f0/1
ip nat outside
注意:前三个步骤在全局配置模式完成,后两个步骤在接口配置子模式完成。
三、结论
该方法尽管实现了负载均衡,但如果有某台服务器出现了故障,该方法还是会将负载分配给该服务器,结果会导致这部分负载访问无效,必须要在地址池中手工将其去掉,才能保证访问的有效性,这种方法只是提供负载均衡,没有做到高可靠性。但对于一般中小型的企业来说,当某台服务器出现故障时,手工去修改路由器的配置比购置相应的硬件或软件来说还是更值得。