免責聲明:以下內容旨在概述我們的一般產品方向。旨於提供資訊,不得納入任何合約中。不視為交付任何材料、代碼或功能的承諾,且不應做為購買決策的依據。Oracle 產品所描述的任何特性或功能的開發、發佈、時間和價格可能有所不同,並由 Oracle Corporation 全權決定。
此常見問題會回答 Oracle 如何讓核心基礎架構服務與代管平台能夠獲得抗逆力和持續可用性。基於數個原因,Oracle Cloud 的客戶可能會對這些解答感興趣:
這篇文章沒有授權。我們是依相依性層次、可用性範圍以及資料層與控制層將服務分類。設計這些類別時,在可用性、持久性、效能以及便利性之間提供各種實用的取捨。
相依性層次
您可以考量架構區塊圖中的階層或分層。每一層只依存於底下的其他層。
由下至上:
可用性範圍
為了達成服務的可用性與持久性目標,每項服務適用下列其中一個可用性範圍:
控制層與資料層
服務的資料層是資料處理介面和元件的集合,此集合將導入應用系統所需的服務功能。例如,虛擬雲端網路 (VCN) 資料層包含網路封包處理系統、虛擬化路由器及閘道,而區塊磁碟區資料層則包含 iSCSI 協定的導入,以及適用於磁碟區資料的容錯複製儲存系統。
服務的控制層是一組負責下列工作的 API 和元件:
針對所有類型的服務,我們使用一組相同的工程原則來達到彈性與可用性,因為對於所有類型的服務來說,建置容錯、可擴展分散式系統的基本工程挑戰都相同。
為了實現復原能力和持續可用性,必須先瞭解,然後處理雲端規模系統中所有導致無法使用的原因 (雲端擴展系統中的效能和無法處理故障)。這類原因很多,因此我們根據原因的本質加以分類
傳統上,企業 IT 系統的可用性分析是將焦點放在硬體故障類別。對雲端系統來說,硬體故障是相對較不嚴重且已詳細探討的問題。因此現在要避免或降低大多數單點硬體故障的風險已相對簡單。例如,機架可以有雙重電源供電和關聯的電源分配器,同時許多元件都可以進行熱插拔。當然也有可能發生大規模的硬體故障和丟失,例如遭受自然災害。不過,我們的經驗及來自其他雲端供應商的公開檢討報告顯示,相對於其他導致無法使用的原因,整個資料中心的故障或遺失極為罕見。大量硬體故障仍然必須處理 (例如運用災害復原和其他機制),但它不算是主要的可用性問題。
無法使用雲端擴展系統的主要原因如下:
這些挑戰普遍存在,就像是雲端規模分散式系統的「物理定律」一樣。
針對上述每個類別,我們透過經實證的工程策略來處理問題。這些當中最重要的是:
架構與系統設計的原則
這些原則當中許多早已存在,我們把焦點放在與抗逆力和可用性最相關的原則。
復原導向運算
為了處理操作員對局部影響的軟體錯誤和人為失誤,我們依照復原導向運算1 的原則處理。概要來說,這意謂我們不會保證永遠不會發生問題 (無法測試),而是將焦點放在以可測試的方式低調處理任何問題。具體來說,焦點會放在將平均復原時間 (MTTR) 縮到最短,這段時間包括平均偵測時間、平均診斷時間及平均降低風險時間。
我們的目標是迅速復原,讓人員不會因問題而感到不便。下列點有助於達成這個目標:
將問題影響降到最低
為了處理影響較為廣泛的錯誤,我們會建立機制將任何問題的影響範圍縮減到最小。也就是說,我們的焦點放在將受任何問題影響的客戶、系統或資源數目降到最低,這些問題包括一些特別具挑戰性的問題,例如多租用戶被「其他客戶干擾」、提供的超載、處理能力降低,以及分散式超負荷執行。我們會透過使用各種隔離界限和變更管理做法 (請參閱下列各節) 來達到此目的。
由設計原則產生的架構概念
這些概念當中許多早已存在,我們把焦點放在限制影響範圍的概念。
深深刻劃在公用 API 的佈局概念:區域、可用性網域及容錯域
由於容錯域觀念相對較為新穎,我們將以更詳細的方式說明容錯域。
容錯域可用來限制系統進行主動變更時所發生問題的影響範圍,這類主動變更包括:部署、打補丁、虛擬機器管理程式重新啟動及實體維護。
系統可保證在指定的可用性網域中,任一時間點最多只會變更一個容錯域中的資源。如果在變更過程中發生問題,則該容錯域中的部分或全部資源可能會一時無法使用,但可用性網域中的其他容錯域則不受影響。每個可用性網域都至少包含三個容錯域,以便允許在單一可用性網域內,以高可用性方式代管法定型複寫系統 (例如 Oracle Data Guard)。
因此針對主要類別的可用性問題 (軟體錯誤、組態錯誤、操作員失誤,以及變更程序期間發生的效能問題),每個容錯域都可作為可用性網域內個別的邏輯資料中心。
容錯域也可以防止某些類型的局部硬體故障。容錯域的特性會以最大的實際程度,保證放在不同容錯域中的資源不會在可用性網域內共用任何潛在的單點硬體故障。例如,不同容錯域中的資源不會共用同一個「機架頂端式」網路交換器,因為這類交換器的標準設計缺少備援。
不過,容錯域對硬體問題或實體環境問題的防護能力僅止於本機層次。與可用性網域和區域對比之下,容錯域並未提供任何大規模的基礎架構實體隔離。在天然災害或全可用性網域基礎架構故障等罕見案例中,多個容錯域中的資源可能會同時受到影響。
我們內部服務使用容錯域的方式與客戶的使用方式相同。例如,區塊磁碟區、物件儲存及檔案儲存服務會將資料複本儲存在三個不同的容錯域。所有控制層和資料層的所有元件都由這三個容錯域 (或多重可用性網域區域、多個可用性網域) 代管。
服務單元
服務單元可用來限制發生問題 (甚至是系統未進行主動變更) 時的影響範圍。之所以會發生這類問題,是因為多租用戶雲端系統的工作負載可能隨時發生劇變,也因為任何大型分散式系統都可能隨時發生複雜的局部故障。這些案例可能觸發隱藏的細微錯誤或突然出現的效能問題。
服務單元也可以在系統進行主動變更時的某些罕見但具挑戰性的案例中,限制問題的影響範圍。其中一個經典的範例是,部署至個別容錯域雖顯示成功 (沒有任何錯誤或效能變更),但在第二個或最後一個容錯域更新之後,系統 (具有生產環境工作負載的完整雲端規模) 內的新互動立即造成效能問題。
請注意,使用服務單元是一個架構模式,並非 Oracle Cloud API 或 SDK 中明確指定的概念。任何多租用戶系統都可以使用此架構模式;它並不需要雲端平台的特殊支援。
服務單元的作用如下:
結果就是每個服務單元都是單一可用性網域或區域內另一種類型的「邏輯資料中心」(效能隔離和錯誤隔離的邏輯群組)。
總而言之,服務單元和容錯域以下列方式彼此互補:
我們執行部署和打補丁時,會將容錯域與服務單元的特性結合成整合策略。
服務工程程序
由於測試及操作上的優異表現對雲端系統的可靠性至關重要,因此我們有大量的工程程序。以下是一些運用前一節所述概念的重要程序:
是。在每個區域中,所有可用性網域都提供一組相同的服務。
在單一可用性網域區域中,客戶可以使用容錯域 (在群組間採用去關聯性故障模式的邏輯群組) 實現個別「邏輯資料中心」的絕大多數特性。客戶也可以使用多個區域來進行災害復原 (DR)。
在多重可用性網域區域中,客戶可以透過相同的方式運用容錯域。客戶也可以透過可用性網域本機服務、可用性網域間容錯移轉功能 (例如搭配 Data Guard 的 DBaaS) 及區域服務 (物件儲存、串流處理) 的組合,實現更高層次「邏輯資料中心」(可用性網域) 的完整高可用性。最後,客戶還可以使用多個區域來進行復原。
在所有情況下,客戶都可以使用服務單元的概念進一步實行隔離,甚至面對最嚴重的問題 (例如分散式超負荷執行) 也可以這麼做。
我們透過容錯域、服務單元及增量部署與驗證操作程序來達到此目的。請參閱本文件前面的討論。
是。所有類別的服務都會跨多個邏輯資料中心部署,隔開錯誤隔離與效能隔離邏輯群組,以提供抗逆力和持續可用性。
如同本文件其他地方討論的內容,在單一可用性網域區域中,我們提供容錯域作為「多個邏輯資料中心」的機制。
在多重可用性網域區域中,我們提供的服務和功能提供甚至更高層次的同步複寫資料實體持久性 (由於區域中可用性網域之間的距離,因此可提供適中的效能和成本,以及光速般的速度)。
我們並未提供跨區域的自動高可用性或容錯移轉機制,因為這會在區域之間建立緊密耦合關係,導致多個區域可能同時發生問題的風險。我們改為在區域之間啟用各種形式的非同步複寫,並提供不斷擴增的清單功能 (例如非同步複製與備份),以實現跨區域災害復原。
這是一個複雜的問題,因此為了釐清,我們再以幾個不同方式重新敘述:
答案分為兩個部分。
我們的架構原則可大幅降低各個相依服務的關聯性故障。在某些情況下,此技術會降低關聯性故障的發生率,若從滿足可用性服務等級協議 (SLA) 的角度來看,降低到可以忽略的程度。
特別是,如本文件先前所述,我們使用服務單元。單元可協助處理此問題,因為如果內部服務 A 受到其中一個相依項目服務 B 的問題影響,則服務 B 的問題非常可能被侷限在一個單元內。其他使用服務 B 的更高層次服務 (以及客戶自己的應用系統) 可以使用其他未受影響的單元。這個可能性論點會因單元數目而異,單元數目是會變更 (增加) 的隱藏內部參數,因此除了服務 A 和服務 B 的獨立服務 SLA 之外,並不提供任何量化或保證。但實際上,這可以大幅去除服務間的故障關聯性。
我們的許多共用內部服務 (例如控制層的工作流程和描述資料服務,以及串流處理/訊息傳遞服務) 都使用服務單元,去除中斷情況關聯性,供上游服務加以運用。
以下是概要指引,因為服務的詳細導入與詳細資訊可能不時會發生變更。但針對運算、儲存、網路及認證/授權的主要觀點,我們會指出下列相依性。
就控制層而言,常見的相依性如下:
有些控制層明顯具有服務特定相依性。例如,啟動裸機或 VM 執行處理時,運算控制層會取決於:
針對核心服務資料層,一般原則是每個資料層皆刻意設計成具有最小相依性,以便實現高可用性、快速診斷及快速復原。該原則的結果如下:
針對 IaaS 資料層,一般原則是只依存於核心或更低層次的資料層 (為了避免循環相依性)。
是,Oracle Cloud Infrastructure 服務會封存為獨立區域,讓 Oracle Cloud Infrastructure 區域中的服務即使與其他 Oracle Cloud Infrastructure 區域和 (或) 全球控制層隔離,仍可繼續運作。即使區域被隔離,資料層與控制層功能 (包括服務 API 端點) 仍可繼續使用。
許多 Oracle Cloud Infrastructure 服務都提供跨區域功能,例如 Oracle Cloud Infrastructure Object Storage 提供的跨區域物件複製功能。Oracle Cloud Infrastructure 中的跨區域功能一律會封存為核心服務的一層,讓區域隔離不會影響核心服務,即使會影響跨區域功能。舉例來說,Oracle Cloud Infrastructure 物件存放區跨區域複製功能會封存為物件存放區服務上的一層,因此區域的隔離可能會影響相關的跨區域複製功能,但不會影響區域中的核心物件儲存服務。
是,Oracle Cloud Infrastructure 服務經過封存,即使與對應的區域控制層隔離,每個邏輯資料中心中的資料層功能也會持續運作。舉例來說,邏輯資料中心中的 Oracle Cloud Infrastructure 運算執行處理將繼續與連附的區塊磁碟區及關聯的虛擬網路功能搭配運作,即使資料中心與運算、區塊儲存、VCN 和 (或) 身分識別與存取管理的控制層功能隔離。
是。Oracle Cloud Infrastructure 透過多個商業區域中的備援提供者連線至網際網路。這些連線使用 BGP (邊界閘道協定)。