分布式部署服务器的问题
// 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 = ? 应该怎么填**
5个回答
年代过于久远,无法发表回答
若gateway和business在一同个内网,则设置成内网IP,否则设置成公网IP。
手册有说,分布式部署的所有服务器都在一个内网的话$gateway->lanIp就写内网ip。如果不是写外网ip。
我实际操作过程中发现如果你的服务器是阿里云或者腾讯云,并且网络类型是专有网络的话,是没办法监听外网ip的,也就是说服务器是专有网络$gateway->lanIp写外网ip会报Cannot assign requested address的错误。
所以总结下来就是如果你的服务器不在一个局域网,服务器是阿里云或者腾讯云的专有网络服务器,无法组建gatewayWorker分布式系统。如果是经典网络是可以的。
如果所有服务器是一个局域网,lanip设置为局域网ip也是可以组建集群的。
$gateway->lanIp = 'ss.sd.top'; 直接填 域名 就可以这个问题已经解决,可以用,但是 客户链接后,能看到客户登录,但是不能给客户发消息,还有 就是 $_SESSION 也不能用了
据我了解,lanIp不能写域名。lanIp是Gateway所在服务器的内网IP,默认填写127.0.0.1即可。多服务器分布式部署的时候需要填写真实的内网ip,不能填写127.0.0.1。注意:lanIp只能填写真实ip,不能填写域名或者其它字符串,无论如何都不能写0.0.0.0 . 摘自手册
我测试可以,就是客户端链接后,接收不到信息,发消息没有问题
测试 用域名 打开没有错误,就是不能接收数据 ,发数据倒是正常,有没有办法解决?
收不到消息就说明不可以了
我在服务器上值运行了 start_gateway.php 这个 注册服务器不在一个局域网
[attach]1817[/attach]
谢谢回复,问题已经解决 ,解决方法 ,用 2个IP 一个内网 一个外网