京東容器數(shù)據(jù)庫系統(tǒng),管理1800臺物理計算節(jié)點(diǎn),生產(chǎn)1W+ 多MySQL Docker容器實(shí)例。架構(gòu)簡單可靠,Docker容器計算平臺與MySQL集群管理平臺解耦處理。為描述方便,京東容器化數(shù)據(jù)庫系統(tǒng)命名為CDS,底層京東Docker容器計算平臺命名為JDOS。 本文重點(diǎn)介紹JDOS如何支持CDS。CDS是更大的話題,后續(xù)數(shù)據(jù)庫團(tuán)隊會分享相關(guān)實(shí)踐。 介紹CDS依賴京東堅實(shí)的JDOS技術(shù),生產(chǎn)運(yùn)行1W+個MySQL容器實(shí)例。CDS借助JDOS技術(shù)優(yōu)勢獲得主要3個方面的技術(shù)收益:
本文會從架構(gòu)設(shè)計,性能測試等方面說明京東CDS落地實(shí)踐過程。 整體架構(gòu)CDS與JDOS解耦,CDS負(fù)責(zé)管理MySQL主從等集群方式的生命周期管理;京東JDOS負(fù)責(zé)單個MySQL容器實(shí)例生命周期管理。京東Docker容器集群分多Region,多POD部署,且不同集群之間網(wǎng)絡(luò)互通,有效支持每個MySQL實(shí)例可被業(yè)務(wù)系統(tǒng)直接調(diào)用,確保極佳的網(wǎng)絡(luò)延遲性能。 MySQL集群實(shí)例優(yōu)先級 配額 數(shù)據(jù)庫cluster根據(jù)業(yè)務(wù)重要性劃分不同的優(yōu)先級,京東的劃分更加細(xì)致,這里我們簡化分2種優(yōu)先級:核心系統(tǒng),非核心系統(tǒng)。 云數(shù)據(jù)庫管理平臺只需要在調(diào)用京東JDOS平臺API時候,帶上priority=0,即可表示創(chuàng)建的是核心系統(tǒng)依賴的數(shù)據(jù)庫。京東JDOS平臺會強(qiáng)制把屬于該cluster的多MySQL實(shí)例調(diào)度到不同的機(jī)架,且不資源“超配”。 底層資源云化和核算成本需求,會針對按事業(yè)部配給一定的配額,所在的創(chuàng)建數(shù)據(jù)庫集群實(shí)例成功后,自動從該部門扣除對應(yīng)的資源值,反之銷毀會歸還配額到部門。 監(jiān)控 告警 數(shù)據(jù)庫cluster自身DB層面的告警由云數(shù)據(jù)庫集群平臺提供。涉及到底層計算,網(wǎng)絡(luò),存儲等資源層面的告警,由底層京東Docker容器平臺提供數(shù)據(jù)給云數(shù)據(jù)庫集群。 JDOS架構(gòu)JDOS是京東統(tǒng)一數(shù)據(jù)中心計算,網(wǎng)絡(luò),存儲管理平臺。除支持CDS外,也支持京東全部的業(yè)務(wù)系統(tǒng)運(yùn)行環(huán)境。 JDOS系統(tǒng)基于京東扎實(shí)的Openstack,Docker等開源技術(shù)的持續(xù)研發(fā)能力,提供穩(wěn)定,高性能的計算資源平臺。每個組件都是獨(dú)立服務(wù)部署,采用MQ互相交互信息,京東重構(gòu)了主要的核心組件服務(wù),使JDOS平臺可以支持更大的集群規(guī)模,目前穩(wěn)定在6K臺物理計算節(jié)點(diǎn)。重新設(shè)計JDOS升級功能,做到平滑無感知,有效支撐長時間運(yùn)行容器的穩(wěn)定性。 JDOS控制節(jié)點(diǎn) JDOS控制節(jié)點(diǎn)服務(wù)組件,借助Haproxy做PooL模式部署,有效避免單點(diǎn)和負(fù)載能力問題。 控制節(jié)點(diǎn)3臺物理機(jī),分別跨在不同的機(jī)架上,避免Tor交換機(jī),機(jī)架電力,服務(wù)器等故障影響。 控制節(jié)點(diǎn)服務(wù)組件混合部署,進(jìn)一步提升控制節(jié)點(diǎn)每個服務(wù)組件的高可用和負(fù)載能力。比如計算服務(wù)API,鏡像服務(wù)API,認(rèn)證服務(wù)API,網(wǎng)絡(luò)服務(wù)API,存儲服務(wù)API進(jìn)程混部同一臺物理機(jī)。 JDOS計算節(jié)點(diǎn) 計算節(jié)點(diǎn)管理網(wǎng)絡(luò)與虛擬化數(shù)據(jù)網(wǎng)絡(luò)使用不同的網(wǎng)口進(jìn)行隔離,全萬兆網(wǎng)絡(luò)環(huán)境,對數(shù)據(jù)庫的網(wǎng)絡(luò)環(huán)境支持非常好。特別京東在虛擬化網(wǎng)絡(luò)技術(shù)方向的扎實(shí)積累,基本可以做到虛擬化網(wǎng)絡(luò)損耗控制在2%以下。 調(diào)度 調(diào)度架構(gòu)簡單,負(fù)載可擴(kuò)展。 主要思想是,先一系列filter掉不滿足要求的計算節(jié)點(diǎn),然后打分,最后做排序,選擇最優(yōu)并返回調(diào)度結(jié)果。 資源分區(qū)調(diào)度 按Region,POD,Zone,物理機(jī)等4個層面劃分計算區(qū)域,調(diào)度算法靈活可配確保業(yè)務(wù)特點(diǎn)與計算硬件環(huán)境特點(diǎn)結(jié)合適配。如CDS的機(jī)器全部是SSD的硬盤,所以JDOS會在每個數(shù)據(jù)中心提供CDS SSD Zone的tag,把CDS的創(chuàng)建請求優(yōu)先調(diào)度到具有SSD硬盤的計算Zone。 親和性和反親和性調(diào)度 創(chuàng)建全新數(shù)據(jù)庫集群實(shí)例如一主一層,JDOS調(diào)度器會把這2個MySQL容器實(shí)例分布到不同的機(jī)架。 業(yè)務(wù)多從庫需求,要求從庫是高性能讀,JDOS調(diào)度器會根據(jù)performance_slave=True標(biāo)記,盡可能把從庫創(chuàng)建到網(wǎng)絡(luò)繁忙度較小的機(jī)架,并與主在相同的物理POD,甚至同一個Tor交換機(jī)下面的不同物理機(jī)上。 業(yè)務(wù)增加備份性質(zhì)的從庫需求,JDOS調(diào)度器會根據(jù)DB_Cluster_ID=uuid, backup_slave=True標(biāo)記,強(qiáng)制把從庫創(chuàng)建避免已經(jīng)有該DB_cluser_ID所在的宿主機(jī),以及機(jī)架甚至POD。 可擴(kuò)展性 底層JDOS資源池的擴(kuò)容性,按使用率,有計劃進(jìn)行擴(kuò)容底層物理計算資源。CDS每個庫使用資源的平滑擴(kuò)容,比如CPU,內(nèi)存,網(wǎng)絡(luò),磁盤空間均支持平滑擴(kuò)容功能。采用直接重置修改cgroup的配置,即可達(dá)到平滑擴(kuò)容的目的。結(jié)合京東設(shè)計的cpu set與cpu share并存的資源隔離策略,提升資源使用率。 性能主要關(guān)注MySQL運(yùn)行在Docker容器內(nèi)的實(shí)際DB層面的性能。 MySQL實(shí)例性能 性能測試環(huán)境部署圖
多容器實(shí)例基準(zhǔn)測試 測試模型 場景描述 基礎(chǔ)數(shù)據(jù)為:8個容器,每個容器基礎(chǔ)數(shù)據(jù)量為1000W(532M),單表加壓,每個表10W行記錄,同時對多個容器發(fā)起相同的請求,測試響應(yīng)情況,并對比同等線程數(shù)下物理機(jī)的情況。 容器測試數(shù)據(jù)
穩(wěn)定性測試 場景描述 單容器1000W基礎(chǔ)數(shù)據(jù),單表請求10W數(shù)據(jù),8容器并發(fā)運(yùn)行24小時。 性能表現(xiàn)
【長按識別立即關(guān)注】 品讀之后,愿有所獲。 |
|