簡單測試nginx1.90做TCP協議負載均衡的功能


最近工作中需要做TCP層面的負載均衡,以前網站用的反向代理nginx只支持應用層的負載均衡,對於TCP協議是無能為力的,需要使用LVS(linux虛擬服務器)。

LVS的特點是高性能和極復雜的配置、對網絡環境的要求比較高。最近苦於LVS的配置測試,網上的文檔和社區都比較少,按照各種教程配置,TCP報文均無法連通,再往下深究就要去研究公司虛機的網絡結構了...

在尋找LVS配置調試方法時,看到一篇最近的文章講4月28日剛剛發布的nginx1.90,添加了支持TCP協議的負載均衡的,如果只是需要做TCP協議的負載均衡的話,這個是可以滿足需求的。如果涉及到UDP或者傳輸層以上的其他協議,那就必須得繼續死磕LVS了。

下面測試nginx代理TCP協議的配置。

realserver : 10.134.241.68

nginx :10.134.72.166

客戶端:10.129.157.168

TCP監聽端口:2014

一、配置nginx

看官網上的文檔 http://nginx.org/en/docs/stream/ngx_stream_core_module.html

nginx1.90對TCP協議的代理並不是默認開啟的,需要在編譯的時候配置 --with-stream 參數:

nginx.config文件參照官網:

 

stream { upstream cloudsocket { hash $remote_addr consistent; server 10.134.241.68:2014 weight=5 max_fails=3 fail_timeout=30s; } server { listen 2014; proxy_connect_timeout 1s; proxy_timeout 3s; proxy_pass cloudsocket; } }

啟動nginx,發現nginx已經開始監聽2014端口了

 

 

二、測試客戶端連realserver

在客戶端通過telnet連接realserver的2014端口:

在realserver上查看網絡連接:

可以正常連接

 

三、測試客戶端連接nginx

在客戶端通過telnet連接nginx所在服務器的2014端口

在nginx機器上查看網絡連接

在realserver上查看網絡連接

可以注意到nginx是給做了一個TCP連接的中轉。

 

實際上這種負載均衡的方式有點像LVS的  VS/NAT 工作模式,數據報文的發送和接收都要經過負載均衡器,有需要替換的話這兩種技術是可以平滑過渡的。

它可以運算處理能力的瓶頸,但是當用戶請求越來越多時,nginx的處理能力將成為瓶頸


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM