分布式部署服务器的问题

nijialong
// 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 = ? 应该怎么填**
2979 5 0
5个回答

phpcreeper

若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 也不能用了 

  • six 2019-03-12

    据我了解,lanIp不能写域名。lanIp是Gateway所在服务器的内网IP,默认填写127.0.0.1即可。多服务器分布式部署的时候需要填写真实的内网ip,不能填写127.0.0.1。注意:lanIp只能填写真实ip,不能填写域名或者其它字符串,无论如何都不能写0.0.0.0 . 摘自手册

  • nijialong 2019-03-12

    我测试可以,就是客户端链接后,接收不到信息,发消息没有问题

  • nijialong 2019-03-12

    测试 用域名 打开没有错误,就是不能接收数据 ,发数据倒是正常,有没有办法解决?

  • six 2019-03-13

    收不到消息就说明不可以了

nijialong

我在服务器上值运行了 start_gateway.php 这个  注册服务器不在一个局域网 
[attach]1817[/attach]
 

  • 暂无评论
nijialong

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

  • 暂无评论
年代过于久远,无法发表回答
×
🔝