現(xiàn)在想的部署大概 如下圖
[attach]338[/attach]
問(wèn)題:
1、根據(jù)手冊(cè)分離部署時(shí)是一臺(tái)Gateway,現(xiàn)在有兩臺(tái)Gateway,請(qǐng)問(wèn)BusinessWorker_*的start_businessworker.php里面的registerAddress填哪一臺(tái)呢? 因?yàn)楝F(xiàn)在有兩臺(tái)Gateway
2、兩臺(tái)Gateway的Even.php代碼需要一致嗎?收發(fā)客戶(hù)端消息的時(shí)候執(zhí)行的是Gateway的Event.php還是 BusinessWorker的Even.php呢?
3、Gateway開(kāi)了不同的端口8282與8284兩個(gè)端口,Gateway_1與Gateway_2是一致的代碼,Nginx這邊對(duì)兩個(gè)不同的端口提供負(fù)載均衡,統(tǒng)一向外暴露兩個(gè)針對(duì)8282、8284的端口,客戶(hù)端去連Nginx暴露的兩個(gè)端口,隨機(jī)分配到Gateway_1 Gateway_2上 , 這樣的話(huà)就算Gateway掛掉一個(gè)也沒(méi)問(wèn)題 這樣做可以嗎?
現(xiàn)在就是不知道怎么把兩臺(tái)gateway集群起來(lái) 怎么通訊?
1、GatewayWorker是以register來(lái)區(qū)分集群的,每個(gè)集群都連同一個(gè)register服務(wù),你這里所有Gateway 和BusinessWorker服務(wù)器的registerAddress都填寫(xiě)Gateway1的register地址就可以。
2、Gateway服務(wù)器不需要Event.php,Event.php運(yùn)行在BusinessWorker服務(wù)器上。
3、為什么要暴露兩個(gè)端口?暴露兩個(gè)端口,客戶(hù)端連接的時(shí)候就需要選擇一個(gè)端口去連,如果這端口的gateway掛了,那么后續(xù)所有連8282的客戶(hù)端都會(huì)連不上。
一般多協(xié)議的時(shí)候才需要暴露多個(gè)端口,每種端口一種協(xié)議。如果是只有一個(gè)協(xié)議,最好每個(gè)gateway統(tǒng)一的端口。
另外不建議用nginx做負(fù)載均衡,因?yàn)閱螜C(jī)網(wǎng)卡吞吐量/帶寬有限,可能會(huì)成為瓶頸。
建議用lvs keepalived或者dns做負(fù)載均衡。
懂了,就是register地址只有一個(gè),然后所有g(shù)ateway與businessworker連這個(gè)注冊(cè)地址,至于gateway與businessworker之間的工作是不用管的,只需要考慮gateway之間的負(fù)載均衡就行了哇,最后一個(gè)問(wèn)題 lanIp只能是內(nèi)網(wǎng)IP,協(xié)議那邊的ip是公網(wǎng)ip吧?
對(duì),只需要考慮Gateway之間的負(fù)載均衡。lanIp最好是內(nèi)網(wǎng)IP,如果服務(wù)器不在同一個(gè)內(nèi)網(wǎng),也可以公網(wǎng)IP。gateway監(jiān)聽(tīng)0.0.0.0就可以,代表Gateway監(jiān)聽(tīng)所有網(wǎng)卡,包括內(nèi)網(wǎng)和外網(wǎng)。