複数台のAD FSにおいて冗長化を行う場合、AD FSファームを構成して冗長化を行います。
今回は、運用中においてサーバの障害やメンテナンスなどでAD FSファームのスイッチオーバーが必要になる際の手順などについて書きたいと思います。
まずは、おさらいとしてAD FSファームについて記載します。AD FSは、1台のプライマリAD FSサーバと複数台のセカンダリAD FSから構成されるAD FSファームを構成できます。
AD FSファームを構成すると、セカンダリは自身のデータベースに対する直接の書き込み(設定変更)を禁止し、指定したプライマリサーバからその情報を同期します。デフォルトでは、300秒(5分)に1度その設定をポーリングします。
Windows Server 2012 R2のAD FSファームは、証明書利用者信頼(Relying Party trusts)が5以下の場合は最大10台、それ以上の証明書利用者信頼の場合は最大5台のAD FSサーバでの構成がサポートされます。
Office 365のみを利用する環境であれば、「Device Registration Service」「Microsoft Office 365 Identity Platform」の2つが証明書利用者信頼として登録されることになりますので、10台で構成すれば10万を越えるような大規模な環境でも理論上は構成できることになります。(実際の環境では、DR環境にある別のデータセンタのAD FSサーバの台数も含めての台数になるので、もう少し収容ユーザー数は少なりますが)
また、構成可能なオブジェクト数は要求プロバイダー信頼と証明書利用者信頼で最大100がサポートされています。実環境としては使い切ることは無さそうですね。
さて、こんなケースを考えてみます。プライマリ AD FSのfs01が故障しました。復旧までにはかなり時間がかかる見込みです。この状態でも、ユーザーからfs02への認証要求は通常通り継続できますので問題は無いのですが、fs02はセカンダリなので設定変更などのオペレーションを実施することができません。
AD FSの設定変更を可能にするために、fs02をプライマリに昇格させようと思います。
fs02をプライマリに昇格させるには、fs02でPowerShellを起動して、以下のコマンドを実行します。
Set-AdfsSyncProperties -Role PrimaryComputer
前述の通り、クラスターなどとは違ってAD FSファームのプライマリやセカンダリはDBの同期のためだけに利用されている物になりますので、これだけで完了します。
続いて、fs03など更に別のセカンダリが存在している場合は、今までfs01に向けてポーリングしていた物をfs02からポーリングするように設定する必要があります。fs03などでプライマリのFQDNを指定した以下のコマンドを実行してポーリング先を変更します。
Set-AdfsSyncProperties -PrimaryComputerName fs02.contoso.com
これで、fs02へのプライマリの役割のスイッチオーバーが完了です。
さて、この状態でようやくfs01の故障対応が完了してサーバが立ち上がってきたとします。fs01の設定は以前のままになりますので、立ち上がってきた状態は以下の感じになります。
このままスイッチバックをすると、fs01は故障発生前の古い情報のままになってしまいますので、まずはfs02のセカンダリとして設定して情報が同期されるのを待ちます。
Set-AdfsSyncProperties -Role SecondaryComputer -PrimaryComputerName fs02.contoso.com
最後に、fs01に再度スイッチバックを行います。
<fs01> Set-AdfsSyncProperties -Role PrimaryComputer <fs02> Set-AdfsSyncProperties -Role SecondaryComputer -PrimaryComputerName fs01.contoso.com <fs03など> Set-AdfsSyncProperties -PrimaryComputerName fs01.contoso.com
AD FSファームの仕組み(静的なDB同期)が分かってしまえば挙動については比較的単純なのでご理解頂けると思います。