ODPS主备集群双向数据复制导致主备中心网络打爆问题
1. 故障問(wèn)題描述
客戶現(xiàn)場(chǎng)發(fā)生了ODPS主備機(jī)房相互數(shù)據(jù)全量復(fù)制導(dǎo)致的主備中心網(wǎng)絡(luò)被打爆的問(wèn)題,嚴(yán)重影響了日常運(yùn)行的ODPS任務(wù)。在ODPS主備機(jī)房的環(huán)境中,用戶的任務(wù)均在主機(jī)房中運(yùn)行,產(chǎn)生的數(shù)據(jù)默認(rèn)會(huì)落在主機(jī)房,通過(guò)ODPS replicationService將主機(jī)房的數(shù)據(jù)異步復(fù)制到備用機(jī)房。那么為什么會(huì)有反向同步到主機(jī)房數(shù)據(jù)的情況,需要對(duì)該問(wèn)題開(kāi)展排查進(jìn)行根因分析。
2. 故障現(xiàn)象
在排查過(guò)程中觀察關(guān)閉數(shù)據(jù)前后的機(jī)器網(wǎng)絡(luò)負(fù)載狀態(tài),當(dāng)打開(kāi)數(shù)據(jù)主備復(fù)制的時(shí)候,機(jī)器的網(wǎng)卡的進(jìn)出流量很大。
圖1
繼續(xù)排查發(fā)現(xiàn)主機(jī)房復(fù)制作業(yè)和備機(jī)房復(fù)制作業(yè)都在運(yùn)行,而且很多都是沒(méi)有更新的數(shù)據(jù)表,這種沒(méi)有必要的全量數(shù)據(jù)同步造成大量的網(wǎng)絡(luò)開(kāi)銷。
圖2
圖3
圖4
3. 故障原因分析
在解決問(wèn)題之前,我們需要先搞清楚ODPS同城雙機(jī)房容災(zāi)整體技術(shù)方案和其中的跨機(jī)房數(shù)據(jù)異步復(fù)制工作原理。
3.1 ODPS同城雙機(jī)房容災(zāi)整體技術(shù)方案
ODPS產(chǎn)品應(yīng)用中針對(duì)每一種場(chǎng)景的故障或者集群災(zāi)難,其故障恢復(fù)或者服務(wù)切換方案都是不同的。該客戶屬于ODPS同城雙機(jī)房容災(zāi)方案,我們先看下ODPS同城雙機(jī)房容災(zāi)整體技術(shù)方案。
- 主備機(jī)房均部署完整的MaxCompute服務(wù)(控制集群、計(jì)算集群、tunnel、前端)。
- 主備機(jī)房均可以正常使用,但正常狀態(tài)下,備機(jī)房處于靜默狀態(tài),不處理具體業(yè)務(wù)請(qǐng)求。
- 主備機(jī)房之間開(kāi)啟數(shù)據(jù)傳輸,設(shè)置既定的策略定時(shí)或按需將數(shù)據(jù)同步到備機(jī)房。
- 元數(shù)據(jù)保持同步復(fù)制;
- 業(yè)務(wù)數(shù)據(jù)保持異步復(fù)制;
- RTO:可以實(shí)現(xiàn)分鐘級(jí);
- RPO:視數(shù)據(jù)量及同步頻率來(lái)定,一般為小時(shí)級(jí)。
- 元數(shù)據(jù)的同步延遲要控制在5ms以內(nèi);
- 業(yè)務(wù)數(shù)據(jù)的同步延遲要控制在20ms以內(nèi)。
圖5
- VIP1:指向一組Tunnel數(shù)據(jù)服務(wù)節(jié)點(diǎn)的虛擬IP,綁定ODPS tunnel的域名,所有的ODPS數(shù)據(jù)上傳和下載都經(jīng)過(guò)VIP1。
- VIP2:指向一組ODPS DDL/DML命令服務(wù)節(jié)點(diǎn)的虛擬IP,綁定ODPS服務(wù)的域名,所有的DDL/DML命令都通過(guò)VIP2提交給ODPS進(jìn)行處理。
- Tunnel前端集群:部署ODPS Tunnel服務(wù)進(jìn)程的一組節(jié)點(diǎn),用于數(shù)據(jù)上傳和下載,會(huì)調(diào)用用戶中心和Meta服務(wù)進(jìn)行用戶請(qǐng)求的鑒權(quán),讀寫(xiě)計(jì)算存儲(chǔ)集群的數(shù)據(jù)。
- 命令前端集群:部署ODPS DDL/DML命令處理服務(wù)的一組前端節(jié)點(diǎn),將DDL/DML操作命令轉(zhuǎn)發(fā)給ODPS控制服務(wù)進(jìn)行處理。
- 控制服務(wù):處理前端發(fā)來(lái)的DDL/DML命令,對(duì)于DML,會(huì)進(jìn)行SQL語(yǔ)法分析、查詢優(yōu)化和查詢計(jì)劃生成,通過(guò)提交給計(jì)算集群的分布式作業(yè)來(lái)完成物理執(zhí)行計(jì)劃。
- 用戶中心:即UMM服務(wù),負(fù)責(zé)管理整個(gè)阿里云和大數(shù)據(jù)平臺(tái)的用戶。
- Meta服務(wù):ODPS采用OTS作為自己的Meta存儲(chǔ)服務(wù),負(fù)責(zé)管理ODPS對(duì)象的元數(shù)據(jù),包括Project信息,表數(shù)據(jù)(Table)的schema及其數(shù)據(jù)存儲(chǔ)在飛天集群上的路徑,數(shù)據(jù)在不同飛天集群上的版本信息,用戶UDF的元數(shù)據(jù)信息等等。
- 計(jì)算集群:用于存儲(chǔ)和計(jì)算的飛天集群,存儲(chǔ)所有的數(shù)據(jù)和UDF程序,所有的DML命令會(huì)解析為一個(gè)飛天的分布式DAG(有向無(wú)環(huán)圖)作業(yè)提交給計(jì)算集群來(lái)執(zhí)行。飛天集群最核心的模塊包括盤(pán)古(Pangu)和伏羲(Fuxi),盤(pán)古是一個(gè)分布式文件系統(tǒng),Fuxi負(fù)責(zé)資源和作業(yè)調(diào)度管理。
在這個(gè)方案中,主備機(jī)房各有一套ODPS服務(wù),它們共享同一個(gè)用戶中心(UMM)和Meta服務(wù),UMM和OTS都具備各自雙機(jī)房容災(zāi)能力,具體詳見(jiàn)它們的容災(zāi)方案。
3.2?跨機(jī)房數(shù)據(jù)異步復(fù)制工作原理
我們?cè)賮?lái)看下跨機(jī)房數(shù)據(jù)異步復(fù)制工作原理:
- ODPS服務(wù)域名:指向命令前端集群的虛擬IP,即系統(tǒng)架構(gòu)圖中的VIP2。
- Tunnel服務(wù)域名:指向Tunnel前端集群的虛擬IP,即系統(tǒng)架構(gòu)圖中的VIP1。
- 同一份數(shù)據(jù)(表或分區(qū))在多個(gè)計(jì)算集群上可能具有不同的版本,ODPS Meta服務(wù)會(huì)維護(hù)每份數(shù)據(jù)的版本信息,表示如下: ? ? ? ?
{"LatestVersion":*V1*,"Status":{"ClusterA":"*V1*","ClusterB":"*V0*"}} |
- 當(dāng)一份數(shù)據(jù)版本更新后,觸發(fā)一個(gè)分布式的跨集群數(shù)據(jù)復(fù)制任務(wù),將數(shù)據(jù)復(fù)制到其他計(jì)算集群,通過(guò)對(duì)復(fù)制任務(wù)的限制可以進(jìn)行機(jī)房間數(shù)據(jù)復(fù)制流量管控。
- 機(jī)房間帶寬大小;
- 主機(jī)房ODPS計(jì)算集群繁忙程度。
因?yàn)閿?shù)據(jù)復(fù)制也是以飛天分布式任務(wù)來(lái)進(jìn)行的,需要用到主機(jī)房的ODPS計(jì)算集群的計(jì)算資源(主要是CPU和內(nèi)存),ODPS可以根據(jù)這兩個(gè)因素給出數(shù)據(jù)同步完成的時(shí)間預(yù)估。
考慮到集群間帶寬,存儲(chǔ)等資源的競(jìng)爭(zhēng), 需要用戶自行選擇是否創(chuàng)建容災(zāi)project。通過(guò)ascm/dtcenter創(chuàng)建project時(shí),可以選擇創(chuàng)建單集群project,也可以選擇創(chuàng)建多集群project。其中單集群project不支持容災(zāi)功能。
容災(zāi)project配置:
圖6
圖7
配置項(xiàng)說(shuō)明,開(kāi)啟資源復(fù)制后,以下配置才能生效。
- SyncObject:配置同步的集群,以及同步數(shù)據(jù)類型,參照上圖將ODPS集群名修改為現(xiàn)場(chǎng)主備集群名稱即可開(kāi)啟ODPS數(shù)據(jù)完全復(fù)制。
- ScanMetaInterval:數(shù)據(jù)同步間隔,單位為秒。
- EnableEvent:數(shù)據(jù)是否實(shí)時(shí)同步,配置為true時(shí),當(dāng)主集群數(shù)據(jù)產(chǎn)生變化,會(huì)立刻同步到備集群,同時(shí)ScanMetaInterval配置將失效。 ?
注:配置數(shù)據(jù)同步為實(shí)時(shí)同步或數(shù)據(jù)同步間隔配置時(shí)間較短會(huì)較大程度占用網(wǎng)絡(luò)帶寬,建議當(dāng)需要同步的數(shù)據(jù)量較大時(shí),關(guān)閉實(shí)時(shí)同步并調(diào)大同步間隔。 ?
- 如上一節(jié)提到的 EnableEvent 如果設(shè)置為true,那么project中的數(shù)據(jù)會(huì)在被更改后立刻觸發(fā)同步,并且每次同步的數(shù)據(jù)量為該表或該分區(qū)的全部數(shù)據(jù)量。例如:某非分區(qū)表中有1T的數(shù)據(jù),如果對(duì)該表插入1條數(shù)據(jù),就需要將這1T的數(shù)據(jù)都復(fù)制到備機(jī)房。 如果1分鐘內(nèi)寫(xiě)了10次數(shù)據(jù),那一分鐘就會(huì)復(fù)制10次1T的數(shù)據(jù)到備機(jī)房,從而產(chǎn)生9T的待回收數(shù)據(jù)。混合云上強(qiáng)烈建議關(guān)閉實(shí)時(shí)復(fù)制,以減少機(jī)房間的帶寬和存儲(chǔ)壓力。改為定時(shí)復(fù)制的策略,比如設(shè)置ScanMetaInterval,6小時(shí)一次掃描復(fù)制一次。 ? ? EnableEvent = false ? ? ScanMetaInterval=21600 ? #6小時(shí)=21600秒 ? ?
- 為防止高峰時(shí)段ODPS占滿集群帶寬,可以在adminconsle->跨集群復(fù)制全局配置,這里限制ODPS集群間復(fù)制的流量帶寬,單位是Gb,下圖示例:
圖8
從具體的備機(jī)房往主中心復(fù)制作業(yè)日志截圖中可以看到,集群的名字是大寫(xiě),而客戶在資源復(fù)制同步中設(shè)置的sourceLocation中是小寫(xiě),客戶側(cè)存在錯(cuò)誤配置的問(wèn)題。
圖9
和ODPS的研發(fā)同學(xué)溝通確認(rèn)了這個(gè)問(wèn)題的root cause是ODPS的replicationService在發(fā)起項(xiàng)目數(shù)據(jù)異步復(fù)制時(shí)會(huì)拿SyncObject的集群通過(guò)ots來(lái)校驗(yàn)備用集群對(duì)應(yīng)的project的版本號(hào)。這里將大小寫(xiě)不同認(rèn)為是備機(jī)房該項(xiàng)目不存在,于是發(fā)起了同步,但是在數(shù)據(jù)落地存儲(chǔ)的時(shí)候有數(shù)據(jù)校驗(yàn)并不會(huì)把這些真正存儲(chǔ)起來(lái)。于是帶來(lái)了不必要的網(wǎng)絡(luò)開(kāi)銷,但并不會(huì)影響數(shù)據(jù)質(zhì)量。?
通過(guò)bcc修改資源配置,將SyncObject中集群改為大寫(xiě),并重啟ODPS的replicationService后問(wèn)題得到徹底解決。
圖10
4. 問(wèn)題結(jié)論
ODPS主備集群做數(shù)據(jù)復(fù)制同步帶寬被打滿,root cause是ODPS project資源復(fù)制中的集群名是小寫(xiě),而ODPS project集群的名稱是大寫(xiě),數(shù)據(jù)同步的時(shí)候會(huì)認(rèn)為該project不存在,導(dǎo)致了雙向同步,通過(guò)測(cè)試也驗(yàn)證了這一點(diǎn)。該問(wèn)題已經(jīng)通過(guò)bcc批量更正項(xiàng)目名中集群信息為大寫(xiě),同時(shí)重啟replicationService解決。
需要特別注意:客戶在bcc中項(xiàng)目資源復(fù)制配置中需要注意保持同步數(shù)據(jù)集群名字大小寫(xiě)和集群名字匹配。
通過(guò)這次問(wèn)題排查可以很好地了解到當(dāng)前的ODPS多機(jī)房的數(shù)據(jù)同步方案和多機(jī)房的技術(shù)容災(zāi)架構(gòu)。
我們是阿里云智能全球技術(shù)服務(wù)-SRE團(tuán)隊(duì),我們致力成為一個(gè)以技術(shù)為基礎(chǔ)、面向服務(wù)、保障業(yè)務(wù)系統(tǒng)高可用的工程師團(tuán)隊(duì);提供專業(yè)、體系化的SRE服務(wù),幫助廣大客戶更好地使用云、基于云構(gòu)建更加穩(wěn)定可靠的業(yè)務(wù)系統(tǒng),提升業(yè)務(wù)穩(wěn)定性。我們期望能夠分享更多幫助企業(yè)客戶上云、用好云,讓客戶云上業(yè)務(wù)運(yùn)行更加穩(wěn)定可靠的技術(shù),您可用釘釘掃描下方二維碼,加入阿里云SRE技術(shù)學(xué)院釘釘圈子,和更多云上人交流關(guān)于云平臺(tái)的那些事。
原文鏈接:https://developer.aliyun.com/article/796081?
版權(quán)聲明:本文內(nèi)容由阿里云實(shí)名注冊(cè)用戶自發(fā)貢獻(xiàn),版權(quán)歸原作者所有,阿里云開(kāi)發(fā)者社區(qū)不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。具體規(guī)則請(qǐng)查看《阿里云開(kāi)發(fā)者社區(qū)用戶服務(wù)協(xié)議》和《阿里云開(kāi)發(fā)者社區(qū)知識(shí)產(chǎn)權(quán)保護(hù)指引》。如果您發(fā)現(xiàn)本社區(qū)中有涉嫌抄襲的內(nèi)容,填寫(xiě)侵權(quán)投訴表單進(jìn)行舉報(bào),一經(jīng)查實(shí),本社區(qū)將立刻刪除涉嫌侵權(quán)內(nèi)容。 與50位技術(shù)專家面對(duì)面20年技術(shù)見(jiàn)證,附贈(zèng)技術(shù)全景圖總結(jié)
以上是生活随笔為你收集整理的ODPS主备集群双向数据复制导致主备中心网络打爆问题的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 【ESSD技术解读】 云原生时代,阿里云
- 下一篇: 云栖新品|阿里云IoT发布云芯一体智能视