WorderMan分布式+阿里SLB负载均衡

最近由于公司年会活动要使用一套抽奖程序,人数比较多,再加上比较重要,所以搞了一下容灾和分布式

假设现在有三台服务器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
注册服务器

WorderMan分布式+阿里SLB负载均衡_第1张图片
image.png

业务服务器之一
WorderMan分布式+阿里SLB负载均衡_第2张图片
image.png

之后使用工具测试对应服务器websoket是否畅通,成功即部署完成
另建议按照workerman手册优化Linux内核
手册地址
以及优化PHP无用扩展

你可能感兴趣的