TiDB 硬件選型詳解

很多用戶在調(diào)研完 TiDB 之后,就會進(jìn)入測試環(huán)節(jié)缚窿,這里詳細(xì)描述一下硬件選型的相關(guān)考慮點(diǎn)丰辣。

測試環(huán)境

首先來談?wù)劀y試環(huán)境。如果是純兼容性驗(yàn)證翼闽,推薦官網(wǎng)上的 docker-compose 部署即可拾徙,后面會單獨(dú)列一份 docker 部署上可能會遇到的問題 list,不過一般來說感局,docker 部署都是比較簡單易用的尼啡。


如果希望有一些直觀上的印象,比如大概了解一下 tidb-ansible询微,各組件的啟停崖瞭,配置,日志等撑毛《潦眩可以申請一臺配置稍高點(diǎn)的虛擬機(jī),16C32G代态,將幾個組件都部署在同一臺服務(wù)器上寺惫,這樣也是可以 run 的,只是無法做高可用蹦疑、性能等相關(guān)測試西雀。


如果希望做一些功能測試驗(yàn)證,例如在線添加縮容節(jié)點(diǎn)歉摧,破壞性測試等艇肴,那么必須要滿足以下基本條件

1腔呜、tidb-server 至少兩臺服務(wù)器(虛機(jī))

2、tikv-server 至少三臺服務(wù)器(虛機(jī))再悼,注意是三臺獨(dú)立的服務(wù)器核畴,而不是三個 tikv 實(shí)例

3、pd-server 至少三臺服務(wù)器(虛機(jī)冲九,可以和 tidb-server 混合部署)

也就是至少五臺服務(wù)器谤草,當(dāng)然如果要測試添加節(jié)點(diǎn),得再準(zhǔn)備一臺服務(wù)器作為備用莺奸。如果想測試 tidb-server 的高可用丑孩,還得準(zhǔn)備 haproxy 的服務(wù)器(測試的話也可以和 tidb-server 混合部署)。

有些用戶會找過來灭贷,說你們的 pd 擴(kuò)容方案按照官網(wǎng)的操作失敗了温学,最后一查只有一臺 pd-server,添加到兩臺甚疟。這種由于 pd-server 內(nèi)部也組了一個 raft-group仗岖,它也得滿足多數(shù)派協(xié)議,所以只有一個 pd-server 的話是沒法 rolling_update 的览妖,只能先 stop 集群再 start 才可以箩帚。還有一些用戶只有兩臺服務(wù)器,上面部署了多個 tikv 實(shí)例黄痪,雖然看似滿足了3個 tikv 節(jié)點(diǎn)的需求,但是要知道如果在一臺服務(wù)器上部署多個 tikv 實(shí)例盔然,pd 的調(diào)度是不會把數(shù)據(jù)在這臺服務(wù)器上存儲多份的桅打,因?yàn)檫@樣對于高可用來說毫無意義。所以上面的要求是最低要求愈案,如果不滿足挺尾,就不要做相關(guān)的功能性測試,因?yàn)榻Y(jié)果一定是非預(yù)期的站绪。


生產(chǎn)環(huán)境

有些人可能會說遭铺,還會有一種測試場景,那就是性能測試恢准。對于 TiDB 來說魂挂,如果要測性能,那么兩大基本條件 SSD 磁盤 + 萬兆網(wǎng)絡(luò)是必須要滿足的馁筐,所以這個場景也一并歸納到生產(chǎn)環(huán)境來說吧涂召。

首先看看TiDB 集群各組件的功能

1、tidb-server?

主要負(fù)責(zé)接收 client 端的請求敏沉,解析并轉(zhuǎn)化為 kv-api 發(fā)送給 kv果正,同時也會承擔(dān)部分聚合計(jì)算的功能(如果計(jì)算無法下推炎码,或者需要對下推的結(jié)果集再次進(jìn)行計(jì)算的場景)。所以 tidb-server 的資源規(guī)劃就很明顯了秋泳,如果是典型的 TP 類場景潦闲,業(yè)務(wù)并發(fā)較高,但幾乎都是點(diǎn)查點(diǎn)寫迫皱,那么整個系統(tǒng)的瓶頸大概率先出現(xiàn)在 tidb-server歉闰,所以 tidb-server 的 cpu 高一點(diǎn),數(shù)量多一點(diǎn)是一個更好的選擇舍杜。如果是 AP 類場景新娜,業(yè)務(wù)并發(fā)較低(100以下),那么 tidb-server 的 cpu 不太可能成為瓶頸,選擇大一點(diǎn)的內(nèi)存會更好。

2缚柏、tikv-server?

