六月婷婷AV,国产偷窥猎奇福利二区,日韩三级片。,好吊色网站,日韩成人中文在线视频,国产亚洲午夜啪啪,亚洲欧美另类国产精品,国产成人av1,任你艹在线观看

TDengine 集群安裝、管理

多個(gè)TDengine服務(wù)器,也就是多個(gè)taosd的運(yùn)行實(shí)例可以組成一個(gè)集群,以保證TDengine的高可靠運(yùn)行,并提供水平擴(kuò)展能力。要了解TDengine 2.0的集群管理,需要對(duì)集群的基本概念有所了解,請(qǐng)看《TDengine整體架構(gòu)》一章。而且在安裝集群之前,建議先按照《立即開始》一章安裝并體驗(yàn)單節(jié)點(diǎn)功能。

集群的每個(gè)數(shù)據(jù)節(jié)點(diǎn)是由End Point來(lái)唯一標(biāo)識(shí)的,End Point是由FQDN(Fully Qualified Domain Name)外加Port組成,比如 h1.taosdata.com:6030。一般FQDN就是服務(wù)器的hostname,可通過(guò)Linux命令hostname -f獲?。ㄈ绾闻渲肍QDN,請(qǐng)參考:一篇文章說(shuō)清楚TDengine的FQDN)。端口是這個(gè)數(shù)據(jù)節(jié)點(diǎn)對(duì)外服務(wù)的端口號(hào),缺省是6030,但可以通過(guò)taos.cfg里配置參數(shù)serverPort進(jìn)行修改。一個(gè)物理節(jié)點(diǎn)可能配置了多個(gè)hostname, TDengine會(huì)自動(dòng)獲取第一個(gè),但也可以通過(guò)taos.cfg里配置參數(shù)fqdn進(jìn)行指定。如果習(xí)慣IP地址直接訪問(wèn),可以將參數(shù)fqdn設(shè)置為本節(jié)點(diǎn)的IP地址。

TDengine的集群管理極其簡(jiǎn)單,除添加和刪除節(jié)點(diǎn)需要人工干預(yù)之外,其他全部是自動(dòng)完成,最大程度的降低了運(yùn)維的工作量。本章對(duì)集群管理的操作做詳細(xì)的描述。

關(guān)于集群搭建請(qǐng)參考視頻教程。

準(zhǔn)備工作

第零步:規(guī)劃集群所有物理節(jié)點(diǎn)的FQDN,將規(guī)劃好的FQDN分別添加到每個(gè)物理節(jié)點(diǎn)的/etc/hostname;修改每個(gè)物理節(jié)點(diǎn)的/etc/hosts,將所有集群物理節(jié)點(diǎn)的IP與FQDN的對(duì)應(yīng)添加好?!救绮渴鹆薉NS,請(qǐng)聯(lián)系網(wǎng)絡(luò)管理員在DNS上做好相關(guān)配置】

