gatewayworker服务器A和gatewayclient服务器B不在同一台服务器上,在B服务器上调用gatewayclient的方法失败

fqfisher

您好!
gatewayworker服务器已经开放了8282和1238的端口,客户端可以与其建立长连接,但是在gatewayclient服务器B使用Gateway::下面的任何方法都无效,能不能指导下如何配置这些信息?
A服务器上的start_gateway的配置

// gateway 进程,这里使用Text协议,可以用telnet测试
$gateway = new Gateway("Websocket://0.0.0.0:8282");
// gateway名称,status方便查看
$gateway->name = 'YourAppGateway';
// gateway进程数
$gateway->count = 4;
// 本机ip,分布式部署时使用内网ip
$gateway->lanIp = '127.0.0.1';
// 内部通讯起始端口,假如$gateway->count=4,起始端口为4000
// 则一般会使用4000 4001 4002 4003 4个端口作为内部通讯端口 
$gateway->startPort = 2900;
// 服务注册地址
$gateway->registerAddress = '127.0.0.1:1238';

start_register

// register 服务必须是text协议
$register = new Register('text://0.0.0.0:1238');

// worker名称
$worker->name = 'YourAppBusinessWorker';
// bussinessWorker进程数量
$worker->count = 4;
// 服务注册地址
$worker->registerAddress = '127.0.0.1:1238';

B服务器的gatewayclient的registerAddress

use GatewayClient\Gateway;
Gateway::$registerAddress = A服务器ip:1238;
4260 1 0
1个回答

walkor

如果GatewayClient和GatewayWorker不是在同一台服务器上,则需要先将start_gateway.php中的lanIp改成当前服务器的内网ip(如果不在一个内网可改成公网ip)。注意,无论何时lanIp都不能写成0.0.0.0,否则将无法通讯。

摘自手册 http://doc2.workerman.net/326149

  • fqfisher 2017-11-29

    lanip改成内网或者公网ip都不行,都没法调通gatewayclient的方法

  • walkor 2017-11-29

    1238端口防火墙 安全组看下都放行了没

  • fqfisher 2017-11-29

    @1:也都放行了,现在找不到原因

年代过于久远,无法发表回答
🔝