三台Linux虚拟机搭建websocket负载均衡解决方案 图文教程
废话不多说,直接上干货。虚拟域名:www.y1.com三台虚拟机:192.168.226.136 192.168.226.137 192.168.226.138准备工作:1、使用VM安装三台虚拟机2、分别安装宝塔,快速部署好PHP的运行环境3、三台机器分别安装搭建好workman-chat。截止到这一步,还有不会操作的同学,请查看之前的文章,或者评论区给我留意。第一步:第一步本机上邦hosts:
废话不多说,直接上干货。
虚拟域名:www.y1.com
三台虚拟机:192.168.226.136 192.168.226.137 192.168.226.138
准备工作:
1、使用VM安装三台虚拟机
2、分别安装宝塔,快速部署好PHP的运行环境
3、三台机器分别安装搭建好workman-chat。
截止到这一步,还有不会操作的同学,请查看之前的文章,或者评论区给我留意。
第一步:第一步本机上邦hosts: 127.0.0.1 www.y1.com
本机nginx上做轮询负载均衡,关键配置代码如下:
监听80端口,负载均衡到三台虚拟机的80端口。
监听7272端口,负载均衡到三台虚拟机的7272端口。
下一步 三台虚拟机上放行下需要使用的端口:
下一步:136服务器提供Register服务,需要将137和138两台服务器上删掉start_register.php文件或者注释掉里面的代码。
136服务器:
start_register.php文件中代码修改为:
// register 服务必须是text协议 $register = new Register('text://192.168.226.136:1236');
start_gateway.php文件中代码修改为:
// 分布式部署时请设置成内网ip(非127.0.0.1) $gateway->lanIp = '192.168.226.136'; // 服务注册地址 $gateway->registerAddress = '192.168.226.136:1236';
start_businessworker.php文件中代码修改为:
// 服务注册地址 $worker->registerAddress = '192.168.226.136:1236';
137和138两天服务器上:
删除start_register.php文件或者注释掉里面代码
start_gateway.php文件中代码修改为:
// 分布式部署时请设置成内网ip(非127.0.0.1) $gateway->lanIp = '192.168.226.137'; //注意这里是各自服务器的ip, 137 或者138 // 服务注册地址 $gateway->registerAddress = '192.168.226.136:1236';
start_businessworker.php文件中代码修改为:
// 服务注册地址 $worker->registerAddress = '192.168.226.136:1236';
全部配置成功以后,分别debug模式启动三台服务器上的websocket。
136:
[root@192 Chat]# php /www/wwwroot/www.y1.com/workerman-chat/start.php start Workerman[/www/wwwroot/www.y1.com/workerman-chat/start.php] start in DEBUG mode ------------------------------------------------ WORKERMAN ------------------------------------------------ Workerman version:4.0.6 PHP version:7.2.33 ------------------------------------------------- WORKERS ------------------------------------------------- proto user worker listen processes status tcp root ChatBusinessWorker none 4 [OK] tcp root ChatGateway websocket://0.0.0.0:7272 4 [OK] tcp root Register text://192.168.226.136:1236 1 [OK] tcp root none http://0.0.0.0:55151 2 [OK] ----------------------------------------------------------------------------------------------------------- Press Ctrl+C to stop. Start success.
137:
[root@192 Chat]# php /www/wwwroot/www.y1.com/workerman-chat/start.php start Workerman[/www/wwwroot/www.y1.com/workerman-chat/start.php] start in DEBUG mode ---------------------------------------------- WORKERMAN ----------------------------------------------- Workerman version:4.0.6 PHP version:7.2.33 ----------------------------------------------- WORKERS ------------------------------------------------ proto user worker listen processes status tcp root ChatBusinessWorker none 4 [OK] tcp root ChatGateway websocket://0.0.0.0:7272 4 [OK] tcp root none http://0.0.0.0:55151 2 [OK] -------------------------------------------------------------------------------------------------------- Press Ctrl+C to stop. Start success.
138:
[root@192 Chat]# php /www/wwwroot/www.y1.com/workerman-chat/start.php start Workerman[/www/wwwroot/www.y1.com/workerman-chat/start.php] start in DEBUG mode ---------------------------------------------- WORKERMAN ----------------------------------------------- Workerman version:4.0.6 PHP version:7.2.33 ----------------------------------------------- WORKERS ------------------------------------------------ proto user worker listen processes status tcp root ChatBusinessWorker none 4 [OK] tcp root ChatGateway websocket://0.0.0.0:7272 4 [OK] tcp root none http://0.0.0.0:55151 2 [OK] -------------------------------------------------------------------------------------------------------- Press Ctrl+C to stop. Start success.
接下来,启动多个浏览器,访问www.y1.com
启动了5个浏览器,登录了5个账号,分别是PHP、Java、Hadoop、Python、Spark
Hadoop负载均衡到136服务器上:
PHP、Spark负载均衡到137服务器上:
Python、Java负载均衡到138服务器上:
到此位置,websocket负载均衡搭建配置完成。
下面继续 一台服务器挂掉的情况:
现在模拟138服务器上websocket关闭,看下Java和Python两个用户是否会掉线
138服务器已经关闭websocket,socket进行也没有了
发现138服务器上的Java和Python已经负载到136服务器上,并且连接通信正常
先把136这台服务器模拟websocket挂掉的情况:
现在5个用户全部都连接到137服务器上啦
收发消息正常:
好了,亲爱的小伙伴们,到此,三台服务器搭建集群websocket聊天系统已经部署完成。
感兴趣的小伙伴 赶紧去试试吧 !
公号【程序员小店】-【关注我,每周一篇干货文章,教你工作中的小技巧】
更多推荐
所有评论(0)