摘要:為什么要負(fù)載均衡隨著設(shè)備連接數(shù)增多,單臺(tái)服務(wù)器支撐的長(zhǎng)連接數(shù)有限,這個(gè)時(shí)候程序架構(gòu)就需要改變,一般都會(huì)采取橫向擴(kuò)展,增加多臺(tái)服務(wù)器程序。比如說(shuō)一些等硬件設(shè)備或者因?yàn)榍捌跊](méi)有考慮負(fù)載均衡而導(dǎo)致的遺留老項(xiàng)目。例如可以通過(guò)開(kāi)啟負(fù)載均衡功能來(lái)實(shí)現(xiàn)。
為什么要負(fù)載均衡
隨著設(shè)備連接數(shù)增多,單臺(tái)服務(wù)器支撐的TCP長(zhǎng)連接數(shù)有限,這個(gè)時(shí)候程序架構(gòu)就需要改變,一般都會(huì)采取橫向擴(kuò)展,增加多臺(tái)服務(wù)器程序。怎么將TCP長(zhǎng)連接均衡的路由到不同的服務(wù)器,這個(gè)時(shí)候就需要實(shí)現(xiàn)負(fù)載均衡了。
兩種不同的場(chǎng)景和方案目前筆者想到的兩種應(yīng)用場(chǎng)景是:
客戶(hù)端實(shí)現(xiàn)比較簡(jiǎn)單,所有客戶(hù)端都會(huì)連接同一個(gè)ip域名和端口??蛻?hù)端不會(huì)去請(qǐng)求可用服務(wù)器列表,然后去根據(jù)具列表選擇不同的服務(wù)器。比如說(shuō)一些DTU等硬件設(shè)備或者因?yàn)榍捌跊](méi)有考慮負(fù)載均衡而導(dǎo)致的遺留老項(xiàng)目。
解決方案:
在目標(biāo)服務(wù)器上做TCP負(fù)載均衡,轉(zhuǎn)發(fā)到不同的服務(wù)器上,但是這種方案需要解決負(fù)載均衡服務(wù)器的單點(diǎn)故障。例如可以通過(guò)Nginx開(kāi)啟TCP負(fù)載均衡功能來(lái)實(shí)現(xiàn)。
客戶(hù)端本身就實(shí)現(xiàn)了請(qǐng)求可用服務(wù)器列表,然后根據(jù)列表去連接不同的服務(wù)器。
方案一:Nginx實(shí)現(xiàn)負(fù)載均衡1. 安裝Nginx
參考的資料:https://my.oschina.net/ouyush...
參考的資料:http://www.jiagoumi.com/work/...
(0)安裝依賴(lài)的軟件
(1)下載:wget http://nginx.org/download/ngi...
(2)解壓:執(zhí)行指令
tar -xzvf nginx-1.12.2.tar.gz -C 你的目錄
(3)配置: 需要添加 with-stream參數(shù) nginx tcp負(fù)載均衡需要
./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會(huì)安裝到特定的文件夾 /opt,如果一開(kāi)始把源碼包下載到改目錄,編譯安裝時(shí)會(huì)提示類(lèi)似錯(cuò)誤
把源碼包移到其它目錄就能解決。
2.修改nginx.conf添加負(fù)載均衡配置
官方樣例:
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; } }
自定義測(cè)試配置為:
#tcp load balance stream{ #更多更詳細(xì)的參數(shù),查看文檔或網(wǎng)絡(luò) 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; ...
以上配置只是為了方便測(cè)試,因此配置的較為簡(jiǎn)陋,生產(chǎn)環(huán)境中,詳細(xì)配置請(qǐng)看官方樣例。
相關(guān)端口不要忘記開(kāi)放,會(huì)存在防火墻導(dǎo)致無(wú)法連接的情況。
3.連接測(cè)試
啟動(dòng)兩個(gè)netty服務(wù)器程序,在生產(chǎn)環(huán)境中會(huì)部署到不同的服務(wù)器,這里測(cè)試,在同一臺(tái)PC上啟動(dòng)兩個(gè)netty程序,端口分別為6666和6667。使用客戶(hù)端連接192.168.0.26:6665,當(dāng)建立4個(gè)連接時(shí),客戶(hù)端會(huì)被平均路由到 192.168.0.26:6666和6667兩個(gè)server
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://m.hztianpu.com/yun/39882.html
摘要:路由更新不及時(shí)問(wèn)題修復(fù)默認(rèn)長(zhǎng)度調(diào)整為客戶(hù)端配置優(yōu)化升級(jí)依賴(lài)版本,如等簡(jiǎn)介是一個(gè)分布式服務(wù)框架,提供穩(wěn)定高性能的遠(yuǎn)程服務(wù)調(diào)用功能。擁有高性能分布式注冊(cè)中心負(fù)載均衡服務(wù)治理等特性。 Release Notes 1、LRU路由更新不及時(shí)問(wèn)題修復(fù); 2、JettyClient Buffer 默認(rèn)長(zhǎng)度調(diào)整為5M; 3、Netty Http客戶(hù)端配置優(yōu)化; 4、升級(jí)依賴(lài)版本,如netty/min...
摘要:是個(gè)不太干凈協(xié)議。目前此協(xié)議的受眾的也不僅僅是開(kāi)發(fā)者。借助協(xié)議進(jìn)行握手,握手成功后,就會(huì)變身為通道,從此與不再相見(jiàn)。如此操作,可以盡量避免普通請(qǐng)求被誤認(rèn)為協(xié)議。它包含四個(gè)事件和兩個(gè)動(dòng)作發(fā)送和關(guān)閉。有類(lèi)似協(xié)議的幀格式,在此不做過(guò)多解釋。 WebSocket是一種比較新的協(xié)議,它是伴隨著html5規(guī)范而生的,雖然還比較年輕,但大多主流瀏覽器都已經(jīng)支持。它使用方面、應(yīng)用廣泛,已經(jīng)滲透到前后端...
閱讀 2728·2021-11-24 10:44
閱讀 2049·2021-11-22 13:53
閱讀 2051·2021-09-30 09:47
閱讀 3770·2021-09-22 16:00
閱讀 2513·2021-09-08 09:36
閱讀 2369·2019-08-30 15:53
閱讀 2852·2019-08-30 15:48
閱讀 1078·2019-08-30 15:44