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

TDengine容器化部署的最佳實(shí)踐

隨著容器化的流行,越來越多的項(xiàng)目采取了容器化方案來設(shè)計(jì)架構(gòu)、實(shí)施部署。

作為時(shí)序數(shù)據(jù)引擎核心的TDengine Database,在部署時(shí)一般建議采用FQDN(Fully Qualified Domain Name,完全限定域名)來進(jìn)行節(jié)點(diǎn)之間的通信。很多客戶在進(jìn)行容器化架構(gòu)設(shè)計(jì)時(shí),通信方式均采用IP地址尋址,而且由于這些容器的IP、容器名(也就是hostname)會(huì)隨著容器的生命周期變化而變化,這就給TDengine采用hostname作為FQDN尋址進(jìn)行通信帶來了困難。

本文將結(jié)合實(shí)際,嘗試給出一最佳實(shí)踐建議,以實(shí)現(xiàn)以下兩個(gè)需求:

  • TDengine集群節(jié)點(diǎn)采用IP地址尋址
  • 應(yīng)用端無需配置集群節(jié)點(diǎn)IP/FQDN地址,而僅采用LoadBalancer域名作為firstEP實(shí)現(xiàn)集群尋址

假設(shè)TDengine集群由兩個(gè)節(jié)點(diǎn)組成,IP分別為172.16.31.1和172.16.31.2。

在深入之前,希望讀者先對(duì)TDengine的整體架構(gòu)有所了解,可以參考:https://tdengine.com/docs/cn/v2.0/architecture#cluster。

我們?cè)賮韽?qiáng)調(diào)TDengine Database中的幾個(gè)概念:

  • 物理節(jié)點(diǎn)(pnode): pnode是一獨(dú)立運(yùn)行、擁有自己的計(jì)算、存儲(chǔ)和網(wǎng)絡(luò)能力的計(jì)算機(jī),可以是安裝有OS的物理機(jī)、虛擬機(jī)或Docker容器。物理節(jié)點(diǎn)由其配置的 FQDN來標(biāo)識(shí)。
  • 數(shù)據(jù)節(jié)點(diǎn)(dnode): dnode 是 TDengine 服務(wù)器側(cè)執(zhí)行代碼 taosd 在物理節(jié)點(diǎn)上的一個(gè)運(yùn)行實(shí)例,一個(gè)工作的系統(tǒng)必須有至少一個(gè)數(shù)據(jù)節(jié)點(diǎn)。dnode包含零到多個(gè)邏輯的虛擬節(jié)點(diǎn)(VNODE),零或者至多一個(gè)邏輯的管理節(jié)點(diǎn)(mnode)。dnode在系統(tǒng)中的唯一標(biāo)識(shí)由實(shí)例的End Point (EP )決定。EP是dnode所在物理節(jié)點(diǎn)的FQDN和系統(tǒng)所配置的網(wǎng)絡(luò)端口號(hào)(Port)的組合。
  • 管理節(jié)點(diǎn)(mnode): 一個(gè)虛擬的邏輯單元,負(fù)責(zé)所有數(shù)據(jù)節(jié)點(diǎn)運(yùn)行狀態(tài)的監(jiān)控和維護(hù),以及節(jié)點(diǎn)之間的負(fù)載均衡。同時(shí),管理節(jié)點(diǎn)也負(fù)責(zé)元數(shù)據(jù)(包括用戶、數(shù)據(jù)庫、表、靜態(tài)標(biāo)簽等)的存儲(chǔ)和管理。

客戶端初始化的基本流程是:應(yīng)用通過taosc原生接口訪問TDengine,需要通過firstEP找到集群,獲取到集群的元數(shù)據(jù)(meta-data),也就是集群所有節(jié)點(diǎn)列表(FQDN 或 IP列表)。客戶端驅(qū)動(dòng)一旦獲得列表后,即可按列表與集群對(duì)應(yīng)的節(jié)點(diǎn)進(jìn)行通信了。默認(rèn)的通信方式是:15K以下的數(shù)據(jù)走UDP協(xié)議,15K以上的走TCP協(xié)議。

理解了以上流程,我們就可以利用負(fù)載均衡器LoadBalancer的相關(guān)特點(diǎn)幫助我們實(shí)現(xiàn)去hostname的容器化部署了。當(dāng)然,本方案也同樣可以用在非容器化部署,但希望采用IP地址部署TDengine的場(chǎng)景。

TDengine容器化部署的最佳實(shí)踐 - TDengine Database 時(shí)序數(shù)據(jù)庫

在這個(gè)方案里,firstEP指向LoadBalancer的域名及對(duì)應(yīng)的端口(默認(rèn)為6030)。我們假設(shè)LoadBalancer的域名是lb.taosdata.com。TDengine集群節(jié)點(diǎn)尋址采用IP地址作為FQDN:172.16.31.1/172.16.31.2。

應(yīng)用通過客戶端驅(qū)動(dòng)去連接firstEP:lb.taosdata.com:6030。LoadBalancer收到請(qǐng)求后,根據(jù)預(yù)先設(shè)定好的負(fù)載均衡策略,將請(qǐng)求轉(zhuǎn)發(fā)給預(yù)設(shè)的TDengine節(jié)點(diǎn)——172.16.31.1:6030 或 172.16.31.2:6030,收到該消息的節(jié)點(diǎn)將meta-data消息原路返回給請(qǐng)求者(如當(dāng)前節(jié)點(diǎn)不是mnode主節(jié)點(diǎn),會(huì)觸發(fā)重定向,后續(xù)流程類似),最終應(yīng)用/客戶端應(yīng)用驅(qū)動(dòng)刷新獲得了meta-data列表。

之后,應(yīng)用需要建立與集群任一節(jié)點(diǎn)的通信時(shí),無需通過LoadBalancer,將直接通過已獲得的IP列表發(fā)起連接,實(shí)現(xiàn)通信。

TDengine容器化部署的最佳實(shí)踐 - TDengine Database 時(shí)序數(shù)據(jù)庫

最后一點(diǎn),也是最重要的一點(diǎn):如果完成以上步驟不能成功通信,那么有可能是您的LB不支持UDP,或UDP丟包率過高導(dǎo)致。解決方法很簡(jiǎn)單,打開所有節(jié)點(diǎn)(包括所有客戶端和服務(wù)端)的rpcForceTCP開關(guān),將所有發(fā)起的通信轉(zhuǎn)為TCP通信而不再采用UDP通信,確保穿透LoadBalancer的通信均走TCP實(shí)現(xiàn)。