第一步:如果搭建集群的物理節(jié)點(diǎn)中,存有之前的測(cè)試數(shù)據(jù)、裝過(guò)1.X的版本,或者裝過(guò)其他版本的TDengine,請(qǐng)先將其刪除,并清空所有數(shù)據(jù)(如果需要保留原有數(shù)據(jù),請(qǐng)聯(lián)系濤思交付團(tuán)隊(duì)進(jìn)行舊版本升級(jí)、數(shù)據(jù)遷移),具體步驟請(qǐng)參考博客《TDengine多種安裝包的安裝和卸載》。
注意1:因?yàn)镕QDN的信息會(huì)寫進(jìn)文件,如果之前沒有配置或者更改FQDN,且啟動(dòng)了TDengine。請(qǐng)一定在確保數(shù)據(jù)無(wú)用或者備份的前提下,清理一下之前的數(shù)據(jù)(rm -rf /var/lib/taos/*);
注意2:客戶端也需要配置,確保它可以正確解析每個(gè)節(jié)點(diǎn)的FQDN配置,不管是通過(guò)DNS服務(wù),還是修改 hosts 文件。

第二步:建議關(guān)閉所有物理節(jié)點(diǎn)的防火墻,至少保證端口:6030 - 6042的TCP和UDP端口都是開放的。強(qiáng)烈建議先關(guān)閉防火墻,集群搭建完畢之后,再來(lái)配置端口;

第三步:在所有物理節(jié)點(diǎn)安裝TDengine,且版本必須是一致的,但不要啟動(dòng)taosd。安裝時(shí),提示輸入是否要加入一個(gè)已經(jīng)存在的TDengine集群時(shí),第一個(gè)物理節(jié)點(diǎn)直接回車創(chuàng)建新集群,后續(xù)物理節(jié)點(diǎn)則輸入該集群任何一個(gè)在線的物理節(jié)點(diǎn)的FQDN:端口號(hào)(默認(rèn)6030);

第四步:檢查所有數(shù)據(jù)節(jié)點(diǎn),以及應(yīng)用程序所在物理節(jié)點(diǎn)的網(wǎng)絡(luò)設(shè)置:

  1. 每個(gè)物理節(jié)點(diǎn)上執(zhí)行命令hostname -f,查看和確認(rèn)所有節(jié)點(diǎn)的hostname是不相同的(應(yīng)用驅(qū)動(dòng)所在節(jié)點(diǎn)無(wú)需做此項(xiàng)檢查);
  2. 每個(gè)物理節(jié)點(diǎn)上執(zhí)行ping host,其中host是其他物理節(jié)點(diǎn)的hostname,看能否ping通其它物理節(jié)點(diǎn);如果不能ping通,需要檢查網(wǎng)絡(luò)設(shè)置,或/etc/hosts文件(Windows系統(tǒng)默認(rèn)路徑為C:\Windows\system32\drivers\etc\hosts),或DNS的配置。如果無(wú)法ping通,是無(wú)法組成集群的;
  3. 從應(yīng)用運(yùn)行的物理節(jié)點(diǎn),ping taosd運(yùn)行的數(shù)據(jù)節(jié)點(diǎn),如果無(wú)法ping通,應(yīng)用是無(wú)法連接taosd的,請(qǐng)檢查應(yīng)用所在物理節(jié)點(diǎn)的DNS設(shè)置或hosts文件;
  4. 每個(gè)數(shù)據(jù)節(jié)點(diǎn)的End Point就是輸出的hostname外加端口號(hào),比如h1.taosdata.com:6030。

第五步:修改TDengine的配置文件(所有節(jié)點(diǎn)的文件/etc/taos/taos.cfg都需要修改)。假設(shè)準(zhǔn)備啟動(dòng)的第一個(gè)數(shù)據(jù)節(jié)點(diǎn)End Point為 h1.taosdata.com:6030,其與集群配置相關(guān)參數(shù)如下:

// firstEp 是每個(gè)數(shù)據(jù)節(jié)點(diǎn)首次啟動(dòng)后連接的第一個(gè)數(shù)據(jù)節(jié)點(diǎn)
firstEp               h1.taosdata.com:6030

// 必須配置為本數(shù)據(jù)節(jié)點(diǎn)的FQDN,如果本機(jī)只有一個(gè)hostname, 可注釋掉本項(xiàng)
fqdn                  h1.taosdata.com  

// 配置本數(shù)據(jù)節(jié)點(diǎn)的端口號(hào),缺省是6030
serverPort            6030

// 副本數(shù)為偶數(shù)的時(shí)候,需要配置,請(qǐng)參考《Arbitrator的使用》的部分
arbitrator            ha.taosdata.com:6042

一定要修改的參數(shù)是firstEp和fqdn。在每個(gè)數(shù)據(jù)節(jié)點(diǎn),firstEp需全部配置成一樣,但fqdn一定要配置成其所在數(shù)據(jù)節(jié)點(diǎn)的值。其他參數(shù)可不做任何修改,除非你很清楚為什么要修改。

加入到集群中的數(shù)據(jù)節(jié)點(diǎn)dnode,涉及集群相關(guān)的下表9項(xiàng)參數(shù)必須完全相同,否則不能成功加入到集群中。

# 配置參數(shù)名稱 含義
1 numOfMnodes 系統(tǒng)中管理節(jié)點(diǎn)個(gè)數(shù)
2 mnodeEqualVnodeNum 一個(gè)mnode等同于vnode消耗的個(gè)數(shù)
3 offlineThreshold dnode離線閾值,超過(guò)該時(shí)間將導(dǎo)致Dnode離線
4 statusInterval dnode向mnode報(bào)告狀態(tài)時(shí)長(zhǎng)
5 arbitrator 系統(tǒng)中裁決器的End Point
6 timezone 時(shí)區(qū)
7 balance 是否啟動(dòng)負(fù)載均衡
8 maxTablesPerVnode 每個(gè)vnode中能夠創(chuàng)建的最大表個(gè)數(shù)
9 maxVgroupsPerDb 每個(gè)DB中能夠使用的最大vgroup個(gè)數(shù)

備注:在 2.0.19.0 及更早的版本中,除以上 9 項(xiàng)參數(shù)外,dnode 加入集群時(shí),還會(huì)要求 locale 和 charset 參數(shù)的取值也一致。

啟動(dòng)第一個(gè)數(shù)據(jù)節(jié)點(diǎn)

按照《立即開始》里的指示,啟動(dòng)第一個(gè)數(shù)據(jù)節(jié)點(diǎn),例如h1.taosdata.com,然后執(zhí)行taos, 啟動(dòng)taos shell,從shell里執(zhí)行命令"show dnodes;",如下所示:

Welcome to the TDengine shell from Linux, Client Version:2.0.0.0

Copyright (c) 2017 by TAOS Data, Inc. All rights reserved.

taos> show dnodes;
 id |       end_point    | vnodes | cores | status | role |      create_time        |
=====================================================================================
  1 |  h1.taos.com:6030  |      0 |     2 |  ready |  any | 2020-07-31 03:49:29.202 |
Query OK, 1 row(s) in set (0.006385s)

taos>

上述命令里,可以看到這個(gè)剛啟動(dòng)的這個(gè)數(shù)據(jù)節(jié)點(diǎn)的End Point是:h1.taos.com:6030,就是這個(gè)新集群的firstEp。

啟動(dòng)后續(xù)數(shù)據(jù)節(jié)點(diǎn)

將后續(xù)的數(shù)據(jù)節(jié)點(diǎn)添加到現(xiàn)有集群,具體有以下幾步:

  1. 按照《立即開始》一章的方法在每個(gè)物理節(jié)點(diǎn)啟動(dòng)taosd;(注意:每個(gè)物理節(jié)點(diǎn)都需要在 taos.cfg 文件中將 firstEp參數(shù)配置為新集群首個(gè)節(jié)點(diǎn)的 End Point——在本例中是 h1.taos.com:6030)

  2. 在第一個(gè)數(shù)據(jù)節(jié)點(diǎn),使用CLI程序taos,登錄進(jìn)TDengine系統(tǒng),執(zhí)行命令:

    CREATE DNODE "h2.taos.com:6030"; 

    將新數(shù)據(jù)節(jié)點(diǎn)的End Point (準(zhǔn)備工作中第四步獲知的) 添加進(jìn)集群的EP列表。"fqdn:port"需要用雙引號(hào)引起來(lái),否則出錯(cuò)。請(qǐng)注意將示例的“h2.taos.com:6030" 替換為這個(gè)新數(shù)據(jù)節(jié)點(diǎn)的End Point。

  3. 然后執(zhí)行命令

    SHOW DNODES;

    查看新節(jié)點(diǎn)是否被成功加入。如果該被加入的數(shù)據(jù)節(jié)點(diǎn)處于離線狀態(tài),請(qǐng)做兩個(gè)檢查:

    • 查看該數(shù)據(jù)節(jié)點(diǎn)的taosd是否正常工作,如果沒有正常運(yùn)行,需要先檢查為什么
    • 查看該數(shù)據(jù)節(jié)點(diǎn)taosd日志文件taosdlog.0里前面幾行日志(一般在/var/log/taos目錄),看日志里輸出的該數(shù)據(jù)節(jié)點(diǎn)fqdn以及端口號(hào)是否為剛添加的End Point。如果不一致,需要將正確的End Point添加進(jìn)去。

按照上述步驟可以源源不斷的將新的數(shù)據(jù)節(jié)點(diǎn)加入到集群。

提示:

  • 任何已經(jīng)加入集群在線的數(shù)據(jù)節(jié)點(diǎn),都可以作為后續(xù)待加入節(jié)點(diǎn)的 firstEp。
  • firstEp 這個(gè)參數(shù)僅僅在該數(shù)據(jù)節(jié)點(diǎn)首次加入集群時(shí)有作用,加入集群后,該數(shù)據(jù)節(jié)點(diǎn)會(huì)保存最新的 mnode 的 End Point 列表,不再依賴這個(gè)參數(shù)。
    • 接下來(lái),配置文件中的 firstEp 參數(shù)就主要在客戶端連接的時(shí)候使用了,例如 taos shell 如果不加參數(shù),會(huì)默認(rèn)連接由 firstEp 指定的節(jié)點(diǎn)。
  • 兩個(gè)沒有配置 firstEp 參數(shù)的數(shù)據(jù)節(jié)點(diǎn) dnode 啟動(dòng)后,會(huì)獨(dú)立運(yùn)行起來(lái)。這個(gè)時(shí)候,無(wú)法將其中一個(gè)數(shù)據(jù)節(jié)點(diǎn)加入到另外一個(gè)數(shù)據(jù)節(jié)點(diǎn),形成集群。無(wú)法將兩個(gè)獨(dú)立的集群合并成為新的集群

數(shù)據(jù)節(jié)點(diǎn)管理

上面已經(jīng)介紹如何從零開始搭建集群。集群組建完后,還可以隨時(shí)添加新的數(shù)據(jù)節(jié)點(diǎn)進(jìn)行擴(kuò)容,或刪除數(shù)據(jù)節(jié)點(diǎn),并檢查集群當(dāng)前狀態(tài)。

提示:

  • 以下所有執(zhí)行命令的操作需要先登陸進(jìn)TDengine系統(tǒng),必要時(shí)請(qǐng)使用root權(quán)限。

添加數(shù)據(jù)節(jié)點(diǎn)

執(zhí)行CLI程序taos,執(zhí)行:

CREATE DNODE "fqdn:port"; 

將新數(shù)據(jù)節(jié)點(diǎn)的End Point添加進(jìn)集群的EP列表。"fqdn:port"需要用雙引號(hào)引起來(lái),否則出錯(cuò)。一個(gè)數(shù)據(jù)節(jié)點(diǎn)對(duì)外服務(wù)的fqdn和port可以通過(guò)配置文件taos.cfg進(jìn)行配置,缺省是自動(dòng)獲取?!緩?qiáng)烈不建議用自動(dòng)獲取方式來(lái)配置FQDN,可能導(dǎo)致生成的數(shù)據(jù)節(jié)點(diǎn)的End Point不是所期望的】

刪除數(shù)據(jù)節(jié)點(diǎn)

執(zhí)行CLI程序taos,執(zhí)行:

DROP DNODE "fqdn:port | dnodeID";

通過(guò)"fqdn:port"或"dnodeID"來(lái)指定一個(gè)具體的節(jié)點(diǎn)都是可以的。其中fqdn是被刪除的節(jié)點(diǎn)的FQDN,port是其對(duì)外服務(wù)器的端口號(hào);dnodeID可以通過(guò)SHOW DNODES獲得。

【注意】

  • 一個(gè)數(shù)據(jù)節(jié)點(diǎn)一旦被drop之后,不能重新加入集群。需要將此節(jié)點(diǎn)重新部署(清空數(shù)據(jù)文件夾)。集群在完成drop dnode操作之前,會(huì)將該dnode的數(shù)據(jù)遷移走。

  • 請(qǐng)注意 drop dnode 和 停止taosd進(jìn)程是兩個(gè)不同的概念,不要混淆:因?yàn)閯h除dnode之前要執(zhí)行遷移數(shù)據(jù)的操作,因此被刪除的dnode必須保持在線狀態(tài)。待刪除操作結(jié)束之后,才能停止taosd進(jìn)程。

  • 一個(gè)數(shù)據(jù)節(jié)點(diǎn)被drop之后,其他節(jié)點(diǎn)都會(huì)感知到這個(gè)dnodeID的刪除操作,任何集群中的節(jié)點(diǎn)都不會(huì)再接收此dnodeID的請(qǐng)求。

  • dnodeID是集群自動(dòng)分配的,不得人工指定。它在生成時(shí)是遞增的,不會(huì)重復(fù)。

手動(dòng)遷移數(shù)據(jù)節(jié)點(diǎn)

手動(dòng)將某個(gè)vnode遷移到指定的dnode。

執(zhí)行CLI程序taos,執(zhí)行:

ALTER DNODE <source-dnodeId> BALANCE "VNODE:<vgId>-DNODE:<dest-dnodeId>";

其中:source-dnodeId是源dnodeId,也就是待遷移的vnode所在的dnodeID;vgId可以通過(guò)SHOW VGROUPS獲得,列表的第一列;dest-dnodeId是目標(biāo)dnodeId。

【注意】

  • 只有在集群的自動(dòng)負(fù)載均衡選項(xiàng)關(guān)閉時(shí)(balance設(shè)置為0),才允許手動(dòng)遷移。
  • 只有處于正常工作狀態(tài)的vnode才能被遷移:master/slave,當(dāng)處于offline/unsynced/syncing狀態(tài)時(shí),是不能遷移的。
  • 遷移前,務(wù)必核實(shí)目標(biāo)dnode的資源足夠:CPU、內(nèi)存、硬盤。

查看數(shù)據(jù)節(jié)點(diǎn)

執(zhí)行CLI程序taos,執(zhí)行:

SHOW DNODES;

它將列出集群中所有的dnode,每個(gè)dnode的ID,end_point(fqdn:port),狀態(tài)(ready, offline等),vnode數(shù)目,還未使用的vnode數(shù)目等信息。在添加或刪除一個(gè)數(shù)據(jù)節(jié)點(diǎn)后,可以使用該命令查看。

查看虛擬節(jié)點(diǎn)組

為充分利用多核技術(shù),并提供scalability,數(shù)據(jù)需要分片處理。因此TDengine會(huì)將一個(gè)DB的數(shù)據(jù)切分成多份,存放在多個(gè)vnode里。這些vnode可能分布在多個(gè)數(shù)據(jù)節(jié)點(diǎn)dnode里,這樣就實(shí)現(xiàn)了水平擴(kuò)展。一個(gè)vnode僅僅屬于一個(gè)DB,但一個(gè)DB可以有多個(gè)vnode。vnode的是mnode根據(jù)當(dāng)前系統(tǒng)資源的情況,自動(dòng)進(jìn)行分配的,無(wú)需任何人工干預(yù)。

執(zhí)行CLI程序taos,執(zhí)行:

USE SOME_DATABASE;
SHOW VGROUPS;

vnode的高可用性

TDengine通過(guò)多副本的機(jī)制來(lái)提供系統(tǒng)的高可用性,包括vnode和mnode的高可用性。

vnode的副本數(shù)是與DB關(guān)聯(lián)的,一個(gè)集群里可以有多個(gè)DB,根據(jù)運(yùn)營(yíng)的需求,每個(gè)DB可以配置不同的副本數(shù)。創(chuàng)建數(shù)據(jù)庫(kù)時(shí),通過(guò)參數(shù)replica 指定副本數(shù)(缺省為1)。如果副本數(shù)為1,系統(tǒng)的可靠性無(wú)法保證,只要數(shù)據(jù)所在的節(jié)點(diǎn)宕機(jī),就將無(wú)法提供服務(wù)。集群的節(jié)點(diǎn)數(shù)必須大于等于副本數(shù),否則創(chuàng)建表時(shí)將返回錯(cuò)誤"more dnodes are needed"。比如下面的命令將創(chuàng)建副本數(shù)為3的數(shù)據(jù)庫(kù)demo:

CREATE DATABASE demo replica 3;

一個(gè)DB里的數(shù)據(jù)會(huì)被切片分到多個(gè)vnode group,vnode group里的vnode數(shù)目就是DB的副本數(shù),同一個(gè)vnode group里各vnode的數(shù)據(jù)是完全一致的。為保證高可用性,vnode group里的vnode一定要分布在不同的數(shù)據(jù)節(jié)點(diǎn)dnode里(實(shí)際部署時(shí),需要在不同的物理機(jī)上),只要一個(gè)vgroup里超過(guò)半數(shù)的vnode處于工作狀態(tài),這個(gè)vgroup就能正常的對(duì)外服務(wù)。

一個(gè)數(shù)據(jù)節(jié)點(diǎn)dnode里可能有多個(gè)DB的數(shù)據(jù),因此一個(gè)dnode離線時(shí),可能會(huì)影響到多個(gè)DB。如果一個(gè)vnode group里的一半或一半以上的vnode不工作,那么該vnode group就無(wú)法對(duì)外服務(wù),無(wú)法插入或讀取數(shù)據(jù),這樣會(huì)影響到它所屬的DB的一部分表的讀寫操作。

因?yàn)関node的引入,無(wú)法簡(jiǎn)單地給出結(jié)論:“集群中過(guò)半數(shù)據(jù)節(jié)點(diǎn)dnode工作,集群就應(yīng)該工作”。但是對(duì)于簡(jiǎn)單的情形,很好下結(jié)論。比如副本數(shù)為3,只有三個(gè)dnode,那如果僅有一個(gè)節(jié)點(diǎn)不工作,整個(gè)集群還是可以正常工作的,但如果有兩個(gè)數(shù)據(jù)節(jié)點(diǎn)不工作,那整個(gè)集群就無(wú)法正常工作了。

Mnode的高可用性

TDengine集群是由mnode (taosd的一個(gè)模塊,管理節(jié)點(diǎn)) 負(fù)責(zé)管理的,為保證mnode的高可用,可以配置多個(gè)mnode副本,副本數(shù)由系統(tǒng)配置參數(shù)numOfMnodes決定,有效范圍為1-3。為保證元數(shù)據(jù)的強(qiáng)一致性,mnode副本之間是通過(guò)同步的方式進(jìn)行數(shù)據(jù)復(fù)制的。

一個(gè)集群有多個(gè)數(shù)據(jù)節(jié)點(diǎn)dnode,但一個(gè)dnode至多運(yùn)行一個(gè)mnode實(shí)例。多個(gè)dnode情況下,哪個(gè)dnode可以作為mnode呢?這是完全由系統(tǒng)根據(jù)整個(gè)系統(tǒng)資源情況,自動(dòng)指定的。用戶可通過(guò)CLI程序taos,在TDengine的console里,執(zhí)行如下命令:

SHOW MNODES;

來(lái)查看mnode列表,該列表將列出mnode所處的dnode的End Point和角色(master, slave, unsynced 或offline)。當(dāng)集群中第一個(gè)數(shù)據(jù)節(jié)點(diǎn)啟動(dòng)時(shí),該數(shù)據(jù)節(jié)點(diǎn)一定會(huì)運(yùn)行一個(gè)mnode實(shí)例,否則該數(shù)據(jù)節(jié)點(diǎn)dnode無(wú)法正常工作,因?yàn)橐粋€(gè)系統(tǒng)是必須有至少一個(gè)mnode的。如果numOfMnodes配置為2,啟動(dòng)第二個(gè)dnode時(shí),該dnode也將運(yùn)行一個(gè)mnode實(shí)例。

為保證mnode服務(wù)的高可用性,numOfMnodes必須設(shè)置為2或更大。因?yàn)閙node保存的元數(shù)據(jù)必須是強(qiáng)一致的,如果numOfMnodes大于2,復(fù)制參數(shù)quorum自動(dòng)設(shè)為2,也就是說(shuō),至少要保證有兩個(gè)副本寫入數(shù)據(jù)成功,才通知客戶端應(yīng)用寫入成功。

注意:一個(gè)TDengine高可用系統(tǒng),無(wú)論是vnode還是mnode, 都必須配置多個(gè)副本。

負(fù)載均衡

有三種情況,將觸發(fā)負(fù)載均衡,而且都無(wú)需人工干預(yù)。

  • 當(dāng)一個(gè)新數(shù)據(jù)節(jié)點(diǎn)添加進(jìn)集群時(shí),系統(tǒng)將自動(dòng)觸發(fā)負(fù)載均衡,一些節(jié)點(diǎn)上的數(shù)據(jù)將被自動(dòng)轉(zhuǎn)移到新數(shù)據(jù)節(jié)點(diǎn)上,無(wú)需任何人工干預(yù)。
  • 當(dāng)一個(gè)數(shù)據(jù)節(jié)點(diǎn)從集群中移除時(shí),系統(tǒng)將自動(dòng)把該數(shù)據(jù)節(jié)點(diǎn)上的數(shù)據(jù)轉(zhuǎn)移到其他數(shù)據(jù)節(jié)點(diǎn),無(wú)需任何人工干預(yù)。
  • 如果一個(gè)數(shù)據(jù)節(jié)點(diǎn)過(guò)熱(數(shù)據(jù)量過(guò)大),系統(tǒng)將自動(dòng)進(jìn)行負(fù)載均衡,將該數(shù)據(jù)節(jié)點(diǎn)的一些vnode自動(dòng)挪到其他節(jié)點(diǎn)。

當(dāng)上述三種情況發(fā)生時(shí),系統(tǒng)將啟動(dòng)各個(gè)數(shù)據(jù)節(jié)點(diǎn)的負(fù)載計(jì)算,從而決定如何挪動(dòng)。

【提示】負(fù)載均衡由參數(shù)balance控制,它決定是否啟動(dòng)自動(dòng)負(fù)載均衡, 0 表示禁用, 1 表示啟用自動(dòng)負(fù)載均衡。

數(shù)據(jù)節(jié)點(diǎn)離線處理

如果一個(gè)數(shù)據(jù)節(jié)點(diǎn)離線,TDengine集群將自動(dòng)檢測(cè)到。有如下兩種情況:

  • 該數(shù)據(jù)節(jié)點(diǎn)離線超過(guò)一定時(shí)間(taos.cfg里配置參數(shù)offlineThreshold控制時(shí)長(zhǎng)),系統(tǒng)將自動(dòng)把該數(shù)據(jù)節(jié)點(diǎn)刪除,產(chǎn)生系統(tǒng)報(bào)警信息,觸發(fā)負(fù)載均衡流程。如果該被刪除的數(shù)據(jù)節(jié)點(diǎn)重新上線時(shí),它將無(wú)法加入集群,需要系統(tǒng)管理員重新將其添加進(jìn)集群才會(huì)開始工作。
  • 離線后,在offlineThreshold的時(shí)長(zhǎng)內(nèi)重新上線,系統(tǒng)將自動(dòng)啟動(dòng)數(shù)據(jù)恢復(fù)流程,等數(shù)據(jù)完全恢復(fù)后,該節(jié)點(diǎn)將開始正常工作。

注意:如果一個(gè)虛擬節(jié)點(diǎn)組(包括mnode組)里所歸屬的每個(gè)數(shù)據(jù)節(jié)點(diǎn)都處于離線或unsynced狀態(tài),必須等該虛擬節(jié)點(diǎn)組里的所有數(shù)據(jù)節(jié)點(diǎn)都上線、都能交換狀態(tài)信息后,才能選出Master,該虛擬節(jié)點(diǎn)組才能對(duì)外提供服務(wù)。比如整個(gè)集群有3個(gè)數(shù)據(jù)節(jié)點(diǎn),副本數(shù)為3,如果3個(gè)數(shù)據(jù)節(jié)點(diǎn)都宕機(jī),然后2個(gè)數(shù)據(jù)節(jié)點(diǎn)重啟,是無(wú)法工作的,只有等3個(gè)數(shù)據(jù)節(jié)點(diǎn)都重啟成功,才能對(duì)外服務(wù)。

Arbitrator的使用

如果副本數(shù)為偶數(shù),當(dāng)一個(gè) vnode group 里一半或超過(guò)一半的 vnode 不工作時(shí),是無(wú)法從中選出 master 的。同理,一半或超過(guò)一半的 mnode 不工作時(shí),是無(wú)法選出 mnode 的 master 的,因?yàn)榇嬖凇皊plit brain”問(wèn)題。為解決這個(gè)問(wèn)題,TDengine 引入了 Arbitrator 的概念。Arbitrator 模擬一個(gè) vnode 或 mnode 在工作,但只簡(jiǎn)單的負(fù)責(zé)網(wǎng)絡(luò)連接,不處理任何數(shù)據(jù)插入或訪問(wèn)。只要包含 Arbitrator 在內(nèi),超過(guò)半數(shù)的 vnode 或 mnode 工作,那么該 vnode group 或 mnode 組就可以正常的提供數(shù)據(jù)插入或查詢服務(wù)。比如對(duì)于副本數(shù)為 2 的情形,如果一個(gè)節(jié)點(diǎn) A 離線,但另外一個(gè)節(jié)點(diǎn) B 正常,而且能連接到 Arbitrator,那么節(jié)點(diǎn) B 就能正常工作。

總之,在目前版本下,TDengine 建議在雙副本環(huán)境要配置 Arbitrator,以提升系統(tǒng)的可用性。

Arbitrator 的執(zhí)行程序名為 tarbitrator。該程序?qū)ο到y(tǒng)資源幾乎沒有要求,只需要保證有網(wǎng)絡(luò)連接,找任何一臺(tái) Linux 服務(wù)器運(yùn)行它即可。以下簡(jiǎn)要描述安裝配置的步驟:

  1. 請(qǐng)點(diǎn)擊 安裝包下載,在 TDengine Arbitrator Linux 一節(jié)中,選擇合適的版本下載并安裝。
  2. 該應(yīng)用的命令行參數(shù) -p 可以指定其對(duì)外服務(wù)的端口號(hào),缺省是 6042。
  3. 修改每個(gè) taosd 實(shí)例的配置文件,在 taos.cfg 里將參數(shù) arbitrator 設(shè)置為 tarbitrator 程序所對(duì)應(yīng)的 End Point。(如果該參數(shù)配置了,當(dāng)副本數(shù)為偶數(shù)時(shí),系統(tǒng)將自動(dòng)連接配置的 Arbitrator。如果副本數(shù)為奇數(shù),即使配置了 Arbitrator,系統(tǒng)也不會(huì)去建立連接。)
  4. 在配置文件中配置了的 Arbitrator,會(huì)出現(xiàn)在 SHOW DNODES; 指令的返回結(jié)果中,對(duì)應(yīng)的 role 列的值會(huì)是“arb”。

查看集群 Arbitrator 的狀態(tài)【2.0.14.0 以后支持】

SHOW DNODES;