主要負(fù)責(zé)數(shù)據(jù)的存儲捉腥,同時在 tikv-server 上有兩個進(jìn)程分別是 corprocessor 和 schedule 來負(fù)責(zé)處理讀寫請求,可以認(rèn)為 tikv 不僅僅是存儲節(jié)點(diǎn)奠涌,它也會負(fù)責(zé)(大)部分計(jì)算的功能。如果是 TP 類場景,查詢的瓶頸一般會先出現(xiàn)在 tidb 上衰粹,如果是寫入量較高,那么更多的 tikv 實(shí)例是更好的選擇笆怠,推薦是3的倍數(shù)铝耻。如果是 AP 類場景,需要更多 CPU蹬刷,內(nèi)存以及更多的 tikv 實(shí)例瓢捉。

3、pd-server?

主要負(fù)責(zé)兩個功能办成,一是全局唯一的事務(wù)號的分配泡态,二是整個集群的元數(shù)據(jù)信息。所以 pd-server 不需要太多的資源迂卢,8c32G 內(nèi)存某弦,200G 磁盤就可以,在集群規(guī)模較大元數(shù)據(jù)較多的情況下而克,推薦使用 SSD 磁盤靶壮。但是 pd-server 的穩(wěn)定性對于整個集群來說至關(guān)重要,所以推薦單獨(dú)的服務(wù)器部署 pd-server员萍,而且要有三個節(jié)點(diǎn)亮钦。

4、monitor-server?

主要負(fù)責(zé)監(jiān)控?cái)?shù)據(jù)的收集以及展示充活,如果節(jié)點(diǎn)數(shù)(tidb 實(shí)例 + tikv 實(shí)例 + pd 實(shí)例)數(shù)量超過10個蜂莉,推薦16c32G 及以上配置蜡娶,目前默認(rèn)保留15天的監(jiān)控?cái)?shù)據(jù),后面可能會調(diào)整為一個月或者更長映穗,磁盤空間按照2G 每個實(shí)例每15天來計(jì)算即可窖张。建議 monitor 服務(wù)器單獨(dú)部署,不要跟其他組件混合部署蚁滋,否則監(jiān)控?cái)?shù)據(jù)落盤的時候可能會引起資源競爭宿接,極端的情況遇到過影響到 pd,從而集群短時間不可用的案例辕录。

5睦霎、haproxy + keepalived (集群外組件)

主要負(fù)責(zé) tidb-server 的負(fù)載均衡及高可用切換,建議單獨(dú)部署走诞,根據(jù)業(yè)務(wù)并發(fā)量來申請配置副女,至少不低于8core,而且 haproxy 的配置文件中需要開啟多線程以及 timeout 時間調(diào)長蚣旱。




綜合來看碑幅,結(jié)論如下:

1、監(jiān)控服務(wù)器需要單獨(dú)部署塞绿,可以用虛機(jī)沟涨,推薦16c32G 及以上配置,可以用普通磁盤异吻,空間按照每個(tidb/ tikv/ pd)實(shí)例4GB /月來估算裹赴。

2、pd 服務(wù)器對于性能要求不高诀浪,但是需要穩(wěn)定棋返,所以推薦單獨(dú)部署8c16g200G SSD 磁盤即可,生產(chǎn)環(huán)境必須要部署3個 pd 節(jié)點(diǎn)笋妥。如果一定要混合部署,只能和 tidb 一起窄潭,并且要保證 tidb-server 的壓力不大春宣。否則一旦出現(xiàn) tidb 把服務(wù)器的 cpu 吃光,或者把內(nèi)存吃光出現(xiàn) oom嫉你,可能會影響到 pd月帝,甚至?xí)鹫麄€集群短時間不可用的情況。

3幽污、tikv 服務(wù)器必須獨(dú)立部署嚷辅,數(shù)據(jù)目錄必須為 SSD,如果為 Nvme 磁盤更好距误,如果是公有云服務(wù)器選擇本地 SSD 磁盤簸搞。tikv 服務(wù)器可以考慮多實(shí)例部署扁位,按照每個 tikv 實(shí)例 16core,64G 內(nèi)存趁俊,1.5T 的磁盤來配比即可域仇。最佳實(shí)踐是,例如服務(wù)器是2路12core 的 CPU 型號寺擂,打開超線程之后就是48core暇务,那么配置內(nèi)存最好是256G,同時配置3塊獨(dú)立的單塊容量不超過2T 的 Nvme 磁盤怔软。單臺服務(wù)器的數(shù)據(jù)目錄不能像 Hadoop 的存儲節(jié)點(diǎn)一樣配置幾十 T垦细,試想一下如果在線環(huán)境出現(xiàn)服務(wù)器下線的情況,十T 的數(shù)據(jù) rebalance 到其它節(jié)點(diǎn)挡逼,對于集群性能和時延的影響是很大的括改,這一點(diǎn)跟 Hadoop 的離線系統(tǒng)不太一樣。

