摘要:為什么要負載均衡隨著設備連接數增多,單臺服務器支撐的長連接數有限,這個時候程序架構就需要改變,一般都會采取橫向擴展,增加多臺服務器程序。比如說一些等硬件設備或者因為前期沒有考慮負載均衡而導致的遺留老項目。例如可以通過開啟負載均衡功能來實現。
為什么要負載均衡
隨著設備連接數增多,單臺服務器支撐的TCP長連接數有限,這個時候程序架構就需要改變,一般都會采取橫向擴展,增加多臺服務器程序。怎么將TCP長連接均衡的路由到不同的服務器,這個時候就需要實現負載均衡了。
兩種不同的場景和方案目前筆者想到的兩種應用場景是:
客戶端實現比較簡單,所有客戶端都會連接同一個ip域名和端口。客戶端不會去請求可用服務器列表,然后去根據具列表選擇不同的服務器。比如說一些DTU等硬件設備或者因為前期沒有考慮負載均衡而導致的遺留老項目。
解決方案:
在目標服務器上做TCP負載均衡,轉發到不同的服務器上,但是這種方案需要解決負載均衡服務器的單點故障。例如可以通過Nginx開啟TCP負載均衡功能來實現。
客戶端本身就實現了請求可用服務器列表,然后根據列表去連接不同的服務器。
方案一:Nginx實現負載均衡1. 安裝Nginx
參考的資料:https://my.oschina.net/ouyush...
參考的資料:http://www.jiagoumi.com/work/...
(0)安裝依賴的軟件
(1)下載:wget http://nginx.org/download/ngi...
(2)解壓:執行指令
tar -xzvf nginx-1.12.2.tar.gz -C 你的目錄
(3)配置: 需要添加 with-stream參數 nginx tcp負載均衡需要
./configure --prefix=/opt/nginx-1.9.3 --with-http_stub_status_module --with-http_realip_module --with-http_ssl_module --with-pcre --with-http_realip_module --with-stream
(4)make
(5)make install
nginx會安裝到特定的文件夾 /opt,如果一開始把源碼包下載到改目錄,編譯安裝時會提示類似錯誤
把源碼包移到其它目錄就能解決。
2.修改nginx.conf添加負載均衡配置
官方樣例:
worker_processes auto; error_log /var/log/nginx/error.log info; events { worker_connections 1024; } stream { upstream backend { hash $remote_addr consistent; server backend1.example.com:12345 weight=5; server 127.0.0.1:12345 max_fails=3 fail_timeout=30s; server unix:/tmp/backend3; } upstream dns { server 192.168.0.1:53535; server dns.example.com:53; } server { listen 12345; proxy_connect_timeout 1s; proxy_timeout 3s; proxy_pass backend; } server { listen 127.0.0.1:53 udp; proxy_responses 1; proxy_timeout 20s; proxy_pass dns; } server { listen [::1]:12345; proxy_pass unix:/tmp/stream.socket; } }
自定義測試配置為:
#tcp load balance stream{ #更多更詳細的參數,查看文檔或網絡 upstream netty_test{ server 192.168.0.26:6666 weight=1; server 192.168.0.26:6667 weight=1; } server{ listen 6665; proxy_pass netty_test; } } http { include mime.types; default_type application/octet-stream; ...
以上配置只是為了方便測試,因此配置的較為簡陋,生產環境中,詳細配置請看官方樣例。
相關端口不要忘記開放,會存在防火墻導致無法連接的情況。
3.連接測試
啟動兩個netty服務器程序,在生產環境中會部署到不同的服務器,這里測試,在同一臺PC上啟動兩個netty程序,端口分別為6666和6667。使用客戶端連接192.168.0.26:6665,當建立4個連接時,客戶端會被平均路由到 192.168.0.26:6666和6667兩個server
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/39882.html
摘要:路由更新不及時問題修復默認長度調整為客戶端配置優化升級依賴版本,如等簡介是一個分布式服務框架,提供穩定高性能的遠程服務調用功能。擁有高性能分布式注冊中心負載均衡服務治理等特性。 Release Notes 1、LRU路由更新不及時問題修復; 2、JettyClient Buffer 默認長度調整為5M; 3、Netty Http客戶端配置優化; 4、升級依賴版本,如netty/min...
摘要:是個不太干凈協議。目前此協議的受眾的也不僅僅是開發者。借助協議進行握手,握手成功后,就會變身為通道,從此與不再相見。如此操作,可以盡量避免普通請求被誤認為協議。它包含四個事件和兩個動作發送和關閉。有類似協議的幀格式,在此不做過多解釋。 WebSocket是一種比較新的協議,它是伴隨著html5規范而生的,雖然還比較年輕,但大多主流瀏覽器都已經支持。它使用方面、應用廣泛,已經滲透到前后端...
閱讀 2655·2021-11-24 10:44
閱讀 1896·2021-11-22 13:53
閱讀 1907·2021-09-30 09:47
閱讀 3704·2021-09-22 16:00
閱讀 2431·2021-09-08 09:36
閱讀 2312·2019-08-30 15:53
閱讀 2790·2019-08-30 15:48
閱讀 976·2019-08-30 15:44