共用方式為


在 Azure Kubernetes Service 上部署高可用性 PostgreSQL 資料庫的概觀 (AKS)

在本指南中,您會部署高可用性 PostgreSQL 叢集,以跨 AKS 與 Azure CLI 的多個 Azure 可用性區域。

本文逐步解說在 Azure Kubernetes Service (AKS) 上設定 PostgreSQL 叢集的必要條件,並提供完整部署程式和架構的概觀。

重要事項

整個 AKS 文件和範例都會提及開放原始碼的軟體。 AKS 服務等級協定、有限擔保和 Azure 支援中不包含您部署的軟體。 當您搭配 AKS 使用開放原始碼技術時,請諮詢個別社群和專案維護人員所提供的支援選項來開發方案。

Microsoft 負責建置我們在 AKS 上部署的開放原始碼套件。 該責任包括擁有建置、掃描、簽署、驗證及 Hotfix 流程的完整所有權,以及控制容器映像中的二進位檔。 如需詳細資訊,請參閱 AKS 的弱點管理AKS 支援涵蓋範圍

先決條件

部署程序

在本指南中,您將了解如何:

  • 使用 Azure CLI 建立多區域 AKS 叢集。
  • 使用 CNPG 運算子 部署高可用性 PostgreSQL 叢集和資料庫。
  • 使用 Prometheus 和 Grafana 設定 PostgreSQL 的監視。
  • 將範例資料集部署至 PostgreSQL 資料庫。
  • 執行 PostgreSQL 和 AKS 叢集升級。
  • 模擬叢集中斷和 PostgreSQL 複本容錯移轉。
  • 執行 PostgreSQL 資料庫的備份和還原。

部署架構

此圖說明 PostgreSQL 叢集設定,其中一個主要複本和兩個讀取複本是由 CloudNativePG (CNPG) 運算子所管理。 此架構提供在 AKS 叢集上執行的高可用性 PostgreSQL,可透過跨複本故障轉移來承受區域中斷。

備份會儲存在 Azure Blob 儲存體 上,提供當主要複本發生串流複寫問題時,另一種還原資料庫的方式。

當您需要完全控制資料庫組態、延伸模組和部署架構時,您可以選擇在 AKS 上裝載 PostgreSQL。 它非常適合透過自定義資源配置、快取策略和針對工作負載量身打造的記憶體組態,緊密整合 Kubernetes 原生工具、優化大規模成本,以及微調效能。

用於在 AKS 上自我裝載高可用性 PostgreSQL 資料庫的 CNPG Kubernetes 運算符架構圖表。

附註

對於需要資料庫層級資料區隔的應用程式,您可以使用 postInitSQL 命令和類似的命令來新增更多資料庫。 目前無法使用 CNPG 運算符以宣告方式新增更多資料庫。 深入了解 CNPG 運算子。

儲存體考量

您使用的儲存體類型可能會對 PostgreSQL 效能產生很大影響。 稍後在本指南中,您會選取最適合您目標和效能需求的選項。

記憶體類型 相容的驅動程式 說明
進階 SSD Azure 磁碟 CSI 驅動程式 數據復原能力上限。 Azure 進階 SSD 提供高效能記憶體,並順暢地與 Azure 進階區域備援記憶體 (ZRS) 搭配運作。 進階 SSD 會根據特定大小進行佈建,每個大小都提供特定的 IOPS 和輸送量層級。
進階 SSD v2 Azure 磁碟 CSI 驅動程式 最佳性價比。 Azure 進階 SSD v2 提供比 Azure 進階 SSD 更高的效能,同時通常成本較低。 進階 SSD v2 與進階 SSD 不同,它沒有專用大小。 您可以將進階 SSD v2 設定為您偏好的任何支援大小,並且對效能進行細微調整,而無需停機。 Azure 進階 SSD v2 磁碟有一些您應該注意的限制。 如需完整清單,請參閱 進階 SSD v2 限制
本機 NVMe 或暫存 SSD (暫時磁碟) 僅限 Azure 容器儲存體 最大效能。 暫時磁碟是本機 NVMe,以及精選 VM 系列上可用的暫存 SSD 儲存體。 它們為您的 AKS 叢集提供最高可能的 IOPS、吞吐量和亞毫秒延遲。 您也可以使用 Azure Container Storage 利用暫時磁碟的高效能,這是受控 Kubernetes 記憶體解決方案,可動態布建 PostgreSQL 等具狀態工作負載的永續性磁碟區。 不過,因為這些磁碟位於裝載叢集的本機 VM 上,因此數據不會保存到 Azure 記憶體服務。 因此,如果叢集停止或解除分配,儲存在這些磁碟上的任何數據都會遺失。 為了解決這項限制,本指南稍後的章節會示範如何設定 PostgreSQL 數據的定期備份至 Azure Blob 記憶體

後續步驟

參與者

此文章由 Microsoft 維護。 最初是由下列參與者所撰寫:

  • Ken Kilty | 首席 TPM
  • Russell de Pina | 首席 TPM
  • Adrian Joian |資深客戶工程師
  • Jenny Hayes | 資深內容開發人員
  • Carol Smith | 資深內容開發人員
  • Erin Schaffer |內容開發人員 2
  • Adam Sharif |客戶工程師 2

通知

本文檔是與 CloudNativePG 運營商的維護者 EnterpriseDB 共同開發的。 我們感謝 Gabriele Bartolini 審查本文件的早期草稿並提供技術改進。