webman下安装Gateway的各种问题
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的项目了。
本文链接:
/archives/1755585273031
版权声明:
本站所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自
雕刻时光!
喜欢就支持一下吧