4挚瘟、tikv 服務(wù)器的磁盤最好用 Nvme 磁盤叹谁,最多2個 tikv 實(shí)例共享一塊 Nvme 盤,如果是普通 SSD 磁盤乘盖,那么不管做不做 RAID焰檩,都不要出現(xiàn)多個 tikv 實(shí)例共享一塊磁盤的情況。如果是普通 SSD订框,可以考慮多塊盤做 RAID10的方式來增加隨機(jī)讀的 IOPS析苫,但是寫入的 IOPS 幾乎跟單盤類似,沒有明顯的提升穿扳。生產(chǎn)環(huán)境不推薦用 RAID0的方式衩侥,因?yàn)閾p壞1塊磁盤之后整個 RAID 組不可用,雖然 tikv 有多副本的機(jī)制能夠?qū)⒂绊懡档阶畹兔铮?tikv 的下線上線茫死,上 T 數(shù)據(jù)的遷移調(diào)度是會對性能和時延產(chǎn)生影響的。另外生產(chǎn)環(huán)境的數(shù)據(jù)庫服務(wù)器也不推薦 RAID5履羞,如果壞了一塊磁盤峦萎,對于寫入的影響非常大,而分布式系統(tǒng)存在木桶效應(yīng)忆首,如果某一個tikv 實(shí)例的寫入非常慢爱榔,會影響到整個集群的性能。所以結(jié)論就是糙及,要么不用 RAID详幽,要么用 RAID10,其他方式都不推薦,當(dāng)然首推 Nvme 磁盤唇聘,其次是 RAID10 的普通 SSD版姑。

5、tidb 服務(wù)器的 cpu 不需要太高雳灾,48c足夠漠酿,如果是 AP 業(yè)務(wù),內(nèi)存推薦128G 以上谎亩。磁盤幾乎沒有要求炒嘲,普通的機(jī)械盤即可,如果需要開啟binlog 功能匈庭,容量在1T 以內(nèi)也基本夠用了夫凸,如果規(guī)模比較大的集群需要導(dǎo)出數(shù)據(jù)或者做全量備份,推薦在指定的一個 tidb-server 上掛一個容量較大的外掛磁盤即可阱持。生產(chǎn)環(huán)境至少2臺 tidb-server夭拌,這樣前端接 haproxy / F5 才能保證高可用,如果業(yè)務(wù)并發(fā)較高衷咽,或者希望做多個業(yè)務(wù)側(cè)在計(jì)算層的資源隔離鸽扁,也可以按需規(guī)劃。

6镶骗、haproxy 需要獨(dú)立部署桶现,跟監(jiān)控服務(wù)器一樣,可以用虛機(jī)來做鼎姊,一般會部署兩臺服務(wù)器骡和,然后通過 keepalived 做高可用。因?yàn)楹蠖说?tidb-server 是無狀態(tài)的相寇,所以不需要擔(dān)心類似 MySQL 方案中的腦裂現(xiàn)象慰于。

7、有一些小的細(xì)節(jié)方面唤衫,例如 tikv 實(shí)例(非服務(wù)器)數(shù)量婆赠,推薦為3的整數(shù)倍,這是為了調(diào)度側(cè)考量佳励,如果非核心業(yè)務(wù)場景休里,可以關(guān)閉 tikv 的 sync_log 參數(shù),整體寫入性能應(yīng)該會有30%的提升植兰。

配置上面需要注意的地方

除了上面所說的這些除外份帐,下面列一些在日常支持中經(jīng)常遇到客戶配置錯誤的地方璃吧。

1楣导、標(biāo)簽

如果存在 tikv 多實(shí)例部署,或者跨機(jī)房部署集群的情況畜挨,一定要注意 label 的配置筒繁。而 label 除了在 inventory.ini 文件中噩凹,tikv 指定好別名和 labels 之外,還需要配置下面的參數(shù)

TiKV1-1 ansible_host=172.16.10.4 deploy_dir=/data1/deploy tikv_port=20171 labels="host=tikv1"?

## Group variables

[pd_servers:vars]

# location_labels = ["zone","rack","host"]

注意將上面的 location_labels 的注釋去掉毡咏,按需配置驮宴。如果在集群首次部署的時候沒有配置,那么通過 pd-ctl config set?location_labels "zone, rack, host" 也可以設(shè)置成功呕缭,具體可以參考官網(wǎng)的 FAQ堵泽,搜索 label。

