TCP负载均衡说简单点就是反用NAT地址转换,网络解释为:NAT负载均衡将一个外部IP地址映射为多个内部IP地址,对每次连接请求动态地转换为一个内部服务器的地址,将外部连接请求引到转换得到地址的那个服务器上,从而达到负载均衡的目的。
为了简化实验步骤,重在说明问题。模拟试验中使用4个路由器分别代替RouterA、RouterB、Web1和Web2,还有一个交换机,PC1和PC2省略。
实验步骤:
1、 搭建实验环境
如图配置各个IP地址
RouterA(s0/0):192.168.1.2 255.255.255.0
RouterA(fa1/0):10.1.1.10 255.255.255.0
RouterB(s0/0):192.168.1.1 255.255.255.0
Web1(fa0/0): 10.1.1.1 255.255.255.0
Web2(fa0/0): 10.1.1.2 255.255.255.0
在该实验环境下,由于Web1和Web2是路由器充当的,因此要启用远程登陆的虚拟端口,并设置密码。具体命令为:
Web1(config)#line vty 0 4
Web1(config-line)#password 123456
Web1(config-line)#login
Web1(config-line)#exit
2、 在RouterB上添加一条默认路由指向10.1.1.0/24网段,
在Web1和Web2上各添加一条默认路由指向192.168.1.0/24网段。
配置好之后,可以在RouterB上验证一下10.1.1.1或者10.1.1.2,是可以ping通的。
3、 这一步是重点(在RouterA上配置TCP负载均衡):
(1) 定义一个地址池
RouterA(config)#ip nat pool CISCO 10.1.1.1 10.1.1.2 netmask 255.255.255.0 ?
accounting Specify the accounting
add-route Add special route to Virtual Interface
type Specify the pool type
<cr>
RouterA(config)#$ CISCO 10.1.1.1 10.1.1.2 netmask 255.255.255.0 type ?
match-host Keep host numbers the same after translation
rotary Rotary address pool
RouterA(config)#$ CISCO 10.1.1.1 10.1.1.2 netmask 255.255.255.0 type rotary ?
<cr>
参数“type rotary”使该地址池成为一个循环型的,否则,将不能进行负载均衡。
(2) 创建一个允许虚拟IP地址进行的ACL,该IP是服务器集群的IP
RouterA(config)#access-list 1 permit 10.1.1.4 0.0.0.0
(3)指定哪个地址池用于NAT
RouterA(config)#ip nat inside destination list 1 pool CISCO
(4)定义内外接口
RouterA(config)#interface fastEthernet 1/0
RouterA(config-if)#ip nat inside
RouterA(config)#interface serial 0/0
RouterA(config-if)#ip nat outside
4、验证TCP负载均衡
实验环境及实验配置已经完成,接下来就要测试一下,由于路由器无法实验网页显示,可以用telnet的方式来测试配置。在RouterB上通过命令telnet来登录Web1和Web2,显示结果为:
如果是在 10.1.1.1和 10.1.1.2 两台真实服务器上发布不同的网页, 在外部网络的一台主机(192.168.2.2)上访问它们共有的虚拟地址 http://10.1.1.4,NAT 路由器将会把数据包负载均衡到每一台服务器,我们可以看到,主机将轮流访问两台服务器上的主页。
RouterA#show ip nat tra
Pro Inside global Inside local Outside local Outside global
tcp 10.1.1.4:80 10.1.1.1:80 192.168.2.2:1038 192.168.2.2:1038
tcp 10.1.1.4:80 10.1.1.2:80 192.168.2.2:1039 192.168.2.2:1039
值得一提的是:
1、测试的时候不要ping 10.1.1.4,因为这个NAT的负载均衡只对TCP协议,所以要用telnet 10.1.1.4来测试.
2、NAT仅仅基于流量的TCP负载均衡,对于其他流量NAT将不进行转换