Windows Server 2022 with PS 第16章

第16章: 高可用性と災害復旧のためのPowerShellソリューション


1. この章で解説する主要な技術・概念(箇条書き)

  1. 高可用性(HA)の構成要素と設計原則
    • フェールオーバークラスタリング、サイト間冗長化、クラスター共有ボリューム(CSV)の基礎
  2. Failover Cluster Cmdletsを用いたクラスターの作成と管理
    • Install-WindowsFeature Failover-Clustering, New-Cluster, Add-ClusterNode, Get-ClusterResourceなど
  3. ストレージレプリケーションと同期の自動化
    • Windows Server 2022のStorage Replica(同期/非同期モード)
    • New-SRPartnership, Set-SRPartnership, Get-SRGroupによるブロックレベルレプリケーション
  4. 災害復旧(DR)プランの作成とPowerShellによる実装
    • DRサイトの設計、フェイルオーバー手順の自動化(DNS切り替え、レプリケーションのロールスワップ)
  5. DRシナリオのテストと自動復旧スクリプト
    • テストフェイルオーバーの重要性と実施方法
    • Suspend-SRPartnership, Set-SRPartnership, Resume-SRPartnership でのロール切り替え
  6. HAとDRのモニタリングとアラート設定
    • クラスタログ・イベントログ監視、SIEM連携、メール通知の仕組み
    • パフォーマンスカウンターでレプリケーション遅延を検知する例

2. 高可用性(HA)の構成要素と設計原則

2-1. HAとDRの違い

  • HA(高可用性): ノードやディスク障害があっても業務を継続できるように、複数ノード構成や冗長ストレージを用意する仕組み。障害時もフェイルオーバーによりダウンタイムを最小化。
  • DR(災害復旧): 大規模災害やデータセンター停止などの状況で、別サイトやバックアップからシステムを復旧する仕組み。地理的に離れた拠点へのレプリケーションと切り替えが中心。

2-2. フェールオーバークラスタリングの概念

  • Windows Server Failover Clustering(WSFC)により、複数サーバー(ノード)を1つのクラスターとして管理。
  • 共有ストレージ(FC-SAN, iSCSI, Storage Spaces Directなど)にアプリケーションデータを配置し、任意のノードが役割を引き継げる。
  • Hyper-V仮想マシン、ファイルサーバー、SQL Serverなど主要ワークロードで活用。

2-3. CSV(Cluster Shared Volumes)とストレージ設計

  • CSVは複数ノードが同時にNTFS/ReFSボリュームをマウントし、並列アクセスを可能にする仕組み。
  • ノード間にシスログ用クラスターネットワークを設けることが推奨され、高速かつ冗長なネットワークがないと性能劣化や安定性問題が起こる。

3. Failover Cluster Cmdletsを用いたクラスターの作成と管理

3-1. 前提条件とクラスタリング機能のインストール

  1. 各ノードが同一ドメインに参加
  2. ネットワーク要件:最低2つのNIC推奨(クラスター通信用, 公開用など)
  3. 共有ストレージ(FC/iSCSI/S2Dなど)が全ノードから認識できる
  4. Failover Clusteringロールインストール: Install-WindowsFeature -Name Failover-Clustering -IncludeManagementTools

3-2. クラスター作成例

New-Cluster -Name "MyCluster" -Node "Node1","Node2" -StaticAddress "192.168.10.100"
  • これで2ノードクラスターが作成され、クラスター仮想IP 192.168.10.100 でアプリケーションを提供。
  • Add-ClusterNode でノード追加、Remove-ClusterNode で削除。
  • Get-Cluster, Get-ClusterResource, Get-ClusterGroupなどで状態確認可能。

3-3. 代表的な操作:クラスターリソース管理

  • クラスタリソース(Shared Disk, Network Name, IP Address など)はGet-ClusterResourceで確認。
  • フェイルオーバーの強制: Move-ClusterGroup -Name "Cluster Group" -Node "Node2" などを実行。
  • アプリケーション別にグループを作成し、依存関係(IP → Network Name → 実行サービスタイプ)を設定して冗長化を制御。

4. ストレージレプリケーションと同期の自動化

4-1. Storage Replica(同期/非同期モード)

  • Storage Replicaは、Windows Server上でブロックレベルのストレージレプリケーションを行う機能。
  • 同期モード: 書き込みが完了するまでリモート側も書き込み完了を確認→データ整合性が高いがレイテンシ増。
  • 非同期モード: ローカル完了後に遅れてリモートへ書き込み→高速だが災害時に一部データ損失可能。

4-2. New-SRPartnership の使用例

# Node1(D:ドライブ)とNode2(E:ドライブ)を同期レプリケーション
New-SRPartnership -SourceComputerName "Node1" -SourceVolumeName "D:" `
  -DestinationComputerName "Node2" -DestinationVolumeName "E:" `
  -LogVolumeName "F:" -ReplicationMode "Sync"
  • -LogVolumeName はレプリケーションログ領域を格納するボリューム。
  • 作成後は Get-SRGroup, Get-SRPartnership で状態を確認し、同期が正常かどうかを見る。

4-3. レプリケーションの管理(切り替え・中断・再開)

# レプリケーション中断
Suspend-SRPartnership -Name "MySRPartnership"

# ソースとデスティネーションを反転 (フェイルオーバー的に活用)
Set-SRPartnership -Name "MySRPartnership" -NewSourceComputerName "Node2" -NewDestinationComputerName "Node1"

