在 OCI 上使用 StackGres 部署 PostgreSQL
StackGres 是 Kubernetes 的完整堆疊 PostgreSQL 發行軟體,已封裝成一個簡單的部署單元。StackGres 包括連線集區、自動化備份、監控、集中記錄以及功能完整的管理 Web 主控台。
StackGres 為 Postgres:Patroni 整合了最知名且經過生產測試的高可用性軟體。
- 完全整合。如果發生任何問題,叢集將自動修復,無須人為介入。
- StackGres 會對應用程式顯示一個讀寫與一個唯讀連線,這些連線會在發生任何中斷事件後自動更新。
企業級的 PostgreSQL 堆疊則需要其他數個生態系統元件並進行顯著調整。它需要連線集區、自動容錯移轉及高可用性、監控、備份及災害復原。此參考架構中顯示的 StackGres 套裝程式和 Oracle Cloud Infrastructure (OCI) 元件可提供低效、可擴展的高可用性部署。
架構
此架構顯示如何在 Oracle Container Engine for Kubernetes 叢集中部署 PostgreSQL。對於可充分利用 PostgreSQL 功能的可生產環境使用此架構:
- 沒有廠商鎖定:PostgreSQL 可在任何 Kubernetes 環境中運作。
- 包含功能完整的 Web 主控台。
- Postgres 平台擁有全世界最多的擴充套件。
- 在 x86-64 和 ARM64 Kubernetes 工作節點上執行。
- 完全開放原始碼 (可自由分割「社群」與昂貴的「企業」版本)。
- 根據使用的核心提供支援和更新的價格。
- 包括 "vanilla" Postgres 與 Babelfish (提供 SQL Server 相容性)。
下圖說明此參照架構。
架構具有下列元件:
- 租用戶
租用戶是指註冊 Oracle Cloud Infrastructure 時,Oracle 在 Oracle Cloud 內設定的安全獨立分割區。您可以在租用戶的 Oracle Cloud 中建立、組織及管理您的資源。租用戶與公司或組織同義。通常,公司會有單一租用戶,並反映其在該租用戶內的組織結構。單一租用戶通常與單一訂閱關聯,而單一訂閱通常只有一個租用戶。
- 區域
Oracle Cloud Infrastructure 區域是一個本地化的地理區域,包含一或多個資料中心 (稱為可用性網域)。區域與其他區域無關,因此廣大的距離可加以區隔 (跨國家或甚至洲)。
- 區間
區間是 Oracle Cloud Infrastructure 租用戶內的跨區域邏輯分割區。使用區間組織您在 Oracle Cloud 中的資源、控制對資源的存取,以及設定使用配額。若要控制對指定區間中資源的存取,您可以定義原則來指定可存取資源的人員及可執行的動作。
- 可用性網域
可用性網域是區域內的獨立資料中心。每個可用性網域中的實體資源會與其他可用性網域中的資源隔離,以提供容錯能力。可用性網域並不共用基礎設施,例如電力或冷卻系統或內部可用性網域網路。因此,一個可用性網域發生失敗並不會影響區域中的其他可用性網域。
系統會顯示一個可用性網域,但您可以跨多個可用性網域進行部署,這取決於您的生產需求。
- 容錯域
容錯網域是可用性網域內的一組硬體和基礎設施。每個可用性網域都有三個容錯域,具備獨立電源和硬體。當您將資源分散到多個容錯域時,您的應用系統就可容忍容錯域中的實體伺服器故障、系統維護以及電源故障。
系統會顯示一個容錯域,但您可以依據生產環境需求,跨多個容錯域進行部署。
- 虛擬雲端網路 (VCN) 和子網路
VCN 是您在 Oracle Cloud Infrastructure 區域中設定的可自訂軟體定義網路。就像傳統的資料中心網路,VCN 可讓您完全控制網路環境。VCN 可以有多個非重疊 CIDR 區塊,而您可以在建立 VCN 之後進行變更。您可以將 VCN 區隔成子網路,然後對區域或可用性網域進行調整。每個子網路都是由不與 VCN 中其他子網路重疊的連續位址範圍所組成。您可以在建立子網路後變更其大小。子網路可以是公用網路或專用子網路。
- 負載平衡程式
Oracle Cloud Infrastructure Load Balancing 服務提供從單一進入點到後端多部伺服器的自動化流量分配。
- 堡壘主機服務
Oracle Cloud Infrastructure 堡壘主機可針對不具備公用端點且需要嚴格資源存取控制 (例如裸機和虛擬機器、Oracle MySQL Database Service 、Autonomous Transaction Processing (ATP)、Oracle Container Engine for Kubernetes (OKE) 及任何其他允許安全 Shell 協定 (SSH) 存取的資源,提供限制且限時的安全存取。有了 Oracle Cloud Infrastructure 堡壘主機服務,您不需部署和維護跳躍主機,即可啟用對專用主機的存取。此外,您還可以利用身分識別權限以及集中式、稽核及時間導向 SSH 階段作業來改善安全狀態。Oracle Cloud Infrastructure 堡壘主機不再需要公用 IP 才能存取堡壘主機,可在提供遠端存取時免除麻煩和潛在攻擊面。
- 安全清單
您可以為每個子網路建立安全規則,以指定必須允許進出子網路的來源、目的地和流量類型。
- 網路位址轉譯 (NAT) 閘道
NAT 閘道可讓 VCN 中的專用資源存取網際網路上的主機,而不需將這些資源暴露給內送網際網路連線。
- 服務閘道
服務閘道可讓您從 VCN 存取其他服務,例如 Oracle Cloud Infrastructure Object Storage 。VCN 到 Oracle 服務的流量會透過 Oracle 網路光纖通道,而一律不會周遊網際網路。
- 動態路由閘道 (DRG)
DRG 是一個虛擬路由器,可為 VCN 與區域外部網路之間的 VCN (例如另一個 Oracle Cloud Infrastructure 區域中的 VCN、企業內部部署網路或其他雲端提供者中的網路) 之間的專用網路流量提供路徑。
- 物件儲存
物件儲存可快速存取任何內容類型的大量結構化與非結構化資料,包括資料庫備份、分析資料,以及豐富內容 (例如影像和影片)。您可以安全地儲存,然後直接從網際網路或雲端平台內擷取資料。您可以無縫擴充儲存,而不會發生任何效能或服務可靠性的降低。針對快速、立即和經常存取的「熱」儲存,使用標準儲存。將封存儲存用於長時間且鮮少存取的「冷」儲存。
- 網際網路閘道
網際網路閘道可允許 VCN 中的公用子網路與公用網際網路之間的流量。
- FastConnect
Oracle Cloud Infrastructure FastConnect 提供一個簡單的方式,在您的資料中心與 Oracle Cloud Infrastructure 之間建立專屬的專用連線。FastConnect 提供與網際網路型連線比較的高頻寬選項,以及更可靠的網路體驗。
- 本地端點 (LPG)
LPG 可讓您將一個 VCN 與同一個區域中的另一個 VCN 對等互連。對等互連表示 VCN 使用專用 IP 位址進行通訊,而沒有流量會透過您的內部部署網路周遊網際網路或路由。
- Kubernetes 的容器引擎
Oracle Cloud Infrastructure Container Engine for Kubernetes 是一項完全託管、可擴展且高可用性的服務,可用來將容器化應用系統部署到雲端。您可以指定應用系統所需的運算資源,而 Kubernetes 的容器引擎則會在現有租用戶的 Oracle Cloud Infrastructure 上佈建這些資源。Kubernetes 的容器引擎使用 Kubernetes 將跨主機叢集的容器化應用程式部署、擴展及管理自動化。
- PostgreSQL
PostgreSQL 是一種可高度擴展且可高度擴展的開放原始碼關聯式資料庫管理系統 (RDBMS)。它支援 SQL (關聯式) 和 JSON (非關聯式) 查詢。
- StackGres
StackGres 是 Kubernetes 的完整堆疊 PostgreSQL 發行軟體,已封裝成一個簡單的部署單元。它包含一組仔細選取並調整的周圍 PostgreSQL 元件。
- 雲端保全
您可以使用 Oracle Cloud Guard 來監控及維護 Oracle Cloud Infrastructure 中資源的安全性。雲端保全使用偵測器處方,您可以定義檢查資源是否有安全漏洞,以及監控操作員和使用者是否有風險活動。偵測到任何組態錯誤或不安全活動時,雲端保全會根據您可以定義的回應器處方,建議更正動作並協助採取這些動作。
- 分散式阻斷服務 (DDoS) 保護
分散式阻斷服務 (DDoS) 攻擊是攻擊者所犯的嚴重網路犯罪,這類攻擊者洪水公司伺服器的內送流量過大。這些流量過多來自各種來源和地理位置,讓使用者無法存取公司的服務和網站。所有 Oracle Cloud 資料中心都有 DDoS 攻擊偵測和緩解大量第 3 層或 4 DDoS 攻擊。這些來自 Oracle Cloud 的 DDoS 保護服務有助於確保 Oracle 網路資源的可用性,甚至受到第 3 層或第 4 層的攻擊。
- 身分識別與存取管理 (IAM)
Oracle Cloud Infrastructure Identity and Access Management (IAM) 是 Oracle Cloud Infrastructure (OCI) 和 Oracle Cloud Applications 的存取控制層。IAM API 和使用者介面可讓您管理識別網域和識別網域內的資源。每個 OCI IAM 識別網域代表獨立身分識別與存取管理解決方案或其他使用者群體。
- 記錄日誌日誌記錄是一種可高度擴展且完全受管理的服務,可讓您從雲端資源存取下列類型的日誌:
- 稽核日誌:與稽核服務發出之事件相關的日誌。
- 服務日誌:由個別服務 (例如 API 閘道、事件、函數、負載平衡、物件儲存以及 VCN 流量日誌) 發出的日誌。
- 自訂日誌:包含自訂應用程式、其他雲端提供者或內部部署環境之診斷資訊的日誌。
- 稽核
Oracle Cloud Infrastructure Audit 服務會自動將所有支援 Oracle Cloud Infrastructure 公用應用系統程式設計介面 (API) 端點的呼叫記錄為日誌事件。目前,所有服務都支援由 Oracle Cloud Infrastructure Audit 記錄。
建議
- VCN
建立 VCN 時,請根據您計畫連附至 VCN 中子網路的資源數目,判斷所需的 CIDR 區塊數目和每個區塊的大小。使用標準專用 IP 位址空間內的 CIDR 區塊。
選取未與欲設定專用連線之任何其他網路 (在 Oracle Cloud Infrastructure 、您的內部部署資料中心或其他雲端提供者) 重疊的 CIDR 區塊。
您可以在建立 VCN 之後,變更、新增及移除其 CIDR 區塊。
設計子網路時,請考慮您的流量與安全需求。將特定層或角色內的所有資源連附至相同的子網路,以作為安全界限。
使用區域子網路。
- 雲端保全
複製並自訂 Oracle 提供的預設處方,以建立自訂偵測器與回應器處方。這些處方可讓您指定哪些類型的安全違規會產生警告,以及允許對其執行哪些動作。例如,您可以偵測可見性設為公用的物件儲存的儲存桶。
在租用戶層次套用雲端保全以涵蓋最廣的範圍,並減少維護多個組態的管理負擔。
您也可以使用「受管理清單」功能,將特定組態套用至偵測器。
- 安全區域
對於需要最高安全性的資源,Oracle 建議您使用安全區域。安全區域是一個與以最佳做法為基礎之 Oracle 定義的安全原則處方關聯的區間。例如,安全區域中的資源不得從公用網際網路存取,且必須使用客戶管理的金鑰進行加密。當您建立和更新安全區域中的資源時,Oracle Cloud Infrastructure 會根據安全區域處方中的原則驗證作業,並且拒絕違反任何原則的作業。
- 網路安全群組 (NSG)
您可以使用 NSG 定義一組套用至特定 VNIC 的輸入和輸出規則。我們建議您使用 NSG 而非安全清單,因為 NSG 可讓您將 VCN 的子網路架構與應用程式的安全需求分開。
- 負載平衡器頻寬
建立負載平衡器時,您可以選取提供固定頻寬的預先定義資源配置,或是指定自行設定頻寬範圍的客製化 (彈性) 資源配置,然後讓服務根據流量模式自動調整頻寬。無論是哪一種方式,您都可以在建立負載平衡器之後,隨時變更資源配置。
注意事項
部署此架構時,請考慮下列選項:
- ARM 處理器的同質性
StackGres 可搭配 ARM 執行 (Ampere A1 Compute)。
- 架構選項
本文件的架構是一項建議,可以根據專案需求加以變更。
- Postgres 擴充套件
StackGres 提供超過 130 組 Postgres 擴充套件供您使用。
- 使用者權限
使用最低權限的安全最佳措施:將帳戶存取限制為只有在實際需要時才能使用 root 或超級使用者權限。
- 監督
除了 OCI Events 、 OCI Logging 及 OCI Monitoring 等 OCI 服務外,您還可以使用 Prometheus 或 Grafana 進行監控。
- 備份
StackGres 包含連續以歸檔為基礎的備份,可實現零資料遺失復原。
備份一律會儲存在目前最持久使用的媒體上: OCI 物件儲存。
請遵循下列最佳應用:
- 請勿將您的資料庫暴露在網際網路上。
- 如果可能,請將應用程式叢集與 Stackgres 使用的叢集分開。
- 如果您想要在同一個叢集建立應用程式,Oracle 強烈建議您為應用程式建立不同的命名空間。
- 選擇您的 Intel、AMD 或 ARM 處理器時,請考量工作負載的大小,不要讓 Postgres 環境過大。
探索更多
進一步瞭解在 OCI 上部署 PostgreSQL。
檢閱下列額外資源:
- 如需有關 OCI 上 StackGres 的完整安裝和組態說明,請參閱 在具有 StackGres 的 OCI Kubernetes 叢集上部署高可用性 PostgreSQL 堆疊解決方案手冊
- 若要在 OCI (不含 StackGres) 上部署具有 Terraform 自動化的 PostgreSQL,請參閱部署 PostgreSQL 資料庫
- Oracle Cloud Infrastructure 的最佳做法架構
- 瞭解如何架構高可用性雲端拓樸
- PostgreSQL 文件
- StackGres 文件
