Info2softは、ウェブサイトでより快適で適切な閲覧体験を提供するためにCookieを使用しています。 プライバシーポリシー
Loading...
Azure Database for PostgreSQLの高可用性(HA)とは、システム障害やサービス停止が発生した際、最小限の停止時間でデータベースサービスを稼働させ続ける機能を指します。事業継続、データ保護、SLA順守を実現する上で企業にとって極めて重要な機能です。
複雑なクラスタツールや手動でのフェイルオーバー設定を要する従来のPostgreSQL環境とは異なり、Azureは完全マネージド型のHAソリューションを提供します。システムが異常を検知すると自動的にフェイルオーバーが実行され、サービスエンドポイントは変更されないため、アプリケーション側で追加設定なしに再接続可能です。
アーキテクチャ概要
プライマリサーバーとスタンバイレプリカを併せてデプロイする仕組みです。Azureが2台のサーバーの正常性を常時監視し、障害発生時にフェイルオーバーを起動します。
Azure Database for PostgreSQLには2種類の高可用性デプロイモデルが用意されており、耐障害性、レイテンシ、コストの要件に応じて選択します。
ゾーン冗長構成の仕組み
メリット
考慮事項
本モデルは稼働時間が最重要で停止を許容できないアプリケーションに最適です。
ゾーン内構成の仕組み
メリット
考慮事項
コストや低レイテンシを最大限優先したい場合に多用されるモデルです。
下記の表はAzure Database for PostgreSQLの2種類のHAの主要な違いをまとめたものです。
|
項目 |
ゾーン冗長HA |
ゾーン内HA |
|
デプロイ先 |
複数の可用性ゾーンに跨る |
単一の可用性ゾーン内 |
|
耐障害性 |
高い(ゾーン単位障害に対応) |
中程度 |
|
レイテンシ |
若干高い |
低い |
|
SLA |
最大約99.99% |
相対的に低い |
|
コスト |
高い |
安価 |
実運用では、本番環境やミッションクリティカルシステムにはゾーン冗長HAを推奨し、重要度の低い業務やコスト最適化を優先する環境にはゾーン内HAを採用します。
業務要件に応じて、サーバー新規作成時にHAを設定する、または既存サーバーに後からHAを有効化する2通りの手段があります。
手順1. Azureポータル(portal.azure.com)にアクセスし、Azureアカウントでサインインします。
手順2. 「Azure Database for PostgreSQL フレキシブルサーバー」を検索し、検索結果からサービスを選択します。
手順3. 「作成」をクリックして新規サーバーのプロビジョニングを開始し、必要な基本情報(サブスクリプション、リソースグループ、サーバー名、リージョン、PostgreSQLバージョン、管理者認証情報)を入力します。
手順4. 「コンピューティングとストレージ」タブで汎用プランまたはメモリ最適化プランを選択し、SKU規模、ストレージ容量、バックアップ保持期間を設定します。
手順5. 「高可用性」タブへ移動(HA有効化の重要な手順)。ここでゾーン耐障害性を設定し、サーバーを複数可用性ゾーンで保護するかどうかを指定します。
手順6. HAで使用するゾーンを選び、「有効」を選択します。
手順7. 「同一ゾーンへのフォールバックを許可」オプションを有効にします。選択したゾーン構成のリソースが不足した場合、Azureが両サーバーを同一ゾーンにデプロイしてデプロイ失敗を回避するための設定です。
手順8. 全設定を確認後、「作成」をクリックしてHA機能付きサーバーをプロビジョニングします。
Azureがプライマリとスタンバイの2台を同時にデプロイするため、デプロイ処理には通常5~10分を要します。
Azure CLIコマンドを使用する場合
サーバー作成時にゾーン冗長HA、同一ゾーンHAを構成するCLIスクリプト例を下記に記載します。
►ゾーン冗長HAのCLIスクリプト例
# ゾーン冗長高可用性を持つPostgreSQLフレキシブルサーバーを作成
az postgres flexible-server create \
--resource-group myResourceGroup \ # 自身のリソースグループ名に置き換え
--name my-pg-ha-server \ # 一意のサーバー名に置き換え
--location eastus \ # 使用するAzureリージョンを指定(複数ゾーン対応推奨)
--admin-user pgadmin \ # 管理者ユーザー名に置き換え
--admin-password 'StrongPassword123!' # 安全なパスワードに置き換え
--sku-name Standard_D4ds_v4 \ # 汎用プランSKU(業務に合わせ調整)
--tier GeneralPurpose \ # 汎用またはメモリ最適化プラン必須
--version 16 \ # PostgreSQLバージョン(HA利用時は14以上推奨)
--storage-size 128 \ # ストレージ容量GB(最小32GB)
--zonal-resiliency Enabled \ # HAを有効(廃止された--high-availabilityの代替パラメータ)
--zone 1 \ # プライマリ可用性ゾーン
--standby-zone 3 \ # スタンバイ可用性ゾーン(ゾーン冗長の場合はプライマリと別)
--allow-same-zone true # ゾーン間リソース不足時に同一ゾーンへフォールバック
►同一ゾーンHAのCLIスクリプト例
# 同一ゾーン高可用性を持つPostgreSQLフレキシブルサーバーを作成
az postgres flexible-server create \
--resource-group myResourceGroup \
--name my-pg-samezone-ha-server \
--location eastus \
--admin-user pgadmin \
--admin-password 'StrongPassword123!' \
--sku-name Standard_D2ds_v4 \
--tier GeneralPurpose \
--version 16 \
--storage-size 64 \
--zonal-resiliency Enabled \
--zone 2 \ # プライマリとスタンバイが同一ゾーン
--standby-zone 2 \
HAが無効なPostgreSQLフレキシブルサーバーを既に保有している場合、AzureポータルまたはCLIから簡単にAzure Database for PostgreSQLのHA機能を追加できます。
本操作ではAzureがスタンバイサーバーをプロビジョニングし同期レプリケーションを設定するため、一時的に(通常30~60秒)接続が遮断されます。業務影響を抑えるためメンテナンス時間帯に実施してください。
Azureポータル操作手順
手順1. Azureポータルにて、既存のPostgreSQLフレキシブルサーバーインスタンスを開きます。
手順2. 左側メニューの「設定」配下から「高可用性」を選択します。
手順3. ゾーン耐障害性の項目で「有効」を選択しHAを起動。ゾーン冗長型または同一ゾーン型のHAモード設定項目が表示されます。
手順4. リソース不足時のフォールバック用に「同一ゾーンを許可」にチェックを入れます。一時的にゾーン間リソースが不足してもHAを有効化できるようにする設定です。
手順5. 「保存」をクリックし設定を適用します。スタンバイサーバーが作成されコストが増加する旨のダイアログが表示されるため、「高可用性を有効にする」をクリックして処理を続行します。
Azureポータルの通知からデプロイ進捗を監視可能です。処理には5~10分かかり、HA有効化完了時に通知が届きます。
既存サーバーにHAを有効化するAzure CLIコマンド
az postgres flexible-server updateコマンドに–zonal-resiliency Enabledパラメータを付与することで、既存サーバーにAzure Database for PostgreSQLのHA機能を追加できます。2種類のHAモードのコマンド例を下記に記載します。
# 既存サーバーにゾーン冗長HAを有効化
az postgres flexible-server update \
--resource-group myResourceGroup \
--name my-existing-pg-server \
--zonal-resiliency Enabled \
--zone 1 \
--standby-zone 2 \
--allow-same-zone true
# 既存サーバーに同一ゾーンHAを有効化
az postgres flexible-server update \
--resource-group myResourceGroup \
--name my-existing-pg-server \
--zonal-resiliency Enabled \
--zone 3 \
--standby-zone 3 \
--allow-same-zone true
補足事項
高可用性が正常に稼働しているか確認するため、サーバーのHAステータスを定期的に検証する必要があります。
ステータス確認にはAzureポータルとAzure CLIの2種類の手段が利用可能です。
Azureポータル
PostgreSQLフレキシブルサーバー画面を開く→「概要」タブの右サイドバーにある「高可用性」ステータスカードを確認します。このカードには下記情報が表示されます。
Azure CLIコマンド
下記コマンドを実行すると、レプリケーション正常性やゾーン情報を含む詳細なHAステータス情報を取得できます。
# CLIからAzure PostgreSQLのHAステータスを確認
az postgres flexible-server show \
--resource-group myResourceGroup \
--name my-pg-ha-server \
--query "{haMode: zonalResiliency, primaryZone: zone, standbyZone: standbyZone, replicationStatus: replicationState}"
実行結果には「haMode”: “Enabled」「replicationStatus”: “Synchronized」といった値やプライマリ・スタンバイのゾーン情報が出力され、プログラム上からHAの正常性を簡易検証できます。
Azure Database for PostgreSQLのHAは堅牢な機能ですが、リージョンの制約といった制限点が存在します。また完全な災害復旧ソリューションではなく、リージョン全体の障害、データ破損、誤削除、ランサムウェア攻撃への対策には対応していません。
ここで総合的な高可用性ソリューションであるi2Availabilityを紹介します。本ソリューションは本番環境と災害復旧環境間のデータ変更を常時監視・複製します。リアルタイムでファイルシステムの書き込み処理を捕捉し、不要なデータをフィルタリング、重要な変更点を暗号化・圧縮して転送します。
完全な災害復旧環境を構築したい場合、Info2Softは下記製品も提供しています。
本記事ではAzure Database for PostgreSQLの高可用性の設定手順を解説しました。データベース新規作成時と既存環境への後付け設定の2通りの方法を紹介しています。事業継続を担保するHA環境の構築にお役立てください。また、より簡単に堅牢なHAまたは完全な災害復旧ソリューションを導入したい場合はInfo2Softがサポートいたします。