# 再開
Resume-SRPartnership -Name "MySRPartnership"
  • DRシナリオでサイトを切り替える際に利用。
  • スクリプト化しておくと、障害時に素早く人為ミスなくフェイルオーバーできる。

5. 災害復旧(DR)プランの作成とPowerShellによる実装

5-1. DRサイト設計とフェイルオーバー手順

  • 本番サイトDRサイトでストレージをレプリケートし、DNS切り替えやAD認証なども含めたDRプランを定義。
  • PowerShellスクリプトで、以下を順番に実行:
    1. アプリケーション停止
    2. Suspend-SRPartnership でレプリケーション中断
    3. Set-SRPartnership でロールスワップ(DRサイトをソース化)
    4. VMやアプリをDRサイトで起動
    5. DNSレコード書き換え or ロードバランサ設定変更

5-2. オフラインバックアップ・復元フロー

  • 大災害で両サイトが使えなくなった最悪ケースに備え、クラウドテープライブラリへの定期バックアップを保持。
  • wbadmin によるベアメタル回復シナリオの検証(第8章で解説)
  • DR計画には必ず**RPO(目標復旧点)RTO(目標復旧時間)**を設定し、ビジネス要件とコストをバランスする。

5-3. DRシナリオの自動テストスクリプト

# DR-TestFailover.ps1
Write-Host "Suspend replication on primary..."
Suspend-SRPartnership -Name "MySRPartnership"

Write-Host "Switch replication direction to DR site..."
Set-SRPartnership -Name "MySRPartnership" -NewSourceComputerName "DRNode" -NewDestinationComputerName "PrimaryNode"

Write-Host "Resume replication..."
Resume-SRPartnership -Name "MySRPartnership"

Write-Host "Bring up test VM in DR environment..."
# ... VM start, DNS update ...
  • テストが終了したらロールを戻す、レプリケーションを元に戻す等を行う。
  • 実稼働サービスを止めずにDR用にテストフェイルオーバーする仕組みを用意すると安全。

6. DRシナリオのテストと自動復旧スクリプト

6-1. テストフェイルオーバーの計画と実施

  • DRは「計画的フェイルオーバー」(定期テストやメンテナンス)と「緊急フェイルオーバー」(災害時)に大別される。
  • 計画的フェイルオーバーなら、アプリケーション整合性を保つためにシャットダウンしてからレプリケーションの最終同期を行い、DR側を立ち上げる。
  • 緊急時は多少のデータ損失を甘受しながら、可能な限り速やかにシステムを立ち上げる必要がある。

6-2. フェイルバック(復旧後に本番サイトへ戻す)

  • 災害が収束し、本来のデータセンターが復旧したら、新データをDRサイトから再度本番サイトにレプリケーションし直して切り戻す。
  • PowerShellスクリプトでフェイルバックを自動化し、DNSやロードバランサ設定も適切に戻すまでをワンストップで流せると復旧時の混乱が減る。

7. HAとDRのモニタリングとアラート設定

7-1. クラスタログ・イベントログの監視

  • Failover Clusterクラスターログを保存し、Get-ClusterLogコマンドで生成できる(トラブル時に解析)。
  • イベントビューアでは、“FailoverClustering” や**“Microsoft-Windows-FailoverClustering/Operational”** チャネルを監視し、ノード障害やフェイルオーバーが発生したタイミングを把握する。

7-2. ストレージレプリカの監視

  • Get-SRPartnership, Get-SRGroupReplicationStatusHealthStatus をチェック。
  • 非同期レプリケーション時は遅延(lag)が発生するため、レイテンシ指標を監視し、閾値を超えたら警告を出す。

7-3. SIEM連携とリアルタイムアラート

  • HA・DR運用においても、セキュリティ侵害や意図しないフェイルオーバーを即時検知できるよう、SIEM(Splunk, QRadarなど)との連携が望ましい。
  • PowerShellスクリプトでクラスターログやストレージレプリカ状況を定期スキャン→異常時にWebhook通知といった実装例もある。

8. 章末まとめと次章へのつながり

8-1. 学習のまとめ

  • 高可用性(HA)構成では、Windows ServerのFailover Clusteringを活用し、ノード障害に対して自動的に役割を引き継ぎダウンタイムを最小化できる利点を把握。
  • Storage Replica を使った同期/非同期のストレージレプリケーションにより、サイト間やサーバー間のデータ冗長性を確保し、災害時にも最新データに近い形で切り替え可能。
  • DRシナリオにおいては、本番サイトとDRサイトを繋いで、フェイルオーバー手順(DNS切り替えやスクリプト化)までを洗練させると、障害発生時も素早く対応。
  • PowerShellを使うと、クラスターの作成 (New-Cluster)、ストレージレプリケーション (New-SRPartnership)、フェイルオーバー (Suspend-SRPartnership, Set-SRPartnership) などを自動化し、誤操作リスクを減らしながら復旧手順の時間短縮が可能。
  • モニタリングとして、クラスターログやイベントログ、Get-SRPartnership などを継続チェックし、SIEM連携やメール通知を組み合わせることで、HAとDR運用を総合的に安定させられる。

8-2. 次章へのつながり

  • 次章(第17章)では、スクリプトの最適化とパフォーマンスチューニングに焦点を移します。
  • これまで多数のスクリプトを作成してきましたが、大規模化・複雑化するとスクリプト性能保守性が課題になるため、効率的なループ処理・並列実行・モジュール化などの高度なPowerShellテクニックを学び、運用をさらに高いレベルで最適化していきます。