1. 概述
2. 範例
2.1 修改欄位值
超級管理者可透過「fine_conf_entity視覺化配置插件」修改 WebSocket 埠。重啓伺服器後設定生效。
注:修改 FineDB 資料庫表欄位值的方法請參考 FineDB 常用表欄位修改 。
埠 | JAR 包 | ID | 預設值 | 設定範圍 | 是否支援 設定多個值 |
---|---|---|---|---|---|
Websocket 埠 | - | WebSocketConfig.port | ["48888", "49888"] | 參數值為埠陣列["port1","port2"] port均屬於區間(1024,65535] | 支援 |
Websocket 轉發埠 | 2019-11-08 之前 | WebSocketConfig.requestPort | 48889 | 支援 | |
2019-11-08 及之後 | WebSocketConfig.requestPorts | 48889 | 支援 |
設定埠號時有一些注意事項:
1)埠號可設定範圍:1024~65535,若為多個值,設定格式為:[埠號1,埠號2,埠號3]。
2)建議「WebSocket轉發埠」的值要多於叢集節點數,保證每個節點都會選擇當前可用的埠,不會因為埠占用而導致伺服器無法啟動。
3)建議「WebSocket埠」設定多個值,作為備用,防止一臺伺服器部署了多個工程,埠被佔用。
4)不要設定埠號為伺服器遠端連結埠 3389。
5)如果工程和 nginx 負載均衡在一個環境下,不要重複設定某個埠號既是 WebSocket 埠,又是 WebSocket 轉發埠。
6)若 WebSocketConfig.port、WebSocketConfig.requestPort、WebSocketConfig.requestPorts 欄位後面有空格,配置不生效。
7)若 WebSocketConfig.port、WebSocketConfig.requestPort、WebSocketConfig.requestPorts 大小寫錯誤,配置不生效。
8)WebSocketConfig.requestPort 和 WebSocketConfig.requestPorts 不能同時存在於 fine_conf_entity 表中,否則會出錯。
2.2 修改叢集轉發策略
在負載均衡層面配置 Websocket 的轉發策略為粘滯,詳情請參見:負載均衡配置指導
2.3 修改叢集監聽埠
nginx.conf 檔案中,server 的 listen 埠需要與「WebSocket 轉發埠」配置一致,詳情請參見:Linux 系統安裝配置 Nginx 4.1 節
例如用設定的 Websocket 轉發埠(WebSocketConfig.requestPort預設48889)轉發 Websocket 埠(WebSocketConfig.port預設 48888 )
以下範例為工程伺服器 IP 為 192.168.6.171,Nginx 伺服器 IP 為 192.168.6.181,如下圖所示:
#使用者或者使用者組 預設為nobody#user root;#允許進程數量,建議設定為cpu核心數或者auto自動檢查,注意Windows伺服器上雖然可以啟動多個processes,但是實際只會用其中一個worker_processes auto;#自動根據CPU數目綁定CPU親緣性,nginx1.9.10及以上版本才能用#worker_cpu_affinity auto;#error日誌存放位置error_log logs/error.log;#error_log logs/error.log notice;#error_log logs/error.log info;#PID存放位置#pid logs/nginx.pid;#工作模式及連結數上限events { #每個worker_processes的最大連結數,Windows伺服器無論這裏設定多大實際都只有1024 #併發數是 worker_processes 和 worker_connections 的乘積 worker_connections 1024;}http { #設定mime型別,型別由mime.type檔案定義 include mime.types; #預設檔案型別,預設為text/plain default_type application/octet-stream; #日誌格式 log_format main '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for" $upstream_addr'; #access_log確定了Nginx是否儲存存取日誌,將這個設定為關閉可以降低磁碟IO而提升速度 access_log off; #access_log logs/access.log main; #sendfile 指令指定 nginx 是否呼叫 sendfile 函式(zero copy 方式)來匯出檔案, #對於普通應用,必須設為 on, #如果用來進行下載等應用磁碟IO重負載應用,可設定為 off, #以平衡磁碟與網路I/O處理速度,降低系統的uptime. sendfile on; #tcp_nopush on; #http長連結(client
2.4 開放埠
若防火牆開啓,可關閉防火牆,或者單獨開放埠。
若雲伺服器有安全組或者類似的內容,需要設定埠對外開放。
2.5 重啓工程
重啓 nginx 和 FineBI 工程。
重啓工程時,需要殺死工程下運作的進程,等待 2 分鐘埠釋放後,再重啓工程,否則有可能重啓失敗。
2.6 效果預覽
按照WebSocket轉發埠>>WebSocket埠的順序,即如果使用預設值埠,按照「48889,48888,49888」的順序依次嘗試監聽。
如果有一個埠建立監聽成功,則不再嘗試其他埠。
如果所有埠都無法與系統伺服器建立監聽,會進入部署精靈頁面,引導修改監聽埠列表,相關功能會受到影響。