使用 OCI 管理的 PostgreSQL、Redis 和 OpenSearch 將您的應用程式開發現代化

藉由提升效能、擴展性、抗逆力、安全性及成本效益,將您的企業應用系統現代化,以滿足不斷變化的客戶、供應商、員工及監管機構需求。此架構說明使用企業級開源技術 (例如 OCI 管理的 PostgreSQL、OpenSearch、Redis 以及 Kubernetes) 進行應用程式現代化。

具有下列需求的組織:需要業務彈性、作業靈活性、服務持續性、改善使用者體驗、增強效能、降低成本,以及整體平台治理,越來越轉向應用程式現代化以獲得競爭優勢。雲端原生應用程式和託管服務是實現應用程式現代化的絕佳領導者。

開放原始碼和雲端原生技術的現代化策略包括重新平台、重製或重新建構應用軟體,可大幅降低訓練成本和營運開銷。

此參考架構說明在 Oracle Cloud Infrastructure (OCI) 上為應用程式前端使用 OCI Kubernetes 引擎部署現代化應用程式、用於快取的 Redis、用於交易資料的 PostgreSQL,以及用於進階搜尋、日誌和追蹤分析的 OpenSearch。此多資料庫實作適用於管理電子商務、遊戲、社交媒體和 FinTech 等各種資料類型的產業,其中效能、擴展性、抗逆力、操作簡易、安全性和治理至關重要。

架構

此架構示範 OCI 上的現代化應用程式部署。使用此架構透過微服務和 OCI 管理的開源資料庫將應用程式現代化,確保在可擴展的安全平台上有效率的資料擷取和強大的分析功能。

