有沒有大兄弟搞過這個的?
?1.有一臺云主機(jī),上面部署了
Workerman version:3.5.14? ? ? ? ? PHP version:7.1.6
------------------------ WORKERS -------------------------------
worker? ? ? ? ? ? ? ?listen? ? ? ? ? ? ? ? ? ? ? ? ? ? ? processes status
WebServer? ? ? ? ? ? http://0.0.0.0:4433? ? ? ? ? ? ? ? ?2? ? ? ? ?
ChatBusinessWorker? ?none? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 4? ? ? ? ?
Register? ? ? ? ? ? ?text://0.0.0.0:1236? ? ? ? ? ? ? ? ?1? ? ? ? ?
ChatGateway? ? ? ? ? websocket://0.0.0.0:7272? ? ? ? ? ? 4? ? ? ? ?
2.內(nèi)網(wǎng)有一臺DMZ主機(jī)部署了?ChatGateway? 注冊地址寫的 公網(wǎng)的云主機(jī)的。
?
想實(shí)現(xiàn),在內(nèi)網(wǎng)用戶連內(nèi)網(wǎng)的DMZ主機(jī)(內(nèi)網(wǎng)用戶無法訪問公網(wǎng)),外網(wǎng)是的使用公網(wǎng)IP就行,業(yè)務(wù)邏輯是在外網(wǎng)的,但是發(fā)現(xiàn)跳坑里了,掙扎了一天,還在里面。
DMZ主機(jī)的 start_gateway.php里lanIp設(shè)置成DMZ主機(jī)的外網(wǎng)ip,沒準(zhǔn)可以做到你要的效果
行不通的,這個試過了,之后gateway內(nèi)部通訊2300都不能連了 unable to connect to tcp://XXXXXXX:2300
不能通過公網(wǎng)訪問自己,然后,判斷gateway往云服務(wù)器上的注冊中心注冊時,更改這個127.0.0.1為外網(wǎng)IP后,還是報錯
1、Register、Gateway、BusinessWorker進(jìn)程啟動
2、Gateway、BusinessWorker進(jìn)程啟動后向Register服務(wù)進(jìn)程發(fā)起長連接注冊自己
3、Register服務(wù)收到Gateway的注冊后,把所有Gateway的通訊地址保存在內(nèi)存中
4、Register服務(wù)收到BusinessWorker的注冊后,把內(nèi)存中所有的Gateway的通訊地址發(fā)給BusinessWorker
5、BusinessWorker進(jìn)程得到所有的Gateway內(nèi)部通訊地址后嘗試連接Gateway
6、如果運(yùn)行過程中有新的Gateway服務(wù)注冊到Register(一般是分布式部署加機(jī)器),則將新的Gateway內(nèi)部通訊地址列表將廣播給所有BusinessWorker,BusinessWorker收到后建立連接
?
根據(jù)原理,發(fā)現(xiàn)??判斷內(nèi)網(wǎng)的gateway往云服務(wù)器上的注冊中心注冊時,更改這個127.0.0.1為外網(wǎng)IP后
云端,應(yīng)該是第六步錯誤了,BusinessWorker無法跟內(nèi)網(wǎng)的Gateway通訊,無法訪問到內(nèi)網(wǎng)的2300,不清楚是什么原因,已經(jīng)做了虛擬主機(jī)的映射