天天看點

NAT方式下的TCP負載均衡

TCP負載均衡說簡單點就是反用NAT位址轉換,網絡解釋為:NAT負載均衡将一個外部IP位址映射為多個内部IP位址,對每次連接配接請求動态地轉換為一個内部伺服器的位址,将外部連接配接請求引到轉換得到位址的那個伺服器上,進而達到負載均衡的目的。

<a href="http://linuxtro.blog.51cto.com/attachment/201102/22/1239505_1298367754ZBMD.gif"></a>

為了簡化實驗步驟,重在說明問題。模拟試驗中使用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

&lt;cr&gt;

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 ?

參數“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,顯示結果為:

<a href="http://linuxtro.blog.51cto.com/attachment/201102/22/1239505_1298367764QRIp.jpg"></a>

如果是在 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将不進行轉換

本文轉自 linuxtro 51CTO部落格,原文連結:http://blog.51cto.com/linuxtro/498274,如需轉載請自行聯系原作者

繼續閱讀