使用nginx實現websocket的負載均衡

2021-08-20 03:14:13 字數 1425 閱讀 8586

當web應用訪問量過大時,我們就需要做負載均衡,將同乙個網域名稱的請求分散到不同的伺服器上。nginx就可以做到。它可以按照輪詢、ip雜湊、url雜湊、權重等多種方式對後端伺服器做負載均衡。但是分配到不同的機器上後,如果請求是有狀態的,比如有些頁面需要使用者登入之後才能訪問,我們就需要保證單個使用者請求落在一台機器上或者實現多台機器之間的session共享,那樣才能保持登入狀態。而對於websocket這種長連線協議,nginx負載均衡之後能否保持連線狀態呢,我們接下來做一些測試。

實驗平台ubuntu 16.04

nginx版本 1.14.0

nodejs 版本(8.11.2)(實現websocket服務端)

安裝ws模組

# 安裝在當前目錄,想要安裝到系統目錄請使用sudo npm -g install ws

npm install ws

server0.js**,另外兩個檔案server1.js server2.js 相同只是埠不同

console.log("server started");

var msg = '';

var websocketserver = require('ws').server

, wss = new websocketserver();

wss.on('connection', function

(ws) );

});

啟動三個websocket server端如下圖所示

瀏覽器端連線測試,如下圖所示,三個均正常

}我們先連線一台websocket服務,測試連線和訊息傳送情況

從上圖可以看出,當建立連線後,服務端和客戶端會保持連線,並不會出現連線到其他服務的情況;

我們關閉當前連線,建立新的websocket連線,發現訊息傳送到了另一台機器,說明負載均衡正常,而且和之前一樣,服務端和客戶端也能夠保持長連線,如下圖所示:

nginx負載均衡能夠支援websocket這種長連線協議

NGINX從1 3版本開始支援WebSocket

nginx的解除安裝 兩種方式,一種找出安裝的檔案,全部刪除,一般位置在 usr local nginx,另外一種使用命令,sudo apt get remove nginx nginx common 解除安裝刪除除了配置檔案以外的所有檔案。sudo apt get purge nginx ngin...

使用Nginx實現限流

1.http限流配置 限制請求 請求單個ip,每秒讀50次,寫10次 limit req zone uri zone api read 20m rate 50r s 讀 limit req zone uri zone api write 20m rate 10r s 寫 按ip配置乙個連線 zone...

使用Nginx實現負載均衡

一 nginx 簡介nginx 是乙個高效能的http 伺服器和反向 伺服器。它起初是俄羅斯人igor sysoev 開發的,至今支撐者俄羅斯的很多大型的 二 nginx 支援的三種負載均衡策略 輪詢 將請求依次輪詢發給每個伺服器。ip雜湊 通過雜湊函式決定請求傳送給哪個伺服器。權重 伺服器的權重越...