分布式部署服务器的问题

// gateway 进程
$gateway = new Gateway("text://0.0.0.0:8282");
// 设置名称,方便status时查看
$gateway->name = 'wlw8282';
// 设置进程数,gateway进程数建议与cpu核数相同
$gateway->count = 1;
// 分布式部署时请设置成内网ip(非127.0.0.1)
$gateway->lanIp = '110.179.197.59';
// 内部通讯起始端口。假如$gateway->count=4,起始端口为2300
// 则一般会使用2300 2301 2302 2303 4个端口作为内部通讯端口 
$gateway->startPort = 6008;
// 心跳间隔
$gateway->pingInterval = 50; //心跳检测时间间隔 单位:秒。如果设置为0代表不做任何心跳检测。
$gateway->pingNotResponseLimit = 0; //客户端连续$pingNotResponseLimit次$pingInterval时间内不发送任何数据则断开链接,并触发onClose
// 心跳数据
$gateway->pingData = '';
// 服务注册地址
$gateway->registerAddress = '110.250.190.138:1236';
 
这个服务器部署在 内网中  通过路由链接的外网  内网地址是 192.168.1.20   外网 是  110.179.197.59'
这个 $gateway->lanIp = ? 应该怎么填
已邀请:

blogdaren - 喜欢分享的PHP码农【http://www.blogdaren.com】

赞同来自:

若gateway和business在一同个内网,则设置成内网IP,否则设置成公网IP。

six

赞同来自:

手册有说,分布式部署的所有服务器都在一个内网的话$gateway->lanIp就写内网ip。如果不是写外网ip。
 
我实际操作过程中发现如果你的服务器是阿里云或者腾讯云,并且网络类型是专有网络的话,是没办法监听外网ip的,也就是说服务器是专有网络$gateway->lanIp写外网ip会报Cannot assign requested address的错误。
 
所以总结下来就是如果你的服务器不在一个局域网,服务器是阿里云或者腾讯云的专有网络服务器,无法组建gatewayWorker分布式系统。如果是经典网络是可以的。
 
如果所有服务器是一个局域网,lanip设置为局域网ip也是可以组建集群的。

nijialong

赞同来自:

$gateway->lanIp = 'ss.sd.top'; 直接填 域名 就可以这个问题已经解决,可以用,但是 客户链接后,能看到客户登录,但是不能给客户发消息,还有 就是  $_SESSION 也不能用了 

nijialong

赞同来自:

我在服务器上值运行了 start_gateway.php 这个  注册服务器不在一个局域网 
6666.png

 

nijialong

赞同来自:

谢谢回复,问题已经解决 ,解决方法 ,用 2个IP 一个内网 一个外网

要回复问题请先登录注册