最近由于公司年会活动要使用一套抽奖程序,人数比较多,再加上比较重要,所以搞了一下容灾和分布式
假设现在有三台服务器A,B,C,我们的方案是A只用来做Register服务器,B,C开启Business和Gateway服务,1239作为注册端口,1240,1241等作为服务端口,这三台服务器在选择区域的时候,都要和SLB开通区域相同
SLB需要开启所有端口的监听,包括http80和https443,而后分发到几台服务器就好,需要注意云服务器安全组也需要开放对应服务的端口
Workerman直接进行端口监听不需要nginx进行转接
composer安装workerman
composer require workerman/workerman
查看workerman文件中注册文件start_start_register.php中注册端口
// register 必须是text协议
$register = new Register('text://0.0.0.0:1239');
业务服务器中修改start_businessworker.php和start_gateway.php中的registerAddress(注册地址)和 lanIp(本机IP),如果使用的是云服务器的话,IP都要填写内网IP
// 本机ip,分布式部署时使用内网ip
$gateway->lanIp = '127.0.0.1';
// 服务注册地址
$gateway->registerAddress = '172.12.0.1:1239';
然后回到项目根目录,运行命令
php start.php -d
注册服务器
![](https://img.haomeiwen.com/i4335232/2adad2c0d8da6197.png)
业务服务器之一
![](https://img.haomeiwen.com/i4335232/286bfa6a253c374b.png)
之后使用工具测试对应服务器websoket是否畅通,成功即部署完成
另建议按照workerman手册优化Linux内核
手册地址
以及优化PHP无用扩展
网友评论