导致集群重启_干货丨如何水平扩展和垂直扩展DolphinDB集群?
隨著業(yè)務(wù)的擴(kuò)展,數(shù)據(jù)量不斷積累,數(shù)據(jù)庫(kù)系統(tǒng)的數(shù)據(jù)容量和計(jì)算能力會(huì)逐漸不堪重負(fù),因此優(yōu)秀的數(shù)據(jù)庫(kù)系統(tǒng)必須具備良好的擴(kuò)展性。DolphinDB集群中的數(shù)據(jù)節(jié)點(diǎn)是集計(jì)算和存儲(chǔ)于一體的,所以要提高計(jì)算能力和數(shù)據(jù)容量,只需針對(duì)數(shù)據(jù)節(jié)點(diǎn)即可。DolphinDB既支持水平擴(kuò)展,即增加節(jié)點(diǎn),也支持垂直擴(kuò)展,即增加節(jié)點(diǎn)的存儲(chǔ)。
在擴(kuò)展集群前,需要對(duì)DolphinDB集群有基本的概念。DolphinDB集群由3個(gè)角色組成:控制節(jié)點(diǎn)(Controller)、代理節(jié)點(diǎn)(Agent)和數(shù)據(jù)節(jié)點(diǎn)(Data Node)。每個(gè)角色任務(wù)分配如下:
- 控制節(jié)點(diǎn)負(fù)責(zé)管理元數(shù)據(jù),提供Web集群管理工具。
- 代理節(jié)點(diǎn)負(fù)責(zé)節(jié)點(diǎn)的啟動(dòng)和停止,每臺(tái)服務(wù)器上必須有一個(gè)代理節(jié)點(diǎn)。
- 數(shù)據(jù)節(jié)點(diǎn)負(fù)責(zé)計(jì)算和存儲(chǔ)。
與集群相關(guān)的配置文件,一般位于config目錄下:
controller.cfg:位于控制節(jié)點(diǎn)所在的服務(wù)器,負(fù)責(zé)定義控制節(jié)點(diǎn)的相關(guān)配置,如IP、端口號(hào)、控制節(jié)點(diǎn)連接數(shù)上限等。
cluster.cfg:位于控制節(jié)點(diǎn)所在的服務(wù)器,負(fù)責(zé)定義集群內(nèi)每一個(gè)節(jié)點(diǎn)的個(gè)性化配置,如存儲(chǔ)路徑、連接數(shù)、內(nèi)存限制等。
cluster.nodes:位于控制節(jié)點(diǎn)所在的服務(wù)器,集群的成員配置文件,包含節(jié)點(diǎn)的IP、端口、節(jié)點(diǎn)別名和角色。
agent.cfg:包含代理節(jié)點(diǎn)的IP、端口和控制節(jié)點(diǎn)的IP和端口。每個(gè)物理服務(wù)器必須有一個(gè)代理節(jié)點(diǎn)。
如果是水平擴(kuò)展集群,需要修改集群的成員配置文件(cluster.nodes),如果數(shù)據(jù)節(jié)點(diǎn)位于新的物理服務(wù)器上,那么還需要部署一個(gè)新的代理節(jié)點(diǎn)(agent.cfg)來負(fù)責(zé)新物理機(jī)上節(jié)點(diǎn)的啟停,然后重啟控制節(jié)點(diǎn)來加載新的數(shù)據(jù)節(jié)點(diǎn)。當(dāng)新的數(shù)據(jù)節(jié)點(diǎn)啟動(dòng)后,節(jié)點(diǎn)的計(jì)算能力會(huì)即時(shí)納入集群的計(jì)算資源統(tǒng)籌,但是已經(jīng)存儲(chǔ)在集群中的數(shù)據(jù)不會(huì)調(diào)整到新的數(shù)據(jù)節(jié)點(diǎn),系統(tǒng)會(huì)將后續(xù)新進(jìn)入的數(shù)據(jù)按策略分配到各個(gè)數(shù)據(jù)節(jié)點(diǎn)。
如果是垂直擴(kuò)展集群,只需要修改數(shù)據(jù)節(jié)點(diǎn)的配置文件(cluster.cfg),為指定節(jié)點(diǎn)的volumes參數(shù)增加路徑。
下面將詳細(xì)介紹擴(kuò)展集群的步驟。
1. 集群配置說明
集群部署可以參考教程多物理服務(wù)器集群部署。
示例集群有3個(gè)數(shù)據(jù)節(jié)點(diǎn),每個(gè)數(shù)據(jù)節(jié)點(diǎn)位于一臺(tái)物理服務(wù)器上,控制節(jié)點(diǎn)位于另外一臺(tái)物理服務(wù)器上:
控制節(jié)點(diǎn):172.18.0.10
數(shù)據(jù)節(jié)點(diǎn)1:172.18.0.11
數(shù)據(jù)節(jié)點(diǎn)2:172.18.0.12
數(shù)據(jù)節(jié)點(diǎn)3:172.18.0.13
各個(gè)配置文件的信息如下:
controller.cfg
cluster.nodes
數(shù)據(jù)節(jié)點(diǎn)1所在物理服務(wù)器上的agent.cfg
為了體現(xiàn)擴(kuò)展后的效果,我們首先在集
群中創(chuàng)建一個(gè)分布式數(shù)據(jù)庫(kù),并寫入數(shù)據(jù):
執(zhí)行完后通過Web的DFS Explorer觀察數(shù)據(jù)的分布情況:
擴(kuò)展集群后,我們可以通過追加新的數(shù)據(jù)來觀察新的節(jié)點(diǎn)或存儲(chǔ)是否啟用。
2. 水平擴(kuò)展
由于業(yè)務(wù)數(shù)據(jù)量增大,集群的存儲(chǔ)和計(jì)算能力不能滿足要求,現(xiàn)新增一臺(tái)服務(wù)器,并把它加入原來的集群作為一個(gè)新的節(jié)點(diǎn)。新增的服務(wù)器IP地址為172.18.0.14,采用8804端口號(hào),別名為node4。新增服務(wù)器需要部署代理節(jié)點(diǎn),采用8701端口,別名為agent4.
步驟如下:
(1)部署新的代理節(jié)點(diǎn)
把DolphinDB的安裝包拷貝至新的服務(wù)器,并解壓。在server文件夾下新增config文件夾,并創(chuàng)建agent.cfg,增加以下內(nèi)容:
(2)修改集群成員配置
到控制節(jié)點(diǎn)所在的物理服務(wù)器,修改config/cluster.nodes,新增集群成員信息。修改后的文件內(nèi)容為:
(3)重啟集群
Linux環(huán)境下,使用命令pkill dolphindb,關(guān)閉集群。等待端口資源釋放后,重新啟動(dòng)controller和各個(gè)agent,命令如下:
啟動(dòng)controller:
啟動(dòng)agent:
在瀏覽器地址欄中輸入控制節(jié)點(diǎn)的IP和端口號(hào),如172.18.0.10:8990,來訪問Web,我們可以看到新增加的代理節(jié)點(diǎn)agent4已經(jīng)啟動(dòng),數(shù)據(jù)節(jié)點(diǎn)node4處于關(guān)停狀態(tài)。
啟動(dòng)各個(gè)節(jié)點(diǎn),集群即可正常使用。
下面我們往集群上的數(shù)據(jù)庫(kù)dfs://scaleout_test_db寫入一些數(shù)據(jù),驗(yàn)證新的數(shù)據(jù)節(jié)點(diǎn)是否已經(jīng)啟用。
觀察DFS Explorer,可以看到有數(shù)據(jù)分布到新的節(jié)點(diǎn)node4上。
有時(shí)候我們會(huì)發(fā)現(xiàn),某些數(shù)據(jù)會(huì)遷移到其他節(jié)點(diǎn)。這與DolphinDB的recovery機(jī)制有關(guān)
DolphinDB集群支持?jǐn)?shù)據(jù)自動(dòng)recovery。當(dāng)系統(tǒng)檢測(cè)到集群部分節(jié)點(diǎn)長(zhǎng)時(shí)間沒有心跳時(shí),判定為宕機(jī),將從其他副本中自動(dòng)恢復(fù)數(shù)據(jù)并且保持整個(gè)集群的副本數(shù)穩(wěn)定。這是當(dāng)某個(gè)節(jié)點(diǎn)長(zhǎng)時(shí)間未啟動(dòng),數(shù)據(jù)會(huì)發(fā)生遷移的原因。DolphinDB的recovery機(jī)制和控制節(jié)點(diǎn)的以下配置參數(shù)有關(guān):
dfsRecoveryWaitTime控制recovery的啟動(dòng),如果沒有設(shè)置該參數(shù),則關(guān)閉recovery功能,默認(rèn)是關(guān)閉狀態(tài)。等待時(shí)間的設(shè)置主要是為了避免一些計(jì)劃內(nèi)的停機(jī)維護(hù)導(dǎo)致不必要的recovery,需要用戶根據(jù)運(yùn)維的實(shí)際情況來設(shè)置。
從穩(wěn)定性上來講,副本數(shù)越多數(shù)據(jù)越不容易因意外丟失,但是副本數(shù)過多也會(huì)導(dǎo)致系統(tǒng)保存數(shù)據(jù)時(shí)性能低下,所以dfsReplicationFactor的值不建議低于2,但是具體設(shè)置多高需要用戶根據(jù)整體集群的節(jié)點(diǎn)數(shù)、數(shù)據(jù)穩(wěn)定性需求、系統(tǒng)寫入性能需求來綜合考慮。
dfsReplicaReliabilityLevel在生產(chǎn)環(huán)境下建議設(shè)置為1,即多個(gè)副本位于不同的服務(wù)器上。
3. 垂直擴(kuò)展
假設(shè)node3所在的服務(wù)器本身的磁盤空間不足,現(xiàn)增加了一塊磁盤,路徑為/dev/disk2,需要把它納入node3的存儲(chǔ)。數(shù)據(jù)節(jié)點(diǎn)的存儲(chǔ)路徑是由配置文件中的volumes參數(shù)指定,如果初始集群沒有指定volumes參數(shù),那么默認(rèn)的存儲(chǔ)路徑
[HomeDir]/DataNodeAlias]/storage,即node3的默認(rèn)存儲(chǔ)路徑為data/node3/storage。
在控制節(jié)點(diǎn)的cluster.cfg文件中加上以下內(nèi)容:
注意,如果需要在默認(rèn)路徑后面添加存儲(chǔ)路徑,需要顯式設(shè)置默認(rèn)路徑,否則會(huì)造成默認(rèn)路徑下的元數(shù)據(jù)丟失。
修改配置后,只需要重啟數(shù)據(jù)節(jié)點(diǎn),無需重啟控制節(jié)點(diǎn)。
下面往集群寫入新的數(shù)據(jù),查看數(shù)據(jù)是否被寫入新的磁盤。
到磁盤上觀察數(shù)據(jù)是否被寫入:
DolphinDB能支持的數(shù)據(jù)規(guī)模沒有明確的上限,完全取決于投入資源的多少。
作者:DolphinDB鏈接:https://juejin.cn/post/6909265120283590664
來源:掘金
著作權(quán)歸作者所有。商業(yè)轉(zhuǎn)載請(qǐng)聯(lián)系作者獲得授權(quán),非商業(yè)轉(zhuǎn)載請(qǐng)注明出處。
總結(jié)
以上是生活随笔為你收集整理的导致集群重启_干货丨如何水平扩展和垂直扩展DolphinDB集群?的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 解析并符号 读取dll_风电场用风功率采
- 下一篇: 如何在C++中使用setiosflags