在此參考架構中,您將運用與 OCI 管理的開放原始碼技術 (例如 OCI Kubernetes Engine (OKE) 結合的微服務部署,協調及調整應用程式前端、PostgreSQL 以取得資料持續性、Redis 與 Valkey 作為快取層,以加速擷取資料,以及 OpenSearch 以提供快速且準確的搜尋與分析功能,將應用程式現代化。這些服務加上 OCI 固有的擴展性和全方位安全功能,為 OCI 上的應用程式現代化提供了堅實的基礎。

下圖說明此參考架構。

oke-architecture-diagram.png 的描述如下
oke-architecture-diagram.png 圖解描述

oke-architecture-diagram-oracle.zip

架構具有下列元件:

  • 受管理的服務

    受管理服務提供特定功能,無須執行與最佳化效能、可用性、調整規模、安全性或升級相關的維護作業。託管服務可讓您專注於為客戶提供功能,而不用擔心複雜的作業。管理式服務提供可擴展的安全元件,可用於雲端原生開發。使用託管服務開發及執行您的應用程式,並儲存其資料。您無需具備每個網域的專業知識,即可獲得一流的解決方案,以建置和操作您的應用程式。

  • Kubernetes 引擎

    Oracle Cloud Infrastructure Kubernetes Engine ( OCI Kubernetes 引擎OKE) 是完全託管、可擴展且高可用性的服務,可用來將容器化應用程式部署到雲端。您可以指定應用程式所需的運算資源,而 Kubernetes 引擎則會在現有租用戶的 Oracle Cloud Infrastructure 上佈建這些資源。OKE 使用 Kubernetes 將跨主機叢集的容器化應用程式部署、調整規模及管理自動化。

  • 含 Redis 的快取

    Oracle Cloud Infrastructure Cache with Redis 是一個全面的託管記憶體快取解決方案,建立在開源 Redis 的基礎上。此完全受管理的服務可加速資料讀取和寫入,大幅提升應用程式回應時間和資料庫效能,以改善客戶體驗。

  • 資料庫與 PostgreSQL

    具備 PostgreSQL 的 Oracle Cloud Infrastructure Database 是一項受管理的 PostgreSQL 服務,可讓您的團隊免於執行例行工作,例如打補丁和備份。它的立場功能是 OCI Database 最佳化儲存,可提升系統抗逆力和效能。使用 PostgreSQL 的 OCI 資料庫可讓您獨立調整運算和儲存。此外,它還透過端對端加密提供增強的資料安全性。

  • 使用 OpenSearch 搜尋

    OCI Search with OpenSearch 是一項託管服務,可用來建立以 OpenSearch 為基礎的應用程式內搜尋解決方案,讓您能夠以毫秒為單位搜尋大型資料集並傳回結果,而無需專注於管理基礎架構。OpenSearch 具有度量、追蹤及日誌分析的可觀察性功能。

  • 堡壘主機服務

    Oracle Cloud Infrastructure Bastion 可針對沒有公用端點且需要嚴格資源存取控制的資源,例如裸機和虛擬機器、Oracle MySQL Database ServiceAutonomous Transaction Processing (ATP)、Oracle Cloud Infrastructure Kubernetes Engine ( OKE),以及允許 Secure Shell 通訊協定 (SSH) 存取的任何其他資源,提供有限且具時限的安全存取。有了 OCI 堡壘主機服務,您便可以存取專用主機,無須部署和維護跳躍主機。此外,您還可以透過識別權限以及集中式、稽核及時間導向 SSH 階段作業來改善安全態勢。OCI 堡壘主機可免除對堡壘主機存取的公用 IP 需求,在提供遠端存取時消除麻煩和潛在攻擊面。

  • 識別與存取管理

    Oracle Cloud Infrastructure Identity and Access Management (IAM) 提供 Oracle Cloud Infrastructure (OCI) 和 Oracle Cloud Applications 的使用者存取控制。IAM API 和使用者介面可讓您管理識別網域及其中的資源。每個 OCI IAM 識別網域都代表獨立的識別與存取管理解決方案,或代表不同的使用者群體。

  • 物件儲存

    OCI Object Storage 可讓您存取任何內容類型的大量結構化和非結構化資料,包括資料庫備份、分析資料,以及影像和影片等豐富內容。您可以直接從網際網路或雲端平台內安全地儲存資料。您可以擴展儲存體,而不會發生任何效能或服務可靠性的降低問題。

    針對您需要快速、立即和經常存取的「熱」儲存,使用標準儲存。針對長時間保留且極少或極少存取的「冷」儲存,使用封存儲存。

  • 金鑰保存庫

    Oracle Key Vault 會安全地將加密金鑰、Oracle 公事包、Java KeyStores、SSH 金鑰組和其他加密密碼儲存在可擴展的容錯叢集中,該叢集支援 OCI、Microsoft Azure、Amazon AWS 和 Google Cloud,以及內部部署於專用硬體或虛擬機器上。

  • API 閘道

    Oracle Cloud Infrastructure API Gateway 可讓您發布內含可從您網路存取之專用端點的 API,並視需要向公用網際網路公開。端點支援 API 驗證、要求和回應轉換、CORS、驗證和授權以及要求限制。

  • Oracle Services Network

    Oracle Services Network (OSN) 是 Oracle Cloud Infrastructure 中專為 Oracle 服務保留的概念性網路。這些服務具有公用 IP 位址,您可以透過網際網路連線。Oracle Cloud 外部的主機可以使用 Oracle Cloud Infrastructure FastConnect 或 VPN Connect 來私下存取 OSN。VCN 中的主機可以透過服務閘道私密存取 OSN。

  • 地區

    Oracle Cloud Infrastructure 區域是一個本地化地理區域,其中包含一或多個代管可用性網域的資料中心。區域獨立於其他區域,而廣大的距離可以將其分開 (跨國家或大陸)。

  • 虛擬雲端網路 (VCN) 和子網路

    VCN 是您在 Oracle Cloud Infrastructure 區域中設定的可自訂軟體定義網路。與傳統的資料中心網路一樣,VCN 可讓您控制網路環境。VCN 可以有多個非重疊的 CIDR 區塊,您可以在建立 VCN 之後變更。您可以將 VCN 區隔成子網路,此子網路可以設定區域範圍或可用性網域。每個子網路都是由連續的位址範圍組成,這些位址不會與 VCN 中的其他子網路重疊。您可以在建立子網路後變更其大小。子網路可以是公用或專用。

  • FastConnect

    Oracle Cloud Infrastructure FastConnect 會在您的資料中心與 Oracle Cloud Infrastructure 之間建立專屬的專用連線。與網際網路型連線相比,FastConnect 提供更高的頻寬選項和更可靠的網路體驗。

  • 動態路由閘道 (DRG)

    DRG 是一個虛擬路由器,提供相同區域中 VCN 之間、VCN 與區域外網路 (例如其他 Oracle Cloud Infrastructure 區域中的 VCN、內部部署網路或其他雲端提供者中的網路) 之間的專用網路流量路徑。

  • 網際網路閘道

    網際網路網關允許 VCN 中公共子網路與公共網際網路之間的流量。

  • 服務閘道

    服務閘道可讓您從 VCN 存取其他服務,例如 Oracle Cloud Infrastructure Object Storage 。從 VCN 到 Oracle 服務的流量會透過 Oracle 網路結構傳送,不會周遊網際網路。

  • 雲端保全

    您可以使用 Oracle Cloud Guard 來監控和維護 Oracle Cloud Infrastructure 中資源的安全性。Cloud Guard 使用偵測器處方,您可以定義檢查資源是否有安全漏洞,並監控操作員和使用者的特定風險活動。偵測到任何組態錯誤或不安全活動時,雲端保全會根據您可以定義的回應器處方建議更正動作並協助採取這些動作。

下列軟體已部署在 OKE 中:

  • 服務網狀組織

    服務網格產品可藉由在叢集上執行的應用程式新增專用基礎架構層 (服務網格),管理 Kubernetes 叢集中服務之間的網路通訊。例如,您可以使用 Istio,這是一種開放原始碼、不受平台限制的服務網格,在流量管理之上提供原則強制實行和遙測收集。

  • 度量伺服器

    「度量伺服器」是整個叢集的資源使用狀況資料聚總工具,可提供監控 OKE 叢集和應用程式狀況與效能的重要資料。度量伺服器會從節點和 Pod 收集資源度量,例如 CPU 和記憶體使用量,並讓其他 Kubernetes 元件 (例如水平 Pod 自動擴展器和 Kubernetes 儀表板) 使用。

  • Kubernetes 儀表板

    Kubernetes 儀表板提供執行中 Pod 數目、其狀況狀態、資源使用量以及其他重要度量的洞察分析。它們也可讓您執行調整部署、檢視日誌及刪除資源等動作。您也可以部署替代項目,例如 K9s、Rancher 或其他項目。

  • 傳入控制器

    Kubernetes 傳入控制器實作了 Kubernetes 傳入中定義的規則和組態選項,以進行負載平衡,並將傳入流量路由至叢集中工作節點上執行的服務 Pod。您可以部署 OCI 原生輸入控制器或第三方輸入控制器,例如 Nginx 輸入控制器。

  • 叢集可觀察性

    對於可觀察性,更具體而言,應用程式效能監督會部署 Prometheus 以報廢並儲存 OKE 發出的各種度量。Grafana 將用於度量視覺化。將會部署 Fluentbit 以從 OKE 叢集擷取日誌。資料將透過 OpenSearch 轉送至 OCI Search。

建議

使用下列建議作為起點。 您的需求可能與此處所述的架構不同。

應用程式擴展性

OCI 可讓您在佈建期間和部署後,根據確切需求調整服務大小。透過垂直調整大小,您可以增加或減少叢集節點的記憶體和 CPU 資源。水平調整大小可讓您調整節點數目。為了將停機時間降到最低,使用區塊磁碟區複製進行的藍綠部署,可比產業標準機動更新大幅加快更新速度。此外,隔離運算和儲存允許獨立擴展這兩個資源,OCI 的高效能網路有助於重新分配分區。

  • Kubernetes 引擎

    Kubernetes 可以使用內建的水平 Pod 自動調整器,動態調整及減少服務的執行處理數目。如有需要,也可以使用 Kubernetes Cluster Autoscaler 新增及移除叢集「適當大小」的 Kubernetes 工作者,以滿足目前的負載,而無需透過佈建浪費運算資源。

  • 具有 Redis 與 Valkey 的快取

    您可以根據工作負載,調整每個節點的記憶體大小。您可以將複本節點新增至叢集,以確保高可用性並改善讀取作業頻寬。由於您也可以部署分區叢集並連附最多 99 個節點,因此可以使用記憶體較小的節點,獲得更佳的讀取效能。此外,這會在發生失敗時加速節點復原。

  • 資料庫與 PostgreSQL

    您可以為每個節點選擇叢集所需的 CPU 和記憶體大小。此服務使用 OCI Database Optimized Storage (DBoS),此服務依賴區域區塊磁碟區來確保即使發生極端叢集失敗事件,資料也不會遺失。此處不需要調整大小,因為配置的儲存會根據資料庫系統中的實際資料成長和縮小。

  • 使用 OpenSearch 搜尋

    OpenSearch 支援垂直和水平縮放。若要進一步水平擴展,您可以部署其他叢集並透過跨叢集連線互連,以有效地搜尋所有已部署叢集的資料。

表格 - 擴展性選項

  Kubernetes 引擎 具有 Redis 與 Valkey 的快取 資料庫與 PostgreSQL 使用 OpenSearch 搜尋
節點 - 縱向擴展
節點 - 縮小
叢集 - 橫向擴展
叢集 - 橫向縮減 編號

高可用性

高可用性是 OCI 管理服務的核心設計特性。為確保最長的正常運作時間和輔助功能,我們建議部署至少包含三個節點的生產叢集:一個主要和兩個複本。OCI 會在 OCI 區域的可用性網域或容錯域之間自動分配這些節點,以消除單點故障所產生的停機時間。發生節點失敗時,OCI 會自動佈建取代節點,以回復叢集大小。透過這些自動化動作進一步保證服務的可用性:

  • Kubernetes 引擎

    Kubernetes 的設計以高可用性為依據,多個服務部署執行處理會自動分散至多個工作人員,確保服務發生問題時。Kubernetes 將偵測及重新啟動失敗的服務執行處理,並具備狀況監控功能,可與服務執行處理搭配運作,以識別發生問題的執行處理並重新啟動它們。為了在升級期間維持持續的服務可用性,Kubernetes 支援服務部署的輪流更新和倒回。此外,Kubernetes 控制層固有的備援功能也允許滾動升級 Kubernetes 本身。

  • 具有 Redis 與 Valkey 的快取

    複本節點會自動假設主要角色,並且佈建取代複本節點。

  • 資料庫與 PostgreSQL

    與「快取」類似,複本節點會自動假設主要角色,並且佈建取代複本節點。當節點發生故障時,資料庫的最佳化儲存可確保零資料遺失,因為資料會跨區域區塊儲存進行複製,並與運算節點脫鉤。

  • 使用 OpenSearch 搜尋

    符合領導者資格的節點會自動升級為領導者,以確保服務可用性。

這些自動化容錯移轉流程以零復原點目標 (RPO) 為目標,為使用者提供區域高可用性,並提供無與倫比的簡單性。

ha-architecture-diagram.png 的描述如下
ha-architecture-diagram.png 圖解描述

ha- 架構圖 -oracle.zip

災害復原

OCI 管理的服務提供強大的災難復原功能,以確保業務持續性。災難復原策略可保護服務免於區域性故障。OCI 服務可讓您在容錯移轉區域內,達成零復原點目標 (RPO) 和不到一分鐘的復原時間目標 (RTO)。

OCI 簡化了與動態路由閘道 (DRG) 和 OCI 骨幹的區域間連線。OCI 骨幹是專用的安全高可用性網路,可與全球 OCI 區域相互連線。依預設,相同範圍內的區域間公用和專用 IP 流量會周遊 OCI 骨幹,而非網際網路。

表格 - 災害復原選項和可用工具

  Kubernetes 引擎 資料庫與 PostgreSQL 使用 OpenSearch 搜尋
冷待命 OCI 全端災害復原 自動備份和回復 自動快照 API
暖待機   pglogical, GoldenGate 跨叢集複製 (提前存取)

下圖說明使用暖待命資料庫進行跨區域災害復原。

dr-architecture-diagram.png 的描述如下
dr-architecture-diagram.png 圖解描述

磁碟機架構圖 -oracle.zip

您可以利用下列元件:

  • 主要和待命區域

    系統會將區域群組成範圍。您的租用戶存在於單一範圍中,而且可以存取屬於該範圍的所有區域。目前 Oracle Cloud Infrastructure 有多個領域,包括商業、政府和專屬領域。巴黎和馬賽是商業 (OC1) 領域的一部分。

  • OCI 全端災害復原

    OCI Full Stack Disaster Recovery (FSDR) 是一項 Oracle Cloud Infrastructure 災害復原協調流程和管理服務,可針對應用程式堆疊的所有層級 (包括基礎架構、中介軟體、資料庫及應用程式) 提供全方位的災害復原功能。FSDR 服務可搭配 OKE 和基礎 OCI 資源使用,將資料庫、檔案儲存及區塊磁碟區中的應用程式資料複製到不同的區域。若為 Kubernetes,會將 OKE 組態和資訊清單詳細資訊 (例如服務、部署及組態對應) 複製到另一個遠端區域。此複寫的資料和組態可在發生完全關閉區域的災難事件時使用,以便在其他 OCI 區域啟動服務。

  • 複製工具

    將資料複製到待命區域。如果在容錯移轉發生時實行自動調整規模,待命資料庫便可縮小規模。

    • 使用 PostgreSQL 的 OCI 資料庫可提供自動備份,以建立資料庫資料的複本並從遠端儲存,以便在需要時 (例如在區域資料中心故障後) 回復為原始狀態。PostgreSQL 也提供邏輯複製選項,例如使用發布 / 訂閱模型和 Oracle GoldenGate 提供即時資料整合、資料複製、交易變更資料擷取、資料轉換等的邏輯串流複製,為 PostgreSQL 提供邏輯串流複製。
    • 使用 OpenSearch 跨叢集複製的 OCI Search 可讓您將索引、對應及描述資料從一個 OpenSearch 叢集複製到另一個叢集,包括在不同的 OCI 區域中。
  • CI/CD

    Oracle DevOps 服務為開發人員提供持續整合與部署 (CI/CD) 平台。您可以使用 DevOps 服務輕鬆在 Oracle Cloud 上建置、測試及部署軟體和應用程式。DevOps 建置和部署管線可減少變更導向的錯誤,並減少客戶建置和部署版本所花費的時間。

    此服務也提供專用 Git 儲存區域來儲存您的程式碼,並支援連線至外部程式碼儲存區域。無論您是將工作負載從內部部署或其他雲端移轉至 OCI,還是是在 OCI 上開發新的應用程式,都可以使用 DevOps 服務來簡化軟體交付生命週期。

  • 版本升級

    OCI 會以輪流方式處理次要版本升級,以作為修補程式,以確保服務持續性。雖然主要升級需要移轉路徑處理。

  • 安全

    使用 Oracle Cloud Guard ,主動監控和維護 OCI 中資源的安全性。Oracle Cloud Guard 使用偵測器處方來檢查資源是否有安全漏洞,以及監控操作員和使用者的風險活動。偵測到任何組態錯誤或不安全活動時,Oracle Cloud Guard 會根據您可定義的回應器處方建議更正動作,並協助採取這些動作。

    對於需要最高安全性資源,Oracle 建議您使用安全區域。安全區域是與以最佳做法為基礎之 Oracle 定義的安全原則處方關聯的區間。例如,安全區域中的資源不得從公用網際網路存取,且必須使用客戶管理的金鑰來加密。當您在安全區域中建立及更新資源時,OCI 會根據安全區域處方中的原則驗證作業,並拒絕違反任何原則的作業。

  • 安全區域

    複製及自訂 Oracle 提供的預設處方,以建立自訂偵測器和回應器處方。這些處方可讓您指定產生警告的安全性違規類型,以及允許對其執行哪些動作。例如,您可以偵測可見性設為公用物件儲存的儲存桶。

    在租用戶層級套用 Cloud Guard,以涵蓋最廣泛的範圍,並降低維護多個組態的管理負擔。

    您也可以使用「受管理清單」功能,將特定組態套用至偵測器。

  • 網路安全群組

    您可以使用網路安全群組 (NSG) 定義一組適用於特定 VNIC 的傳入和傳出規則。建議您使用 NSG 而非安全列表,因為 NSG 可讓您將 VCN 的子網路架構和應用程式的安全需求分開。

  • 負載平衡器頻寬

    建立負載平衡器時,您可以選取提供固定頻寬的預先定義資源配置,或指定自訂 (彈性) 資源配置,以便在其中設定頻寬範圍,並讓服務根據流量模式自動調整頻寬。只要採用任一方式,您就可以在建立負載平衡器之後隨時變更資源配置。

注意事項

建置此參照架構時,請考量下列各點。

  • 工作負載可觀察性

    受管理服務度量、追蹤及日誌都是由 OCI 立即擷取並監控。您可以在 OCI 主控台中探索這些項目,或整合選擇工具中的可觀察性資料 (例如 Prometheus、OpenSearch、Grafana、Jaeger、OCI Application Performance Monitoring)。

  • 治理

    OCI 雲端採用架構可讓您的組織改善業務敏捷性和促進創新解決方案。為了充分利用雲端,您的組織應遵循針對人員、程序及技術使用以經驗為基礎之建議的策略,並搭配分段方法來進行雲端轉型。OCI 雲端採用架構提供最佳做法和結構化方法,協助組織成功採用雲端。

  • 成本最佳化

    OCI 在全球提供一致的定價以及可預測的成本。OCI 提供各種計費和成本管理工具,讓您輕鬆管理服務成本。您可以預估成本、建立預算以設定支出臨界值、檢視使用情況,以及使用圖表和報表將支出視覺化。

    根據當前需求調整環境大小對成本控制至關重要。如有需要,您可以隨時使用 OCI 服務的擴展性功能,根據工作負載調整基礎架構。我們也建議您刪除未使用的服務,並在辦公時間以外自動停止非生產環境執行處理。

探索更多

深入瞭解此架構的功能和最佳實務,以便充分利用以 OCI 為基礎的應用程式現代化專案。

請檢閱下列其他資源:

確認

  • 授權者Ismaël Hassane
  • 提供者Tim Graves, John Sulyok