2恢总、多實(shí)例部署時迎罗,需要將 CPU、內(nèi)存片仿、可用磁盤空間顯示的配置好纹安,具體參考官網(wǎng)部署集群的章節(jié)。默認(rèn)的配置文件是按照單實(shí)例來分配的砂豌,如果多實(shí)例不指定的話就會出現(xiàn) CPU 和內(nèi)存爭用的情況厢岂。

3、pd 調(diào)度 kv 節(jié)點(diǎn)的一個重要依據(jù)是阳距,各 tikv 節(jié)點(diǎn)數(shù)據(jù)目錄的使用率塔粒,如果手工在某一個 tikv 節(jié)點(diǎn)的 data 目錄下放置了一個大文件,可能會引起內(nèi)部的調(diào)度娄涩,將數(shù)據(jù)遷移走窗怒,最好避免這種情況的影響。

4蓄拣、在做集群 tikv 節(jié)點(diǎn)下線的過程中扬虚,offline 只是告訴 pd ,該節(jié)點(diǎn)需要進(jìn)入下線狀態(tài)球恤,把這個節(jié)點(diǎn)上的 leader 調(diào)度走的同時補(bǔ)全副本數(shù)辜昵,直到所有數(shù)據(jù)副本補(bǔ)全才會進(jìn)入 tombstone 狀態(tài),這時才能將這個 tikv 進(jìn)程停掉并清理數(shù)據(jù)咽斧。


自建機(jī)房推薦配置


云上的一些推薦型號

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末堪置,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子张惹,更是在濱河造成了極大的恐慌舀锨,老刑警劉巖,帶你破解...
    沈念sama閱讀 212,884評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件宛逗,死亡現(xiàn)場離奇詭異坎匿,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,755評論 3 385
  • 文/潘曉璐 我一進(jìn)店門替蔬,熙熙樓的掌柜王于貴愁眉苦臉地迎上來告私,“玉大人,你說我怎么就攤上這事承桥∽に冢” “怎么了?”我有些...
    開封第一講書人閱讀 158,369評論 0 348
  • 文/不壞的土叔 我叫張陵凶异,是天一觀的道長蜀撑。 經(jīng)常有香客問我,道長剩彬,這世上最難降的妖魔是什么屯掖? 我笑而不...
    開封第一講書人閱讀 56,799評論 1 285
  • 正文 為了忘掉前任,我火速辦了婚禮襟衰,結(jié)果婚禮上贴铜,老公的妹妹穿的比我還像新娘。我一直安慰自己瀑晒,他們只是感情好绍坝,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,910評論 6 386
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著苔悦,像睡著了一般轩褐。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上玖详,一...
    開封第一講書人閱讀 50,096評論 1 291
  • 那天把介,我揣著相機(jī)與錄音,去河邊找鬼蟋座。 笑死拗踢,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的向臀。 我是一名探鬼主播巢墅,決...
    沈念sama閱讀 39,159評論 3 411
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼券膀!你這毒婦竟也來了君纫?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,917評論 0 268
  • 序言:老撾萬榮一對情侶失蹤芹彬,失蹤者是張志新(化名)和其女友劉穎蓄髓,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體舒帮,經(jīng)...
    沈念sama閱讀 44,360評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡会喝,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,673評論 2 327
  • 正文 我和宋清朗相戀三年眨唬,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片好乐。...
    茶點(diǎn)故事閱讀 38,814評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖瓦宜,靈堂內(nèi)的尸體忽然破棺而出蔚万,到底是詐尸還是另有隱情,我是刑警寧澤临庇,帶...
    沈念sama閱讀 34,509評論 4 334
  • 正文 年R本政府宣布反璃,位于F島的核電站,受9級特大地震影響假夺,放射性物質(zhì)發(fā)生泄漏淮蜈。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,156評論 3 317
  • 文/蒙蒙 一已卷、第九天 我趴在偏房一處隱蔽的房頂上張望梧田。 院中可真熱鬧,春花似錦侧蘸、人聲如沸裁眯。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,882評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽穿稳。三九已至,卻和暖如春晌坤,著一層夾襖步出監(jiān)牢的瞬間逢艘,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,123評論 1 267
  • 我被黑心中介騙來泰國打工骤菠, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留它改,地道東北人。 一個月前我還...
    沈念sama閱讀 46,641評論 2 362
  • 正文 我出身青樓商乎,卻偏偏與公主長得像搔课,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子截亦,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,728評論 2 351