廢話不多說,直接上乾貨。
虛擬域名: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埠。
upstream www。y1。com { server 192。168。226。136:80; server 192。168。226。137:80; server 192。168。226。138:80;}upstream websocket{ server 192。168。226。136:7272; server 192。168。226。137:7272; server 192。168。226。138:7272;}server { listen 7272; server_name www。y1。com; location / { proxy_pass http://websocket; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; }}server { listen 80; server_name www。y1。com; location / { proxy_pass http://www。y1。com; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; }}
下一步 三臺虛擬機器上放行下需要使用的埠:
下一步: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 startWorkerman[/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 startWorkerman[/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 startWorkerman[/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聊天系統已經部署完成。
感興趣的小夥伴 趕緊去試試吧 !
公號【程式設計師小店】-【關注我,每週一篇乾貨文章,教你工作中的小技巧】