nginx利用ngx_stream_core_module實現四層的負載均衡服務。作為四層負載均衡nginx和lvs的區別在于:
lvs工作于內核層,相對來說效率更高,性能更強;
nginx工作于用戶空間;
lvs不會受到套接字數量的限制;
nginx作為四層負載均衡也需要監聽套接字來和客戶端,后臺服務器進行連接,會受到套接字數量限制,不過這個問題可以通過keepalive長連接來避免;
一、實驗環境
此次實驗基于三臺服務器實現,分別負載httpd服務、ssh服務和mysql服務:
-
nginx四層負載均衡器:192.168.11.100
-
內網真實服務器RS-1:192.168.11.201;
-
內網真實服務器RS-2:192.168.11.202;
二、實驗配置步驟:
內網服務器配置:
-
內網兩臺服務器分別安裝nginx、和mysql服務,并開啟相關服務
yum install -y nginx mariadb-server
nginx負載均衡器配置:
-
修改/etc/nginx/nginx.conf配置文件:
#定義http、mysql和ssh的負載均衡集群并調用,默認算法為rr(輪詢)# stream { upstream websrvs { server 192.168.11.201:80; server 192.168.11.202:80; } upstream mysqlsrvs { server 192.168.11.201:3306; server 192.168.11.202:3306; } upstream sshsrvs { server 192.168.11.201:22; server 192.168.11.202:22; } server { listen 80; proxy_pass websrvs; } server { listen 10022; proxy_pass sshsrvs; } }
-
測試是否可行:
-
測試http:
-
測試ssh:
可以看到兩次登錄的主機名完全不一樣
-
測試mysql:
在一個數據庫建立新庫,名字為testdb,另一個不建立,然后用for循環查詢庫即可看到結果:
可以看到每次呈現的數據庫都不一樣,所以說明是通過輪詢方法連接到兩臺不同的數據庫了。
-
原創文章,作者:王子豪,如若轉載,請注明出處:http://www.www58058.com/79335