有没有大兄弟搞过这个的?
1.有一台云主机,上面部署了
Workerman version:3.5.14 PHP version:7.1.6
------------------------ WORKERS -------------------------------
worker listen processes status
WebServer http://0.0.0.0:4433 2
ChatBusinessWorker none 4
Register text://0.0.0.0:1236 1
ChatGateway websocket://0.0.0.0:7272 4
2.内网有一台DMZ主机部署了 ChatGateway 注册地址写的 公网的云主机的。
想实现,在内网用户连内网的DMZ主机(内网用户无法访问公网),外网是的使用公网IP就行,业务逻辑是在外网的,但是发现跳坑里了,挣扎了一天,还在里面。
DMZ主机的 start_gateway.php里lanIp设置成DMZ主机的外网ip,没准可以做到你要的效果
行不通的,这个试过了,之后gateway内部通讯2300都不能连了 unable to connect to tcp://XXXXXXX:2300
不能通过公网访问自己,然后,判断gateway往云服务器上的注册中心注册时,更改这个127.0.0.1为外网IP后,还是报错
1、Register、Gateway、BusinessWorker进程启动
2、Gateway、BusinessWorker进程启动后向Register服务进程发起长连接注册自己
3、Register服务收到Gateway的注册后,把所有Gateway的通讯地址保存在内存中
4、Register服务收到BusinessWorker的注册后,把内存中所有的Gateway的通讯地址发给BusinessWorker
5、BusinessWorker进程得到所有的Gateway内部通讯地址后尝试连接Gateway
6、如果运行过程中有新的Gateway服务注册到Register(一般是分布式部署加机器),则将新的Gateway内部通讯地址列表将广播给所有BusinessWorker,BusinessWorker收到后建立连接
根据原理,发现 判断内网的gateway往云服务器上的注册中心注册时,更改这个127.0.0.1为外网IP后
云端,应该是第六步错误了,BusinessWorker无法跟内网的Gateway通讯,无法访问到内网的2300,不清楚是什么原因,已经做了虚拟主机的映射
已自行解决
如果不想修改源码,架设VPN即可
[attach]1277[/attach]