分布式GatewayWorkerd时候$gateway->lanIp="内网IP"链接失败

胖子

第一台
截图

第二台
截图

第一台登录
截图
然后第一台和第二台就开始报错
截图
截图

这是什么原因,

阅读 852
1个回答

blogdaren

确认下gateway所在机器的几个内部端口防火墙放行了吗?

  • 胖子 2020-03-06

    如果我在第一台服务器ping第二台服务器的内网IP 如果ping不通,是不是$gateway->lanIp="就要填写外网IP"

  • blogdaren 2020-03-06

    既然是在同一个内网,那先排查下为何两台内网服务器无法互通; 对于不在同一内网的机器,一般才考虑将lanIp设置成目标机器外网IP,当然内网也可以这样设置,注意防火墙策略就好。

  • 胖子 2020-03-06

    大佬你最后提到的“将lanIp设置成目标机器外网IP”,是说我第一台机器的$gateway->lanIp=“第二台机器的外网IP嘛”。

  • blogdaren 2020-03-06

    lanIP指的是当前部署gateway机器的IP

  • 胖子 2020-03-06

    1:我第一台机器ping第二台机器的内网IP ,ping不通,就是不在一个内网里,
    2:然后就要吧$gateway->lanIp=""这一步本来要填写本机内网IP的改成本机外网IP。
    但是我换成外网IP就会提示我这个错误: stream_socket_server(): unable to connect to tcp://39.97.123.163:2800 (Cannot assign requested address) in /root/hcl/GatewayWorker/vendor/workerman/workerman/Worker.php on line 2226

  • blogdaren 2020-03-06

    这说明 39.97.123.163 并不是当前gateway机器的真实公网IP

  • 胖子 2020-03-06

    这是阿里云服务器上显示的:39.97.123.163(公网)

  • 胖子 2020-03-06

    如果 $gateway->lanIp="" 换成本机内网IP 或者127.0.0.1 是正常的。

  • 胖子 2020-03-06

    第1台服务器lanIp换成本机内网IP后会报错:GatewayConnection Error : 1 ,connect 第2台服务器内网IP:2801 fail after 127.2276 seconds

  • 胖子 2020-03-06

    这是第1台代码
    $gateway = new Gateway("tcp://0.0.0.0:8282");
    $gateway->name = 'YourAppGatewa';
    // gateway进程数
    $gateway->count = 2;
    // 本机ip,分布式部署时使用内网ip
    $gateway->lanIp = '39.97.123.163';
    $gateway->startPort = 2800;
    // 服务注册地址
    $gateway->registerAddress = '39.97.123.163:1238';

  • blogdaren 2020-03-06

    39.97.123.163 并不是当前gateway机器的真实公网IP, 应该是个阿里云代理IP,这样的话 $gateway->lanIp = '39.97.123.163'; 也是行不通的。

  • 胖子 2020-03-06

    那还有其他办法吗?

  • blogdaren 2020-03-06

    要么必须有真实的公网IP,要么就是内网要能互通; 两个要么若都不满足,那迫不得已还有一种偏方就是需要改源代码;

  • 胖子 2020-03-06

    谢了大佬。江湖最高礼仪 (抱拳)

  • blogdaren 2020-03-06

    不客气