Active Directory Federation Service (ADFS) の構築方法は検索するとたくさんヒットしますが、セカンダリ構成についてはまとまった情報があまりないように見受けられたので、少しではありますがまとめてみました。
##セカンダリ サーバーの構築方法
基本的にはプライマリ サーバーの構築 (初回のフェデレーション サーバー ファームの作成) と変わりはありません。
異なるのは ADFS 構成ウィザードの設定で、[Add a federation server to a federation server farm] を選択するだけです。
それまでの過程はプライマリの構成と変わらず、ドメイン参加、Active Directory Federation Service の機能の追加をするだけでOKです。
[Add a federation server to a federation server farm] を選択
[Primary Federation Server] の指定
※証明書の設定などもありますが、プライマリ サーバーの設定方法と同じため省略します
##プライマリ-セカンダリの切替方法
構成ウィザードに沿って進めていただければ、あっという間にセカンダリ サーバーのセットアップは完了しますが、ここではプライマリ-セカンダリの切替方法をみていきます。
プライマリ・セカンダリ切替
セカンダリをプライマリに変更する場合、以下のコマンドを実行します。
Set-AdfsSyncProperties -Role PrimaryComputer
復旧したサーバーをセカンダリとして構成する場合、新規プライマリを参照するように構成します。
Set-AdfsSyncProperties -PrimaryComputerName [新規プライマリの FQDN]
プライマリをセカンダリに変更する場合は、以下のコマンドを実行します。
Set-AdfsSyncProperties -Role SecondaryComputer -PrimaryComputerName [プライマリの FQDN]
##プライマリとセカンダリの切替に際して
プライマリとセカンダリの切替に際して、両サーバー間で情報に差異がある場合 (たとえば、クレームルールの追加などが行われた場合) は切替前に同期を実施する必要があります。ただし、そのような更新を実施しない限りは、定期的な同期によってプライマリとセカンダリは同一情報を保持しているため、特に作業前に同期を待つ必要はありません。
また、プライマリとセカンダリの切替時に、一時的に両台ともプライマリ (もしくはセカンダリ) になるタイミングが発生しますが、これによってユーザーの認証に影響が出ることもありません。
なぜなら、ADFS の冗長構成というのは、両サーバー間でデータの同期を行うだけだからです。
プライマリでもセカンダリでも、複数のサーバーがプライマリであったとしても認証処理には関係ありません。
そのため、複数のサーバーがプライマリ (もしくはセカンダリ) になる影響としては、プライマリからセカンダリへの同期が行われなくなることくらいです。
(ユーザーが Azure AD などにアクセスする際、フェデレーション サービスにリダイレクトされますが、クライアントはそのフェデレーション サービス名の名前解決を行うので、フェデレーション サービス名に紐づくホストに認証が行われることとなります。名前解決の結果がプライマリであればプライマリ、セカンダリであればセカンダリに認証通信が発生します)
同期状態の確認方法
セカンダリで以下のコマンドを実行すれば同期状態を確認することができます。
Get-AdfsSyncProperties
(同期が成功している場合)
LastSyncFromPrimaryComputerName : 6-VM-ADFS
LastSyncStatus : 0 //最後の同期のステータス:成功
LastSyncTime : 8/27/2019 11:10:47 AM
PollDuration : 300 //同期間隔
PrimaryComputerName : 6-VM-ADFS
PrimaryComputerPort : 80
Role : SecondaryComputer
(同期が失敗している場合)
LastSyncFromPrimaryComputerName : 6-VM-ADFS
LastSyncStatus : 1 //最後の同期のステータス:失敗
LastSyncTime : 8/27/2019 06:10:47 AM
PollDuration : 300 //同期間隔
PrimaryComputerName : 6-VM-ADFS
PrimaryComputerPort : 80
Role : SecondaryComputer
プライマリで同じコマンドを実行すると、下記のように自身がプライマリであることを示します。
Get-AdfsSyncProperties
Role
----
PrimaryComputer
また、イベント ログを確認することで、前回以前の同期結果も確認することができます。
Applications and Services Logs > AD FS > Admin
同期成功のログ : イベント ID 348
同期失敗のログ : イベント ID 344、345