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

【社區(qū)精選】在Docker環(huán)境下,TDengine的客戶端為什么連不上集群?

作者|陳玉

最近,在TDengine Database的一個社區(qū)群中突發(fā)了一場嚴(yán)重的灌水事件。幾位群友不眠不休地聊天,可以說是廢寢忘食。那么到底是什么話題能讓他們凌晨四點(diǎn)還在忘我地討論?

這個話題就是——如何完善Docker環(huán)境下TDengine Database的集群搭建?!笆裁??除了你們官方自己人之外,怎么會有用戶加班加點(diǎn)地討論如何完善Docker環(huán)境的集群搭建,這也太假了。”

聊天截圖1

好吧,我們承認(rèn):其實(shí)是有一個叫Oliver(群昵稱)的用戶遇到了這樣的問題——辛辛苦苦搭起來Docker環(huán)境下的TDengine集群在客戶端連不上了。接下來,就引發(fā)了群里的二位熱心大佬的討論不休,直到想出最后的解決方案。

事情的經(jīng)過是這樣的:

該用戶的數(shù)據(jù)庫集群裝在這臺Linux服務(wù)器上(ip:10.0.31.2),容器ip所在的網(wǎng)絡(luò)是由Docker在宿主機(jī)創(chuàng)建的虛擬網(wǎng)絡(luò)172.19.0.0/16。三個容器的hostname和節(jié)點(diǎn)ip分別:taosnode1(172.19.0.41)、taosnode2(172.19.0.42)、taosnode3(172.19.0.43)。

各個節(jié)點(diǎn)配置如下:

taosnode1: firstEp=taosnode1:6030,secondEp=taosnode2:6030,fqdn=taosnode1;端口映射:16030-16042:6030-6042(tcp/udp)
taosnode2: firstEp=taosnode1:6030,secondEp=taosnode2:6030,fqdn=taosnode2;端口映射:26030-26042:6030-6042(tcp/udp)
taosnode3: firstEp=taosnode1:6030,secondEp=taosnode2:6030,fqdn=taosnode3;端口映射:36030-36042:6030-6042(tcp/udp)

按照官方文檔的指示努力折騰一番后,Oliver終于搭起了這個集群。添加完節(jié)點(diǎn)之后,他忐忑地敲下了“show dnodes”,隨著三個READY映入眼簾后———舒坦了。

服務(wù)端沒有問題,接下來該客戶端了。他打開了自己的一臺ip為10.0.31.5(與集群宿主機(jī)同一網(wǎng)段)的Windows主機(jī),迅速地在上面安裝了個TDengine客戶端,添加hosts信息,做好路由,2.8MB,傻瓜式安裝,輕松便捷,連接集群一氣呵成?!皊how dnodes”隨著三個READY再次映入眼簾后———又舒坦了。

Oliver十分滿意,然而,他馬上發(fā)現(xiàn)事情可能并不像想象中的那么簡單。

由于業(yè)務(wù)需要,他還需要完成客戶端(10.0.2.61)跨網(wǎng)段連接服務(wù)端集群(基于ip:10.0.31.2的Docker環(huán)境下的集群)。ping得通宿主機(jī),telnet得通集群映射出來的端口,使用taos連接集群,一樣的操作也和此前一樣順利。于是他再次敲下“show dnodes”——萬萬沒想到,這時令所有TDengine用戶都深惡痛絕的“DB error:Unable to establish connection”出現(xiàn)了。于是,他便在群中拋出了自己的問題。

DB error:Unable to establish connection

上文說到的兩位熱心的同學(xué)就是在這個時候出現(xiàn)的。一位是TDengine的外部Contributor——Freemine。另一位是路見問題拔刀相助的熱心大佬pigwing。

由于集群本身沒有任何使用問題,唯一的區(qū)別就是客戶端連接服務(wù)器的方式變成了跨網(wǎng)段。所以,一開始大家的思路就是——既然走宿主機(jī)的端口不行,那就試試直接連到Docker環(huán)境下的ip吧。遺憾的是,跨網(wǎng)段連接Docker環(huán)境下內(nèi)部ip的想法沒能實(shí)現(xiàn)。

接著大家推測:TDengine靠的是EndPoint(EP)來識別數(shù)據(jù)節(jié)點(diǎn),而EP=FQDN+端口。可客戶端連接已經(jīng)成功,只是無法對數(shù)據(jù)操作,在FQDN無誤的情況下,大家猜測是集群內(nèi)的端口出現(xiàn)了問題,從而沒拿到集群的拓?fù)湫畔ⅰ=酉聛?,從最初的了解環(huán)境,到一步一步的排查問題,三個鍥而不舍的工程師在群里從4月22日討論到4月25,最晚的時候凌晨4點(diǎn)多都有人在線。

