在本指南中,您會部署高可用性 PostgreSQL 叢集,以跨 AKS 與 Azure CLI 的多個 Azure 可用性區域。
本文逐步解說在 Azure Kubernetes Service (AKS) 上設定 PostgreSQL 叢集的必要條件,並提供完整部署程式和架構的概觀。
重要事項
整個 AKS 文件和範例都會提及開放原始碼的軟體。 AKS 服務等級協定、有限擔保和 Azure 支援中不包含您部署的軟體。 當您搭配 AKS 使用開放原始碼技術時,請諮詢個別社群和專案維護人員所提供的支援選項來開發方案。
Microsoft 負責建置我們在 AKS 上部署的開放原始碼套件。 該責任包括擁有建置、掃描、簽署、驗證及 Hotfix 流程的完整所有權,以及控制容器映像中的二進位檔。 如需詳細資訊,請參閱 AKS 的弱點管理和 AKS 支援涵蓋範圍。
先決條件
- 本指南假設對於 核心 Kubernetes 概念 和 PostgreSQL 有基本瞭解。
- 您需要擁有者或使用者存取系統管理員,以及您的 Azure 帳戶中訂用帳戶上的參與者Azure 內建角色。
在 Azure Cloud Shell 中使用 Bash 環境。 如需詳細資訊,請參閱開始使用 Azure Cloud Shell。
若要在本機執行 CLI 參考命令,請安裝 (部分機器翻譯) Azure CLI。 若您在 Windows 或 macOS 上執行,請考慮在 Docker 容器中執行 Azure CLI。 如需詳細資訊,請參閱如何在 Docker 容器中執行 Azure CLI。
如果您使用的是本機安裝,請使用 az login 命令,透過 Azure CLI 來登入。 請遵循您終端機上顯示的步驟,以完成驗證流程。 如需其他登入選項,請參閱 使用 Azure CLI 向 Azure 進行驗證。
出現提示時,請在第一次使用時安裝 Azure CLI 延伸模組。 如需擴充功能的詳細資訊,請參閱 使用和管理 Azure CLI 的擴充功能。
執行 az version (部分機器翻譯) 以尋找已安裝的版本和相依程式庫。 若要升級至最新版本,請執行 az upgrade。
您也需要安裝下列資源:
- Azure CLI 2.56 版或更新版本。
- jq1.5 版或更新版本。
- kubectl 1.21.0 版或更新版本。
- Helm 3.0.0 版或更新版本
- openssl 3.3.0 版或更新版本。
- Visual Studio Code 或對等工具。
- Krew 0.4.4 版或更新版本。
- kubectl CloudNativePG (CNPG) 外掛程式。
部署程序
在本指南中,您將了解如何:
- 使用 Azure CLI 建立多區域 AKS 叢集。
- 使用 CNPG 運算子 部署高可用性 PostgreSQL 叢集和資料庫。
- 使用 Prometheus 和 Grafana 設定 PostgreSQL 的監視。
- 將範例資料集部署至 PostgreSQL 資料庫。
- 執行 PostgreSQL 和 AKS 叢集升級。
- 模擬叢集中斷和 PostgreSQL 複本容錯移轉。
- 執行 PostgreSQL 資料庫的備份和還原。
部署架構
此圖說明 PostgreSQL 叢集設定,其中一個主要複本和兩個讀取複本是由 CloudNativePG (CNPG) 運算子所管理。 此架構提供在 AKS 叢集上執行的高可用性 PostgreSQL,可透過跨複本故障轉移來承受區域中斷。
備份會儲存在 Azure Blob 儲存體 上,提供當主要複本發生串流複寫問題時,另一種還原資料庫的方式。
當您需要完全控制資料庫組態、延伸模組和部署架構時,您可以選擇在 AKS 上裝載 PostgreSQL。 它非常適合透過自定義資源配置、快取策略和針對工作負載量身打造的記憶體組態,緊密整合 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 審查本文件的早期草稿並提供技術改進。