全部產品
Search
文件中心

PolarDB:兩地三中心

更新時間:Jul 06, 2024

在金融行業,為了保證系統的高可用性和容災能力,採用兩個機房作為主中心,一個機房作為備份中心的架構模式,簡稱為“兩地三中心架構”。兩地三中心架構廣泛應用於金融行業中的核心業務系統,如支付結算、證券交易、貸款管理。本文介紹兩地三中心的相關概念和營運操作。

使用限制

PolarDB-X兩地三中心形態當前僅支援專有雲DBStack 1.2.1版本及以上。

兩地三中心架構和技術原理

image.png

PolarDB-X基於多數派共識協議Paxos支援兩地三中心5副本 + 主備叢集的部署架構,滿足跨域高可用下的RPO=0,需要細粒度支援不同層級的容災。

容災情境

細粒度情境

高可用容災策略

單副本故障

主中心機房Leader副本

觸發Leader重新選舉,同機房副本優先(業務流量需要就近訪問)。

主中心機房Follower副本

無影響。

備份中心機房Follower副本

無影響。

機房故障

主中心機房

剩餘3副本(會出現跨地區的強同步),5副本動態降級為3副本。

備份中心機房

剩餘主中心4副本,對多數派協議無影響。

地區故障

主中心

  • 剩餘備份中心1副本,單副本啟動提供服務。

  • 業務切流異地備執行個體。

備份中心

無影響。

基於容災策略的需求,引申出跨地區高可用架構的設計:權重化選舉、副本數動態調整、單副本強制啟動 、異地備叢集。

權重化選舉

PolarDB-X在兩地三中心設計中引入選舉權重,對應的工作原理:

  • 樂觀權重機制:在Paxos多數派共識協議的選舉策略中,那些更容易發起選舉的節點傾向於成為Leader。為了最佳化這一點,通過引入權重概念,對不同節點設定了啟動Leader選舉的隨機延時,從而保證那些擁有較高權重的節點能夠優先發起Leader選舉。

  • 強制權重機制:當某一個新成為Leader的節點發現自己不是所有節點中權重最高的節點的時候(當所有節點權重一致的時候,任意節點都是權重最高的點,所以此判定不生效),不會立刻放開寫入,而是繼續等待一個選舉逾時的時間段(稱為禪讓階段),在禪讓階段會每隔一個心跳時間(比如1~2秒),向其它節點發送一次心跳探測。在選舉時間段結束以後,如果收到其他權重比自己大的節點回包,即向回包節點中權重最大的節點發起一次Leader轉移,確保高權重的節點成為Leader。

PolarDB-X兩地三中心副本的選舉權重配置:

機房

副本

選舉權重

中心機房 1

Leader

9

Follower

7

中心機房 2

Follower

5

Follower

3

備份中心

Follower

1

當中心機房1的Leader副本出現故障,觸發Leader選舉,同機房下的Follower副本選舉權重為7,優先會成為Leader,滿足同機房優先的策略。

副本數動態調整

在兩地三中心中,5副本多數派的複製組需要>=3個副本完成同步響應,預設情況下主中心的4副本會因為網路延遲的優勢,優先在同城完成多數派的同步響應,多數派協議的延遲基本在1ms左右。但出現中心機房層級的故障後僅剩餘3副本,會導致必須等待備份中心的副本也同步響應,從而導致多數派協議的延遲增加30ms(例如,常見的金融行業中主中心和備份中心的網路延遲在30ms左右)。

常見的副本數調整情境:

  • 5副本降級為3副本,引入downgrade_follower指令將Follower角色降級Learner角色,動態修改兩個副本的角色

  • 3副本升級為5副本,引入upgrade_learner指令將Learner角色升級為Follower角色,需要確保Learner非同步複製日誌追平。

  • 1副本升級為3副本,引入add_follower指令動態新增節點,新節點會先成為Learner角色,追平日誌之後自動轉成Follower角色。

單副本強制啟動

兩地三中心中,當中心地區完全故障時,常見的多數派共識協議會因為剩餘1個副本無法滿足多數派,導致備份中心的副本無法承擔資料服務。

PolarDB-X支援單副本強制啟動的能力,引入force_single_mode指令,強制單節點服務並剔除所有Follower。另外,等中心機房故障恢複後,通過副本數動態調整能力,再從1副本恢複為3副本、5副本,實現最終的資料服務的恢複。

異地備叢集

金融行業容災標準,針對異地容災的RPO和RTO都有細粒度的要求,如下表所示:

容災等級

RTO(恢復目標)

RPO(復原點目標)

災備部署營運能力

4級

⩽ 30分鐘

0

同城災備或異地災備

5 級

⩽ 15分鐘

0

異地容災,異地至少單副本

6級

⩽ 1分鐘

0

異地容災,異地至少雙副本

PolarDB-X為滿足異地容災 RTO 的要求,採用兩地三中心 5 副本 + 主備叢集提供異地備叢集執行個體,當中心地區完全故障時,業務可以快速切流到異地備叢集來實現故障恢複。

兩地三中心主備叢集相關的設計要點:

  • PolarDB-X的主叢集,採用跨地區Paxos複製協議,需要>=3個副本完成同步響應,預設情況主中心的4副本會因為網路延遲的優勢,優先在同城完成多數派的同步響應,而主叢集的異地副本普遍是非同步響應,所以主叢集不會受到異地副本的網路延遲影響。

  • PolarDB-X的備叢集,主要部署在異地,通過PolarDB-X的CDC日誌節點群組件,構建准即時的跨叢集主備複製,雖然異地備叢集會有一定的資料複寫延遲,但需要確保分散式交易情境下的原子性複製,避免出現事務不一致的情況。

  • 跨叢集的主備複製,尤其在兩地三中心情境(主叢集的異地副本,不同Paxos複製組會因為網路延遲出現分散式交易複製進度之間有差異),需要在異地部署CDC日誌節點進行分散式交易排序重組,提供分散式交易的原子性複製能力,確保跨叢集主備複製不會出現事務只有一半提交的狀態。通過原子性事務複製,在日常的容災演練、以及真實故障情境下,都可以確保業務切流到異地備叢集時交易資料的完整性。

常見的營運操作

建立執行個體

在購買PolarDB-X執行個體時,部署方式可以選擇兩地三中心

image

查看執行個體拓撲

在執行個體基本資料頁面底部的拓撲資訊地區,可以查看對應資源的可用性區域資訊。

image.png

容災切換

  1. 登入PolarDB分布式版控制台

  2. 在頁面左上方選擇目標執行個體所在地區。

  3. 執行個體列表頁,單擊PolarDB-X 2.0頁簽。

  4. 找到目標執行個體,單擊執行個體ID。

  1. 基本資料頁面底部的拓撲資訊地區,單擊右側的指定主可用性區域

    image

  2. 在彈出的指定主可用性區域對話方塊,選擇機房主可用性區域切換模式

    image

  3. 單擊確認