次の方法で共有


Azure Kubernetes Service (AKS) に高可用性 PostgreSQL データベースをデプロイする方法の概要

このガイドでは、Azure CLI を使用して複数の Azure 可用性ゾーンにまたがる高可用性 PostgreSQL クラスターを AKS 上にデプロイします。

この記事では、PostgreSQL クラスターを Azure Kubernetes Service (AKS) 上で設定するための前提条件を示すとともに、デプロイ プロセス全体とアーキテクチャの概要を説明します。

重要

オープンソース ソフトウェアは、AKS のドキュメントとサンプル全体で説明されています。 デプロイするソフトウェアは、AKS サービス レベル アグリーメント、限定保証、Azure サポートから除外されます。 AKS と共にオープンソース テクノロジを使用する場合は、それぞれのコミュニティとプロジェクト保守担当者から受けられるサポート オプションを調べ、計画を策定してください。

たとえば、Ray の GitHub リポジトリでは、応答時間、目的、サポート レベルが異なる複数のプラットフォームについて説明しています。

Microsoft は、AKS 上に展開するオープンソース パッケージを構築する責任を負います。 その責任には、ビルド、スキャン、署名、検証、修正プログラム プロセスの完全な所有権と、コンテナー イメージ内のバイナリの制御権が伴います。 詳細については、AKS の脆弱性管理に関するページと「AKS のサポート範囲」を参照してください。

前提条件

  • 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 を使用してマルチゾーン AKS クラスターを作成する。
  • CNPG オペレーターを使用して高可用性 PostgreSQL クラスターとデータベースをデプロイする。
  • Prometheus と Grafana を使用して PostgreSQL の監視を設定する。
  • サンプル データセットを PostgreSQL データベースにデプロイする。
  • PostgreSQL と AKS クラスターのアップグレードを実行する。
  • クラスターの中断と PostgreSQL レプリカのフェールオーバーをシミュレートする。
  • PostgreSQL データベースのバックアップと復元を実行する。

デプロイ アーキテクチャ

この図は、ある PostgreSQL クラスターのセットアップを示しています。1 つのプライマリ レプリカと 2 つの読み取りレプリカがあり、これらは CloudNativePG (CNPG) オペレーターによって管理されます。 このアーキテクチャによって、AKS クラスター上で実行される高可用性 PostgreSQL が実現し、ゾーンの 1 つが停止してもレプリカ間でフェールオーバーすることによって稼働を継続できます。

バックアップは Azure Blob Storage に格納されるため、プライマリ レプリカからのストリーミング レプリケーションで問題が発生した場合にデータベースを復元する別の方法として利用できます。

データベースの構成、拡張機能、デプロイ アーキテクチャを完全に制御する必要がある場合は、AKS で PostgreSQL をホストすることを選択できます。 Kubernetes ネイティブ ツールとの緊密な統合、大規模なコストの最適化、ワークロードに合わせたカスタム リソースの割り当て、キャッシュ戦略、ストレージ構成によるパフォーマンスの微調整に最適です。

AKS で高可用性 PostgreSQL データベースを自己ホストするための CNPG Kubernetes オペレーターのアーキテクチャ図。

データベース レベルでのデータ分離が必要なアプリケーションの場合は、postInitSQL コマンドなどを使用してデータベースを追加できます。 現在、CNPG 演算子を使用して宣言型の方法でデータベースを追加することはできません。 CNPG 演算子の詳細を確認してください。

ストレージに関する考慮事項

使用するストレージの種類は、PostgreSQL のパフォーマンスに大きな影響を与える可能性があります。 このガイドの後半で、目標とパフォーマンスのニーズに最適なオプションを選択します。

ストレージの種類 互換性のあるドライバー 説明
Premium SSD Azure Disks CSI ドライバーまたは Azure Container Storage 最大データ回復性。 Azure Premium SSD は、高パフォーマンスのストレージを提供し、Azure Premium ゾーン冗長ストレージ (ZRS) とシームレスに連携します。 Premium SSD は特定のサイズに基づいてプロビジョニングされ、それぞれが特定の IOPS とスループット レベルを提供します。
Premium SSD v2 Azure Disks CSI ドライバーまたは Azure Container Storage 最高の価格パフォーマンス。 Azure Premium SSD v2 は、Azure Premium SSD よりも高いパフォーマンスを提供しますが、一般的にはコストも低くなります。 Premium SSD とは異なり、Premium SSD v2 には専用のサイズはありません。 Premium SSD v2 は、サポートされている任意のサイズに設定し、ダウンタイムなしでパフォーマンスに合わせて細かい調整を行うことが可能です。 Azure Premium SSD v2 ディスクには、注意する必要がある特定の制限があります。 完全な一覧については、「Premium SSD v2 の制限事項」を参照してください。
ローカル NVMe または一時 SSD (エフェメラル ディスク) Azure Container Storage のみ 最大パフォーマンス。 エフェメラル ディスクはローカル NVMe であり、一部の VM ファミリで使用できる一時的な SSD ストレージです。 AKS クラスターでは、可能な限り高い IOPS、スループット、およびミリ秒未満の待機時間が提供されます。 PostgreSQL などのステートフル ワークロード用に永続ボリュームを動的にプロビジョニングするマネージド Kubernetes ストレージ ソリューションである Azure Container Storage を使用して、エフェメラル ディスクの高パフォーマンスを活用することもできます。 ただし、これらのディスクはクラスターをホストするローカル VM 上に存在するため、データは Azure ストレージ サービスに保持されません。 その結果、クラスターが停止または割り当て解除されると、これらのディスクに格納されているすべてのデータが失われます。 この制限に対処するために、このガイドの後のセクションでは、PostgreSQL データの Azure Blob Storage への定期的なバックアップを設定する方法について説明します。

次のステップ

共同作成者

Microsoft では、この記事を保持しています。 最初の寄稿者は次のとおりです。

  • Ken Kilty | プリンシパル TPM
  • Russell de Pina | プリンシパル TPM
  • Adrian Joian | シニア カスタマー エンジニア
  • Jenny Hayes | シニア コンテンツ開発者
  • Carol Smith | シニア コンテンツ開発者
  • Erin Schaffer |コンテンツ開発者 2
  • Adam Sharif | カスタマー エンジニア 2