一臺(tái)服務(wù)器A,注冊(cè)地址如下:
$register = new Register('text://0.0.0.0:1238');$gateway = new Gateway("websocket://0.0.0.0:9502");
// gateway名稱,status方便查看
$gateway->name = 'YourAppGateway';
// gateway進(jìn)程數(shù)
$gateway->count = 4;
// 本機(jī)ip,分布式部署時(shí)使用內(nèi)網(wǎng)ip
$gateway->lanIp = '127.0.0.1';
// 內(nèi)部通訊起始端口,假如$gateway->count=4,起始端口為4000
// 則一般會(huì)使用4000 4001 4002 4003 4個(gè)端口作為內(nèi)部通訊端口
$gateway->startPort = 2900;
// 服務(wù)注冊(cè)地址
$gateway->registerAddress = '127.0.0.1:1238';
?單機(jī)應(yīng)用已正常,現(xiàn)在想實(shí)現(xiàn)公網(wǎng)的另一臺(tái)機(jī)子B群發(fā)客戶端,安裝了gatewayClient,我將A服務(wù)器的lanIP改成公網(wǎng)址,B機(jī)子上啟動(dòng),提示不能連接?unable to connect to tcp://127.0.0.1:2900?,客戶端不是和gateway地址通信嗎?為什么會(huì)連接具體的worker端口,我已將1238端口防火墻開放,難道要把2900-2904這些端口也要開放嗎?請(qǐng)指教,不勝感激!
?既然是分布式部署,那么:
?
1、A機(jī)器:$gateway->lanIp = 'x.x.x.x'; //x.x.x.x不能是127.0.0.1啦,只能是A機(jī)器內(nèi)網(wǎng)或公網(wǎng)IP 2、B機(jī)器的GatewayClient必須配置:Gateway::$registerAddress = 'x.x.x.x:1238'; //x.x.x.x指的是A機(jī)器的內(nèi)網(wǎng)或公網(wǎng)IP3、針對(duì)B機(jī)器必須放行如下端口:1238、2900、2901、2902、29034、客戶端是和 gateway的9502端口通信,但是 GatewayClient 則是和gateway的內(nèi)部端口通信的,不是一回事。