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
确认下gateway所在机器的几个内部端口防火墙放行了吗?
如果我在第一台服务器ping第二台服务器的内网IP 如果ping不通,是不是$gateway->lanIp="就要填写外网IP"
既然是在同一个内网,那先排查下为何两台内网服务器无法互通; 对于不在同一内网的机器,一般才考虑将lanIp设置成目标机器外网IP,当然内网也可以这样设置,注意防火墙策略就好。
大佬你最后提到的“将lanIp设置成目标机器外网IP”,是说我第一台机器的$gateway->lanIp=“第二台机器的外网IP嘛”。
lanIP指的是当前部署gateway机器的IP
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
这说明 39.97.123.163 并不是当前gateway机器的真实公网IP
这是阿里云服务器上显示的:39.97.123.163(公网)
如果 $gateway->lanIp="" 换成本机内网IP 或者127.0.0.1 是正常的。
第1台服务器lanIp换成本机内网IP后会报错:GatewayConnection Error : 1 ,connect 第2台服务器内网IP:2801 fail after 127.2276 seconds
这是第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';
39.97.123.163 并不是当前gateway机器的真实公网IP, 应该是个阿里云代理IP,这样的话 $gateway->lanIp = '39.97.123.163'; 也是行不通的。
那还有其他办法吗?
要么必须有真实的公网IP,要么就是内网要能互通; 两个要么若都不满足,那迫不得已还有一种偏方就是需要改源代码;
谢了大佬。江湖最高礼仪 (抱拳)
不客气