1. 概述
1.1 問題描述
目前叢集功能中一些常用的參數,配置時需要手動向資料庫中增加或修改欄位,存在以下兩個問題:
使用者不知道什麼情況下去配置這些參數,以及這些參數的意義。
修改資料庫中的欄位存在一定的操作成本。
1.2 解決方案
對於常用的叢集參數,FineBI 開放平台配置,使用者可自行實現配置,目前允許配置:
Redis儲存key前綴
內部轉發參數
2. 配置介紹
使用者在 平台配置叢集 後,以管理者身分登入平台,點選「管理系統>智慧維運>叢集配置」,在參數配置頁面中,可對「Redis儲存key前綴」參數和「內部轉發參數」進行配置。
對參數進行配置時,滑鼠移到配置項正文框後面,會有個提示圖示,點選後提示字元要求。如下圖所示:
2.1 Redis儲存key前綴
當使用的 Redis 伺服器屬於公用服務,也被其他工程所使用時。為了避免多套工程的 key 存在衝突,我們需要給不同的工程自訂其儲存在 Redis 中的 key 前綴。
配置並重啟工程後,我們可以從 redis 中查詢到新的前綴的 key 值,查詢方法見:Linux 系統 Redis 維運手冊
配置項 | 預設配置 | 字元要求 |
---|---|---|
key前綴 | __fine_state_key_43e1b2fe42__ | 英文大小寫、阿拉伯數字、底線 |
修改「key前綴」後,點選右側「儲存」按鈕,前端彈窗提醒使用者:參數設定已修改,請重啟各節點工程以生效,如下圖所示:
2.2 內部轉發參數
2.2.1 原理說明
我們通常給負載均衡配置輪詢的轉發策略,負載均衡不會判斷某個請求的節點歸屬情況,會將請求按照輪詢的策略轉發給各個節點。
當節點收到不屬於自己的請求時,會內部轉發該請求給對應的節點處理,請求處理完成後再原路傳回。
基於這個邏輯,當一個節點異常時無法對內部轉發過來的請求進行迴應,負載均衡可能會對正常的節點進行誤判,也有可能導致此請求遲遲無法傳回且前端無報錯。
為了避免單節點當機導致叢集不可用的情況發生,增加了對節點間轉發的請求的健康檢查,可以對異常節點進行限制並能夠前端提醒。
當節點伺服器拒絕連結時,報錯:41300002伺服器拒絕了此次連結,報錯頁面如下圖所示:
當叢集節點間轉發耗時超過了設定的逾時時間時,報錯:41300001伺服器服務迴應時間過長,報錯頁面如下圖所示:
2.2.2 配置說明
配置項 | 預設配置 | 單位 | 填寫要求 | 含義 |
---|---|---|---|---|
逾時時間 | 90 | 秒 | 不小於 10 的整數 | 讀寫逾時的時間,如果在逾時時間內伺服器未傳回或收到任何資料,視為逾時。如果有些報表計算或者匯出時後端需要花費幾分鐘甚至更多,則需要設定長一點 對應 nginx 中的參數為 proxy_read_timeout 和 proxy_send_timeout,這兩個參數值要大於平台配置的逾時時間 |
嘗試次數 | 8 | 次 | 正整數 | 單個週期內最大嘗試的次數,此參數須≥1次,最大嘗試失敗次數 n 對應 nginx 中的參數為 max_fails ,建議大於或等於平台配置的嘗試次數 |
失效時間 | 90 | 秒 | 不小於 10 的整數 | 在單個失效時間內,失敗請求超過最大嘗試次數後,節點會被置為失效,新的請求將不會內部轉發給該節點 對應 nginx中 的參數為 fail_timeout ,建議大於或等於平台配置的值 |
修改「內部轉發參數」後,點選右側儲存按鈕,前端彈窗提醒使用者:參數設定已修改,請重啟各節點工程以生效,如下圖所示: