建置高可用性的 Web 應用程式
Web 應用程式堆疊通常包含一個負載平衡器、多個 Web 伺服器及一個資料存放區。為了提高可用性,您需要一個拓樸,其中包含堆疊所有層的備援資源。
架構
此參照架構顯示在 Oracle Cloud 中搭配 Oracle Autonomous Transaction Processing 資料庫執行的高可用性 Web 應用系統。
公用負載平衡器會接收來自網際網路的從屬端要求,然後會將要求遞送至分散在多個容錯域的 Web 伺服器集區。資料層是由專用端點的自治式資料庫組成。
下圖說明此參照架構。
ha-webapp-oci.png 圖解描述
架構具有下列元件:
- 區域
Oracle Cloud Infrastructure 區域是一個局部地理區域,其中包含一或多個資料中心 (稱為可用性網域)。區域獨立於其他區域,而且很大距離可加以區隔 (跨國家或甚至是大陸)。
此架構中的所有資源都會部署在單一區域中。
- 可用性網域
可用性網域是區域內的獨立獨立資料中心。每個可用性網域中的實體資源會與提供容錯能力的其他可用性網域中的資源隔離。可用性網域並不共用基礎設施,例如電源或冷卻系統,或內部可用性網域網路。因此,一個可用性網域發生故障並不會影響該區域中的其他可用性網域。
此架構中的資源部署於單一可用性網域。
- 容錯域
容錯域是可用性網域內的一組硬體和基礎架構。每個可用性網域都具備三個具有獨立電源和硬體的容錯域。當您將資源分配給多個容錯域時,您的應用系統可以忍受容錯域中的實體伺服器失敗、系統維護和電源故障。
此架構中顯示的拓樸會跨多個容錯域。
- 虛擬雲端網路和子網路
VCN 是您在 Oracle Cloud Infrastructure 區域中設定的可客製化的軟體定義網路。與傳統的資料中心網路一樣,VCN 會提供您完整的網路環境控制。VCN 建立 VCN 之後,便可以有多個非重疊的 CIDR 區塊。您可以將 VCN 區隔到子網路,成為區域或可用性網域的範圍。每個子網路都會包含連續的位址範圍,而不會與 VCN 中的其他子網路重疊。您可以在建立子網路後變更其大小。子網路可以是公用或專用子網路。
在此架構中,Web 伺服器會連附至公用子網路,而資料庫則是使用專用子網路。
- 負載平衡器
Oracle Cloud Infrastructure Load Balancing 服務提供從單一進入點到後端多部伺服器的自動化流量分配。
- Web 伺服器
Oracle Cloud Infrastructure Compute 服務可讓您在雲端佈建及管理運算主機。您可以使用資源配置啟動運算執行處理,使其符合 CPU、記憶體、網路頻寬及儲存的資源需求。建立運算執行處理之後,您可以安全地存取它、重新啟動該運算執行處理、連附及取消連附磁碟區,並在不再需要時終止該磁碟區。
此架構中的 Web 伺服器會在運算虛擬機器上執行。
- 自治式異動處理資料庫
Oracle Autonomous Transaction Processing 是一套自我驅動、自我保護、自我修復的資料庫服務,可最佳化的交易處理工作負載。您不需要設定或管理任何硬體,也不需要安裝任何軟體。Oracle Cloud Infrastructure 可處理建立資料庫,以及備份、修正、升級及調整資料庫。
- 網路安全群組 (NSG)
NSG 可作為您雲端資源的虛擬防火牆。在 Oracle Cloud Infrastructure 的零信任安全模型下,所有流量都被拒絕,而您可以在 VCN 內控制網路流量。NSG 包含一組傳入和傳出安全規則,只套用至單一 VCN 中一組指定的 VNIC。
在此架構中,會將不同的 NSG 用於負載平衡器、Web 伺服器和資料庫。
- 路由表
虛擬路由表包含將流量從子網路遞送至 VCN 外部 (通常透過閘道) 的規則。
- 網際網路閘道
網際網路閘道允許 VCN 中的公用子網路和公用網際網路之間的流量。
- 網路位址轉譯 (NAT) 閘道
NAT 閘道可讓 VCN 中的專用資源存取網際網路上的主機,無法將這些資源連線至內送網際網路連線。
建議
您的需求可能與此處描述的架構不同。使用下列建議作為起點。
- Web 伺服器的運算資源配置
建置架構時,請根據您應用程式的記憶體和處理需求,為代管 Web 伺服器的運算執行處理選擇適當的資源配置。
- 網路設計
建立 VCN 時,請根據您要連附至 VCN 子網路的資源數目,判斷所需的 CIDR 區塊數目和每個區塊的大小。使用位於標準專用 IP 位址空間內的 CIDR 區塊。
選取不想與任何其他網路 (在 Oracle Cloud Infrastructure、您的企業內部部署資料中心或其他雲端提供者) 重疊的 CIDR 區塊,以設定專用連線。
建立 VCN 之後,您可以變更、新增及移除其 CIDR 區塊。
設計子網路時,請考慮您的流量和安全需求。將特定層或角色內的所有資源連附至相同的子網路,可作為安全界限。
使用區域子網路。
注意事項
設計雲端中高可用性應用程式堆疊時,請考慮下列因素:
- 擴充性
- 資料庫
您可以隨時手動調整資料庫的 CPU 核心數目。自治式資料庫自動調整功能可讓您的資料庫隨時可使用的 CPU 核心數目最多達 3 倍。隨著需求增加,自動調整功能會自動增加使用中的核心數目。自治式資料庫可讓您隨時調整儲存體容量,而不會影響可用性或效能。
- 應用程式
您可以使用執行處理集區和自動調整功能調整應用程式規模。
執行處理集區可讓您根據相同區域內的相同組態佈建及建立多個運算執行處理。
使用自動調整功能會根據效能度量 (例如 CPU 使用率) 自動調整執行處理集區中的運算執行處理數目。自動調整功能可協助您在高需求期間為使用者提供一致的效能,並在需求較低時降低成本。
- 資料庫
- 使用狀態
- 資料庫
架構圖表中顯示單一 Oracle Autonomous Transaction Processing 資料庫。您可以在部署架構時,啟用 Oracle Autonomous Data Guard 佈建及管理待命資料庫。
- 應用程式
容錯域提供可用性網域內的抗逆力。您可以視需要將資源分散到多個可用性網域或多個區域。
- 資料庫
- 安全
- 存取控制
使用原則限制可存取雲端資源的人員及其可執行的動作。
- 網路安全性
網路服務提供兩種虛擬防火牆功能,使用安全規則來控制封包層次流量:安全清單和網路安全群組 (NSG)。NSG 是一組包含傳入和傳出安全規則,僅適用於單一 VCN 中所選的一組 VNIC。例如,您可以選擇在 VCN 中擔任多層應用程式的 Web 層間的所有運算執行處理。
NSG 安全性規則功能與安全性清單規則相同。不過,針對 NSG 安全規則的來源或目的地,您可以指定 NSG 而非 CIDR 區塊。因此,您可以輕鬆撰寫安全規則,以控制相同 VCN 中兩個 NSG 或單一 NSG 內的流量之間的流量。當您建立資料庫系統時,可以指定一或多個 NSG。您也可以更新現有資料庫系統,以使用一或多個 NSG。
- 存取控制
部署
GitHub 中會提供此參照架構的 Terraform 程式碼。只要按一下即可將程式碼提取至 Oracle Cloud Infrastructure Resource Manager,然後再建立堆疊並進行部署。或者,也可以使用 Terraform CLI 將程式碼從 GitHub 下載到您的電腦、自訂程式碼,並部署架構。
- 使用 Oracle Cloud Infrastructure Resource Manager 部署:
- 使用 Terraform CLI 部署:
- 前往 GitHub。
- 下載或複製程式碼至您的本機電腦。
- 依照 README 中的指示進行。