作者:陳超
【是否原創】是
TiDB 社群
其他平台首發請附上對應連結
【正文】
一、背景
由于各種場外因素導緻我們不能自由選擇的理想硬體環境,加之目前單台實體機的硬體配置往往都高于需求,為了更合理地規劃資源,很多時候一台伺服器不能夠“奢侈地”隻部署一個執行個體,而是會考慮單機多執行個體部署 TiDB 或者 TiKV。這就需要在現有的環境中盡可能地搭建滿足高可用、高性能的TiDB叢集。本文主要分享一次實際生産環境中混合部署TiDB叢集的過程,供大家參考。
二、硬體配置
10台實體機,每台配置均為56C 384G 4塊2TB NVME硬碟。監控、HA等機器使用虛拟機即可,是以不算在采購預算内。
配置達标,但是由于種種因素原本預計裝一個叢集的硬體需要混合部署2套叢集。
三、叢集拓撲規劃
叢集1
執行個體 | IP |
TiDB & PD | 10.0.0.1 |
TiDB & PD | 10.0.0.2 |
PD | 10.0.0.3 |
10.0.0.4 | |
Tikv *2 | 10.0.0.5 |
Tikv *2 | 10.0.0.6 |
Tikv *2 | 10.0.0.7 |
Tikv *2 | 10.0.0.8 |
Tikv *2 | 10.0.0.9 |
Tikv *2 | 10.0.0.10 |
叢集2
執行個體 | IP |
10.0.0.1 | |
PD | 10.0.0.2 |
TiDB & PD | 10.0.0.3 |
TiDB & PD | 10.0.0.4 |
Tikv *2 | 10.0.0.5 |
Tikv *2 | 10.0.0.6 |
Tikv *2 | 10.0.0.7 |
Tikv *2 | 10.0.0.8 |
Tikv *2 | 10.0.0.9 |
Tikv *2 | 10.0.0.10 |
如果拆解成單獨的叢集,他們的架構應該是這樣

但是實際上是混合部署,那麼他們的架構應該是這樣
-1647272473002.jpg>)
四、叢集label規劃
叢集1拓撲tikv配置labels規劃為:
叢集2拓撲tikv配置labels規劃為:
設定 PD 的 location-labels 配置:
location_labels = ["zone","rack","host"]
五、總結
本次操作是想在目前伺服器數量不變的情況下盡可能做到高可用,但是由于成本等多方面因素并沒有選擇異地容災及同城多機房容災方案,是以選擇了該混合部署方案。
HA本身的可用性:
haproxy+keepalived實作ha的高可用。
PD server及TiDB server的可用性:
由于pd和tidb是混合部署的,是以這裡放在一起說。10.0.0.1-10.0.0.0.4為2套叢集tidb和pd混部,從架構圖中可以看到,任意一台伺服器當機,都最多隻影響一套叢集内的一個tidb節點和一個pd節點。同一套叢集内tidb節點仍有一個可用,pd節點剩餘2副本,tidb和pd都滿足高可用。
TiKV server的可用性: