第16章: 高可用性と災害復旧のためのPowerShellソリューション
目次 1. この章で解説する主要な技術・概念(箇条書き) 2. 高可用性(HA)の構成要素と設計原則 2-1. HAとDRの違い 2-2. フェールオーバークラスタリングの概念 2-3. CSV(Cluster Shared Volumes)とストレージ設計 3. Failover Cluster Cmdletsを用いたクラスターの作成と管理 3-1. 前提条件とクラスタリング機能のインストール 3-2. クラスター作成例 3-3. 代表的な操作:クラスターリソース管理 4. ストレージレプリケーションと同期の自動化 4-1. Storage Replica(同期/非同期モード) 4-2. New-SRPartnership の使用例 4-3. レプリケーションの管理(切り替え・中断・再開) 5. 災害復旧(DR)プランの作成とPowerShellによる実装 5-1. DRサイト設計とフェイルオーバー手順 5-2. オフラインバックアップ・復元フロー 5-3. DRシナリオの自動テストスクリプト 6. DRシナリオのテストと自動復旧スクリプト 6-1. テストフェイルオーバーの計画と実施 6-2. フェイルバック(復旧後に本番サイトへ戻す) 7. HAとDRのモニタリングとアラート設定 7-1. クラスタログ・イベントログの監視 7-2. ストレージレプリカの監視 7-3. SIEM連携とリアルタイムアラート 8. 章末まとめと次章へのつながり 8-1. 学習のまとめ 8-2. 次章へのつながり 1. この章で解説する主要な技術・概念(箇条書き) #
高可用性(HA)の構成要素と設計原則
フェールオーバークラスタリング、サイト間冗長化、クラスター共有ボリューム(CSV)の基礎
Failover Cluster Cmdletsを用いたクラスターの作成と管理
Install-WindowsFeature Failover-Clustering, New-Cluster, Add-ClusterNode, Get-ClusterResourceなど
ストレージレプリケーションと同期の自動化
Windows Server 2022のStorage Replica(同期/非同期モード)
New-SRPartnership, Set-SRPartnership, Get-SRGroupによるブロックレベルレプリケーション
災害復旧(DR)プランの作成とPowerShellによる実装
DRサイトの設計、フェイルオーバー手順の自動化(DNS切り替え、レプリケーションのロールスワップ)
DRシナリオのテストと自動復旧スクリプト
テストフェイルオーバーの重要性と実施方法
Suspend-SRPartnership, Set-SRPartnership, Resume-SRPartnership でのロール切り替え
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. 前提条件とクラスタリング機能のインストール #
各ノード が同一ドメインに参加
ネットワーク要件:最低2つのNIC推奨(クラスター通信用, 公開用など)
共有ストレージ(FC/iSCSI/S2Dなど)が全ノードから認識できる
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スクリプト で、以下を順番に実行:
アプリケーション停止
Suspend-SRPartnership でレプリケーション中断
Set-SRPartnership でロールスワップ(DRサイトをソース化)
VMやアプリをDRサイトで起動
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-SRGroup で ReplicationStatus や HealthStatus をチェック。
非同期レプリケーション 時は遅延(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テクニックを学び、運用をさらに高いレベルで最適化していきます。
リンク
Windows Server 2022 with PowerShell 第 16 回 / 全 18 回
このシリーズの全 18 回を見る →