在負(fù)載均衡情況下,釋放掉后端服務(wù)器后,會(huì)話請(qǐng)求還一直嘗試之前的ip。請(qǐng)問是什么原因?
[ error ] [2]stream_socket_client(): unable to connect to tcp://172.19.191.91:2918
這臺(tái)172.19.191.91 gateway都已經(jīng)釋放了,
重啟主服務(wù)器,重啟gateway服務(wù)器,重啟這臺(tái)服務(wù)器
還一直報(bào)這個(gè)錯(cuò),配置文件有緩存嗎?
之前分布式部署用的是多臺(tái)Gateway,多臺(tái)BusinessWorker,覺得不合理(主從都配置了一樣的)。
現(xiàn)在的做了如下配置:
SLB層已經(jīng)做了配置,/wss 的請(qǐng)求全部到主服務(wù)器,主服務(wù)器配置Gateway;4臺(tái)從服務(wù)器只配置BusinessWorker。
重啟了所有服務(wù)(線上的)。
問題是:
主服務(wù)器Gateway端口已改成4000,
主從服務(wù)器都已重啟,
4臺(tái)從服務(wù)器還是有非常多的報(bào)錯(cuò)日志:沿用之前的配置邏輯,[ error ] [2]stream_socket_client(): unable to connect to tcp://172.19.191.x:2918
4臺(tái)從服務(wù)器的報(bào)錯(cuò)請(qǐng)求 172.19.191.x:2918 是之前遺留的? 都8個(gè)小時(shí)了,還在報(bào)錯(cuò)。
如果是轉(zhuǎn)發(fā)策略或者健康檢查問題,應(yīng)該體現(xiàn)在最新的配置上,4000之類的端口問題。
2918端口是gateway機(jī)器的的內(nèi)部監(jiān)聽端口吧? 以及根據(jù)描述,這么看應(yīng)該不是SLB這邊的問題。
按理說不論是下線gateway集群的服務(wù)器還是下線businessworker集群的服務(wù)器,任意一方都能自動(dòng)感知這一事件并自動(dòng)切斷與對(duì)方的通信,你嘗試把 register 服務(wù)也重啟下試試看。
register服務(wù) Gateway(端口改成了4000)都配置在主服務(wù)器上;從服務(wù)器只配置BusinessWorker。
主從服務(wù)器的workman,php-fpm,nginx都重啟了。一直找不到報(bào)錯(cuò)的緣由,報(bào)錯(cuò)邏輯還是幾小時(shí)前的配置。
先確定好這個(gè)問題:原來配置的gateway的2918,即現(xiàn)在的4000是gateway的對(duì)外暴露的監(jiān)聽端口??? 如果是這樣那么從服務(wù)器 businessworker 為什么要連接這個(gè)端口呢?
之前是:1主4從都配有g(shù)ateway,暴露的監(jiān)聽端口是29xx; 修改之后只有1主服務(wù)器gateway的4000端口對(duì)外監(jiān)聽。我也是納悶的問題是:從服務(wù)器 businessworker為什么還一直去連接29xx端口。
@614:就算是用戶保持在聊天室不操作,收到服務(wù)器的報(bào)錯(cuò)響應(yīng),會(huì)重連,連到SLB,SLB分配到新的gateway,暴露的端口只有新的40xx,為什么是1天前的配置監(jiān)聽端口29xx
1、gatewayworker 本身沒有什么額外的配置緩存類的東西,各端的通信地址均交由register服務(wù)托管,上線或下線服務(wù)都是實(shí)時(shí)更新的;
2、綜合上下文看,前面有SLB這層,那么這個(gè)gateway端口就不應(yīng)該對(duì)外暴露啊,應(yīng)該只暴露給SLB就好。
3、沒有具體上下文,一切都不好說,日志是一方面,根據(jù)你前后的各種錯(cuò)誤提示,建議你最好tcpdump 抓包再看看確認(rèn)是否內(nèi)網(wǎng)機(jī)器或者腳本在連接gateway端口,要么就摘掉機(jī)器一步一步摸排,肯定能找出原因。