Gateway分离部署问题

workman

现在想的部署大概 如下图

[attach]338[/attach]

问题:
1、根据手册分离部署时是一台Gateway,现在有两台Gateway,请问BusinessWorker_*的start_businessworker.php里面的registerAddress填哪一台呢? 因为现在有两台Gateway

2、两台Gateway的Even.php代码需要一致吗?收发客户端消息的时候执行的是Gateway的Event.php还是 BusinessWorker的Even.php呢?

3、Gateway开了不同的端口8282与8284两个端口,Gateway_1与Gateway_2是一致的代码,Nginx这边对两个不同的端口提供负载均衡,统一向外暴露两个针对8282、8284的端口,客户端去连Nginx暴露的两个端口,随机分配到Gateway_1 Gateway_2上 , 这样的话就算Gateway挂掉一个也没问题 这样做可以吗?

现在就是不知道怎么把两台gateway集群起来 怎么通讯?

3730 1 0
1个回答

walkor

1、GatewayWorker是以register来区分集群的,每个集群都连同一个register服务,你这里所有Gateway 和BusinessWorker服务器的registerAddress都填写Gateway1的register地址就可以。

2、Gateway服务器不需要Event.php,Event.php运行在BusinessWorker服务器上。

3、为什么要暴露两个端口?暴露两个端口,客户端连接的时候就需要选择一个端口去连,如果这端口的gateway挂了,那么后续所有连8282的客户端都会连不上。

一般多协议的时候才需要暴露多个端口,每种端口一种协议。如果是只有一个协议,最好每个gateway统一的端口。

另外不建议用nginx做负载均衡,因为单机网卡吞吐量/带宽有限,可能会成为瓶颈。
建议用lvs keepalived或者dns做负载均衡。

  • workman 2016-07-01

    懂了,就是register地址只有一个,然后所有gateway与businessworker连这个注册地址,至于gateway与businessworker之间的工作是不用管的,只需要考虑gateway之间的负载均衡就行了哇,最后一个问题 lanIp只能是内网IP,协议那边的ip是公网ip吧?

  • walkor 2016-07-03

    对,只需要考虑Gateway之间的负载均衡。lanIp最好是内网IP,如果服务器不在同一个内网,也可以公网IP。gateway监听0.0.0.0就可以,代表Gateway监听所有网卡,包括内网和外网。

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