聊天截圖2

終于,在三人的通力合作多次試錯下,4月24日凌晨1點(diǎn)——freemine提出了一個行之有效的最終解決方案(文字過多只截圖關(guān)鍵部分)

聊天截圖3
聊天截圖4

大功告成,經(jīng)過測試后,一切順利!

那么,freemine的集群搭建方案和最初的集群搭建有什么區(qū)別呢?

雖然過程曲折,但是最后我們仔細(xì)對比一下兩者的方案就會發(fā)現(xiàn),它們的區(qū)別就只有在端口配置這一塊不一樣。freemine的方案是在每一個單機(jī)的serverport都修改了不一樣的值。taosnode1節(jié)點(diǎn)的serverport為6030—映射主機(jī)的6030端口;taosnode2節(jié)點(diǎn)的serverport為7030–映射主機(jī)的7030端口;taosnode3節(jié)點(diǎn)的serverport為8030–映射主機(jī)的8030端口。

而提問者Oliver最初的各個節(jié)點(diǎn)的serverport都是沒做修改的默認(rèn)6030,映射到宿主機(jī)的時候是16030,26030,36030。就是這樣的配置在客戶端與集群宿主機(jī)的同網(wǎng)段連接時并沒有發(fā)生問題,而是在跨網(wǎng)段連接時出現(xiàn)問題。

看起來一絲小小的改動居然有這么大的區(qū)別?Why?

其實(shí)是這樣,當(dāng)客戶端與服務(wù)端同屬一個網(wǎng)段的時候,在添加路由后,客戶端是可以直接訪問到Docker內(nèi)部的。這樣一來,IP地址就可以根據(jù)需要被正確地解析出來。如:taosnode1(172.19.0.41)、taosnode2(172.19.0.42)、taosnode3(172.19.0.43)。在不同的IP地址下,即便端口都是一樣的6030,TDengine還是可以完成不同節(jié)點(diǎn)的區(qū)分。

但是,當(dāng)跨網(wǎng)段之后就不一樣了。對于不同網(wǎng)段的客戶端和服務(wù)端而言,客戶端要通過真實(shí)路由去連接服務(wù)端,但真實(shí)路由中并沒有注冊我們設(shè)置的Docker內(nèi)部網(wǎng)絡(luò),所以客戶端自然就訪問不了Docker內(nèi)部的網(wǎng)絡(luò)。因此,當(dāng)taosc需要得到集群提供的不同節(jié)點(diǎn)的信息時,F(xiàn)QDN已經(jīng)無法正確解析IP地址了。這時候,就需要通過端口來實(shí)現(xiàn)不同節(jié)點(diǎn)的區(qū)分。

這就是不能再在Docker環(huán)境下的節(jié)點(diǎn)中同時使用6030端口的原因。

因此,當(dāng)你使用了Docker主機(jī)內(nèi)外一致的端口映射,且每個節(jié)點(diǎn)的serverPort參數(shù)不相同的設(shè)置時,集群就可以通過不同的端口來區(qū)分不同的節(jié)點(diǎn)。這樣一來,客戶端才可以拿到拓?fù)湫畔⑦M(jìn)行集群的順利操作。

這就是整個“案件”的最終答案。

總結(jié)一下,對于用戶使用而言,Docker環(huán)境下搭建TDengine Database集群的水還是頗深。由于環(huán)境的相對復(fù)雜,所以我們也并不是十分推薦大家使用這種方式搭建集群。所以,關(guān)于TDengine在Docker環(huán)境的使用,大家還是要小心謹(jǐn)慎。

最后我們想說的是,作為一個開源的產(chǎn)品,社區(qū)的活躍與專業(yè)是我們濤思數(shù)據(jù)最為關(guān)注的地方。雖然目前官網(wǎng)上并沒有關(guān)于Docker環(huán)境下TDengine集群搭建的文檔。但是這些社區(qū)用戶們的活躍思考顯然很大程度填補(bǔ)了這樣的一個空白。

真心感謝Oliver,freemine,pigwing三位朋友。十分希望日后可以繼續(xù)看到你們在物聯(lián)網(wǎng)大數(shù)據(jù)技術(shù)前沿群中的活躍身影,同時我們也希望有更多的朋友們能夠參與進(jìn)來。

掃描二維碼,添加小T為好友,即可與各位熱衷開源的朋友一起在群內(nèi)互動哦~

小T二維碼

點(diǎn)擊“這里”,查看Oliver整理的TDengine在Docker環(huán)境下的集群搭建筆記