webman下安装Gateway的各种问题

目前的项目用到了websocket,所以在webman的项目下安装了Gateway,一切都没有问题,不过当我尝试把项目移到k8s里,就有各种问题了。

官方文档,更多的多台稳定的服务器的集群,但是对于会随时扩容和销毁,而且内网链接的pod,支持的不太好。

1、关于register的处理

register作为整个ws的核心,存在感是最低的,但是却是最重要的。不管是gateway还是worker,都需要向register注册自己,这就需要一个稳定的register

1、采用稳定的内网机器运行register,pod运行gateway和worker来拆分

register基本无负载,但是gateway负责提供ws的通讯,worker负责业务的处理,所以在pod中运行这些可以有效的增加负载量。我们只需要让pod能够访问内网机器就行。

2、独立部署register

开始我们没有独立部署register,只是在项目中增加内网机器环境下开启register,但是当提交代码触发项目reload的时候,register会被清空,导致无法发送ws消息,这对于频繁提交代码的项目显然不合适。下面提供部署register的方案

1、在内网机器,建立文件夹,bus-gateway-reg
2、增加start.php文件,内容如下,端口根据自己需要来定
<?php
use Workerman\Worker;
use GatewayWorker\Register;

require_once __DIR__ . '/vendor/autoload.php';

// 启动 Register 服务,监听 1236 端口
$register = new Register('text://0.0.0.0:1236');

Worker::runAll();
3、进入项目目录,运行命令composer require workerman/gateway-worker
4、运行完毕后,执行 php start.php start测试
5、确定没问题了,可以关掉,重新运行php start.php start -d 来后台运行
6、正式项目中,就不要启动register了,在配置文件中填写内网机器的内网ip,要确保pod能够访问到这台机器的这个端口
<?php
return [
    'registerAddress'   => [
        '172.17.190.174:1236'
    ],
];
7、这样正式项目的reload,就不会影响到这个专门独立部署的register的项目了。

文章作者: Wind
本文链接:
版权声明: 本站所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 雕刻时光
喜欢就支持一下吧