DHCP フェールオーバークラスタとは
Windows の DHCP サーバを冗長化する際、昔は 1 台ずつスコープを分けて設定するものでした。
例えば「DHCPサーバ#1」には『192.168.1.1 ~ 192.168.1.100』のスコープを設定し、「DHCP サーバ#2」には『192.168.1.101 ~ 192.168.1.200』のスコープを設定する、というやり方です。
これだとサーバが 1 台障害した際、払い出せる数が半分になってしまいます。
Windows 2012 以降は『フェールオーバークラスタ』という設定により、複数のサーバで同じスコープを設定することができるようになりました。
フェールオーバークラスタではサーバ間でリースした IP 情報をお互いにやり取りして同期をとるため、重複して払い出すことがありません。
この記事では Windows Server 2019 でのフェールオーバークラスタの設定例と、フェールオーバークラスタのスコープを変更する際の同期方法、フェールオーバーの解除・削除方法、フェールオーバーの状態を確認する方法を紹介します。
Windows Server 2019 でのフェールオーバークラスタの設定例
192.168.1.1 ~ 192.168.1.200 のスコープをフェールオーバークラスタ設定します。
構成と設定の概要図は以下の通りです。
1. DHCPサーバの役割インストール
まずは 2 台のサーバに対し DHCP サーバの役割をインストールします。2 台とも共通の設定手順になります。
2. スコープ作成
その次に、片方のサーバのみにスコープを定義します。ここでは #1 に設定します。
サーバーマネージャーのダッシュボードの右上「ツール」から「DHCP」をクリックし、コンソールを起動します。
3. 作成したスコープのフェールオーバー設定
その次に、作成したスコープに対し、フェールオーバークラスタの設定をします。スコープを右クリックし [フェールオーバーの構成] をクリックすればそのスコープだけクラスタ設定ができますが、[IPv4] を右クリックして [フェールオーバーの構成] をクリックすれば複数のスコープをいっぺんにクラスタ設定可能です。
なお、このクラスタ設定のサーバの検出は MS-RPC (DCOM) を使っているようです。wireshark で tcp/135 の通信が確認できました。
そのため、もし WORKGROUP 環境のサーバ 2 台でフェールオーバーを構成する場合は、ローカル管理者の ID/パスワードを揃える必要があります。(ローカル administrator のパスワードが異なるとパートナーサーバーの設定でエラーになります。)
以上で設定作業は完了です。
スコープ変更時のフェールオーバー設定の同期 (スコープのレプリケート)
もし運用中にスコープを変更したい、というとき、まずはどちらかの片方のサーバのスコープを変更します。例えばここで「192.168.1.1 ~ 192.168.1.198」に修正したとします。
ですが、フェールオーバークラスタを組んでいてもこの設定はもう片方のサーバには自動では反映されません。
同期するためには [IPv4] を右クリックし、[スコープのレプリケート] をクリックします。
必ず、修正したサーバでこの作業をしてください。対向のサーバで [スコープのレプリケート] を実行すると、対向のサーバの設定が修正したサーバ側の設定を上書きしてしまう (つまり元の設定に戻ってしまう) ことになります。
同期が成功すると以下のように表示されます。
フェールオーバーの解除 (削除)
フェールオーバーの解除・削除をするには、スコープを右クリックし、[フェールオーバーの構成解除] をクリックします。
解除・削除はどちらのサーバからでも実施できますが、この手順を実行したサーバ側ではスコープがそのまま残り、対向のサーバではそのスコープが削除されます。
フェールオーバーの設定状態の確認
PowerShell の Get-DhcpServerv4Failover コマンドで状態を確認できます。State が Normal となっており正常であることが分かります。
PS C:\Users\Administrator> Get-DhcpServerv4Failover Name : win-7am8cvaqdrt-192.168.0.202 PartnerServer : 192.168.0.202 Mode : LoadBalance LoadBalancePercent : 50 ServerRole : ReservePercent : MaxClientLeadTime : 01:00:00 StateSwitchInterval : State : Normal ScopeId : AutoStateTransition : False EnableAuth : True
コメント