DBAtlas · データベース運用アトラス

SQL Server Always On 可用性グループ (Linux、Pacemaker)

SQL Serverレベル: 上級所要時間: 120〜180 分

SQL Server 2022 をインストールした 3 台の Linux サーバー (RHEL 9 または Ubuntu 22.04) で、Pacemaker が管理する Always On AG を構築します: mssql-server-ha、hadr.hadrenabled、証明書で認証するデータベースミラーリングエンドポイント、CLUSTER_TYPE = EXTERNAL の AG (同期レプリカ 3 つ、または同期 2 つ + configuration-only)、自動シード処理、pacemaker/corosync/pcs クラスター、フェンシング (STONITH)、ocf:mssql:ag リソース、リスナー IP リソースと制約、リスナーと計画的フェールオーバーのテスト。最終的に、primary がダウンすると Pacemaker が自動フェールオーバーし、リスナー IP が primary とともに移動する AG が完成します。

まず各ノードを Linux への SQL Server のインストール でインストールしてください。Windows と WSFC については Always On AG (Windows)、構築済み AG の日常運用と障害対応については AG の運用 を参照してください。

構成: Linux ノード 3 台: 同期レプリカ 3 つ、または同期 2 つ + configuration-only レプリカ

開始前の確認

  • 3 台のノードに SQL Server 2022 が同じバージョンと CU でインストールされている (Linux へのインストール)…。configuration-only ノードは Express でもかまいません…。… は sysadmin。パスワード: read -rsp 'パスワード: ' SQLCMDPASSWORD; export SQLCMDPASSWORD と sudo --preserve-env=SQLCMDPASSWORD bash <script>.sh。
  • 各ノードで hostname の出力と SQL Server の @@SERVERNAME が完全に一致し、ノード一覧の名前とも一致している。一致しない場合、Pacemaker のリソースはレプリカを見つけられません (RESOLVING)。
  • ノード同士が名前で解決でき (DNS または /etc/hosts)、次のポートが開いている: SQL …/tcp、エンドポイント …/tcp、Pacemaker 2224/tcp、3121/tcp、5403/tcp、21064/tcp、5404–5405/udp。リスナー IP (…) は未使用。
  • 各ノードで RHEL のサブスクリプションと High Availability Add-On が有効 (rhel-9-for-x86_64-highavailability-rpms リポジトリ)。
  • ノードの時刻が NTP で同期されている (chronyd / systemd-timesyncd)。corosync と証明書は時刻のずれの影響を受けます。
  • …各ノードの BMC (iLO/iDRAC/IPMI) のアドレスにノードから到達でき、フェンシングのユーザーに電源オフ/オンの権限がある。…vCenter (…) にノードから 443/tcp で到達でき、フェンシングのアカウントにこれらの VM の電源操作の権限がある。…Red Hat はサポート対象のフェンシング方式のみをサポートします (同じ仮想化プラットフォーム)。
  • パスワードが準備され、保管庫に保存されている: SQL のマスターキー、証明書の秘密キーのバックアップ、… ログイン、hacluster ユーザー…、フェンシングのアカウント…。各ステップはパスワードを画面に表示せずに入力を求めます。
  • メンテナンスウィンドウ: SQL Server のサービスを 1 回再起動し (hadr.hadrenabled)、フェールオーバーテストでリスナーが数秒間切断されます。

ガイドのフェーズ

  • ノードを準備する — ノード名を hosts ファイルに追加する · ファイアウォールで SQL、エンドポイント、Pacemaker のポートを開放する
  • SQL Server: HA エージェント、Always On、エンドポイント — SQL Server HA エージェントをインストールする (mssql-server-ha) · Always On を有効にして SQL Server を再起動する · AlwaysOn_health セッションを起動時に開始する · Pacemaker 用の SQL Server ログインとパスワードファイルを作成する · エンドポイントの証明書を作成してバックアップする (ノード 1) · 証明書ファイルをほかのノードにコピーする (ノード 1) …
  • 可用性グループ (CLUSTER_TYPE = EXTERNAL) — AG を作成する (ノード 1) · セカンダリを AG に参加させる: … · データベースを FULL 復旧モデルにし、バックアップして AG に追加する (ノード 1) · 自動シード処理と同期を監視する (ノード 1)
  • Pacemaker クラスター — Pacemaker、corosync、pcs をインストールする · hacluster のパスワードを設定して pcsd を起動する · Ubuntu の既定のクラスター構成を削除する · クラスターを作成して起動する (ノード 1) · フェンシング (STONITH) を構成する (ノード 1) · クラスターのプロパティを設定する (ノード 1) …
  • リスナー — リスナーを作成する (ノード 1) · リスナー経由の接続をテストする
  • 検証とフェールオーバーテスト — AG の正常性を確認する · 計画的フェールオーバーのテスト: … を primary にする · フェールバック: … を再び primary にする
  • インストール後の作業 — ログイン、ジョブ、サーバーオブジェクトを同期する · バックアップと監視を設定する
環境に合わせた手順プランを開く →