现在公司部署的gatewayworker在一台单机32核64g服务器上,现在要改成集群,看了文档,如果要改成集群,好像reload没用,要重新restart,文档写的是reload只对runall后面加载的文件有效。但是客户现在有10多万台设备在线,不想重新启动,因为重新启动会掉线。想问下有什么方案能改成集群,但是又不影响已经在线的设备
如果你是单机,最开始的配置没考虑到集群,就涉及到需要更改start_gateway.php start_businessworker.php里的配置,需要重启才能生效。
如果start_gateway.php start_businessworker.php里的配置符合集群配置要求,则可以不重启现有服务器,其它服务器按照文档配置好,启动后会自动加入集群,不用reload,不用restart。
10多万设备同时在线万不得已不建议restart重启,这个我们有过很多次深刻教训。
10多万设备同时断线,同时重连,如果重连过程中涉及到数据库等IO的操作,瞬间上万请求会导致数据库压力很大,请求处理不够快时,请求挤压会排队,导致大量设备请求超时。超时的设备可能又会断开再次重连,导致雪上加霜,这种情况可能会导致很长时间服务不可用。
感谢大佬亲自回答,目前我还没看到公司的源码,目前知道的是,用了阿里云的nlb负载。如果gateway中的lanIp,写死了127.0.0.1,那就只能在负载那加一个gateway的端口,在新的gateway中,分开部署bussiness进程了
在原来的gatewayworker上做个中转,新的连接都转到分布式的gatewayworker上
如果你是单机,最开始的配置没考虑到集群,就涉及到需要更改start_gateway.php start_businessworker.php里的配置,需要重启才能生效。
如果start_gateway.php start_businessworker.php里的配置符合集群配置要求,则可以不重启现有服务器,其它服务器按照文档配置好,启动后会自动加入集群,不用reload,不用restart。
10多万设备同时在线万不得已不建议restart重启,这个我们有过很多次深刻教训。
10多万设备同时断线,同时重连,如果重连过程中涉及到数据库等IO的操作,瞬间上万请求会导致数据库压力很大,请求处理不够快时,请求挤压会排队,导致大量设备请求超时。超时的设备可能又会断开再次重连,导致雪上加霜,这种情况可能会导致很长时间服务不可用。
感谢大佬亲自回答,目前我还没看到公司的源码,目前知道的是,用了阿里云的nlb负载。如果gateway中的lanIp,写死了127.0.0.1,那就只能在负载那加一个gateway的端口,在新的gateway中,分开部署bussiness进程了
在原来的gatewayworker上做个中转,新的连接都转到分布式的gatewayworker上