Exchange Server 2019/2016 をメンテナンス モードにする方法 (はい、これはプロセスです)
Exchangeサーバーの運用は、メンテナンスの手間がかさむだけでも大変です。パッチ適用、ハードウェア更新、あるいは単に環境を整理整頓したいだけなら、サーバーをメンテナンスモードにすることは必須です。しかし、これは少々面倒です。すべてのデータベースを移行し、役割を切り替え、メールフローに支障が出ないようにする必要があります。このガイドでは、一般的な手順を順に解説します。スクリプトに頼るのは必ずしも信頼できるとは限らないため、ほとんどは手動で行います。予期せぬ事態を避けるため、各フェーズの確認にはある程度の時間がかかることを覚悟してください。完了すると、サーバーは基本的にオフラインになり、その間はメール配信ができなくなります。その間は、更新やハードウェアの修正を整理する必要があります。完了したら、プロセスを元に戻すことはそれほど難しくありませんが、中途半端なままにしないよう注意が必要です。
Exchange Serverをメンテナンスモードにする方法
方法1: 手動メンテナンスモード – スクリプトが失敗することがあるため
この方法は、ステップバイステップで実行するのが中心です。スクリプトを細かく制御したい場合や、スクリプトに問題がある場合に役立ちます。設定によっては、Exchange 管理シェルからスクリプトを実行しますが、特にサーバーに直接アクセスできない場合は、リモート PowerShell 経由で実行する必要があります。まず、FailoverClusters モジュールがロードされた RSAT ツールと、最新の Exchange 管理シェルがインストールされていることを確認してください。PowerShell を使用して、次のようにサーバーにリモート接続します。powershell $Session = New-PSSession -ConfigurationName Microsoft. Exchange -ConnectionUri http://your.exchange.server/PowerShell/ -Authentication Kerberos -Credential (Get-Credential) Import-PSSession $Session まず、サーバー名を特定します。powershell # メンテナンスモードにするサーバーを指定します。$maintance_srv = “exchange1.yourdomain.com” # メールキューの保存先を指定します。 $target_srv = “exchange2.yourdomain.com” 次に、HubTransport コンポーネントを無効にして、メール フローをドレインします。 powershell Set-ServerComponentState $maintance_srv –Component HubTransport –State Draining –Requester Maintenance Restart-Service MSExchangeTransport ドレイン モードになっているかどうかを確認します。 powershell Get-ServerComponentState -Identity $maintance_srv -Component HubTransport 「Draining」と表示されたら、メールボックス データベースのコピーをサーバーから移動します。 powershell Set-MailboxServer $maintance_srv –DatabaseCopyAutoActivationPolicy Blocked Set-MailboxServer $maintance_srv –DatabaseCopyActivationDisabledAndMoveNow $true 次に、アクティブ コピーが移動するまで数分間待ちます。状態を確認するには、次のコマンドを使用します。 powershell Get-MailboxDatabaseCopyStatus -Server $maintance_srv | where {$_. Status -like “Mounted”} 待機中に、クラスター ノードを一時停止して PAM (Primary Active Manager) の役割をシフトする必要がある場合があります。powershell Suspend-ClusterNode –Name $maintance_srv データベースが移動され、マウントされたデータベースがクリアされたら、サーバーをメンテナンス モードにします。powershell Set-ServerComponentState $maintance_srv –Component ServerWideOffline –State InActive –Requester Maintenance メンテナンス モードになっていることを確認します。powershell Get-ServerComponentState -Identity $maintance_srv -Component ServerWideOffline 状態を元に戻すには、手順を逆にします。powershell Set-ServerComponentState $maintance_srv –Component ServerWideOffline –State Active –Requester Maintenance Resume-ClusterNode –Name $maintance_srv Set-MailboxServer $maintance_srv –DatabaseCopyAutoActivationPolicy Unrestricted Set-MailboxServer $maintance_srv –DatabaseCopyActivationDisabledAndMoveNow $false Set-ServerComponentState $maintance_srv –Component HubTransport –State Active –Requester Maintenance ヘルス チェックで終了します: powershell Test-ServiceHealth $maintance_srv メールボックス データベースのバランスを再調整する場合は、次のコマンドを実行します: powershell cd $exscripts.\RedistributeActiveDatabases.ps1 -DagName your-dag -BalanceDbsByActivationPreference すべてのメールボックス コピーを一括して移動する場合:powershell Move-ActiveMailboxDatabase -Server $target_srv -ActivateOnServer $maintance_srv -Confirm:$false 最後に、接続テストを実行します: powershell Test-MAPIConnectivity -Server $maintance_srv そして、DAG 全体の正常性をチェックします: powershell Get-MailboxDatabaseCopyStatus Get-ReplicationHealth -DatabaseAvailabilityGroup
補足:システムによっては、この方法が少し不安定に感じられる場合があります。データベースの移動には数分かかる場合があり、コマンドを実行しても最初は何も起こらないこともあります。忍耐が鍵となります。もう一度実行するか、軽く再起動すると、問題が解決することもあります。
まとめ
- サーバーとメール キューの宛先を特定します。
- Set-ServerComponentState を使用してメール フローをドレインします。
- メールボックス データベースのコピーをサーバーから移動します。
- サーバーをメンテナンス モードにします。
- アップデートまたはハードウェア作業を実行します。
- 手順を逆に実行して、サーバーをオンラインに戻します。
まとめ
Exchangeサーバーをメンテナンスモードにするのはそれほど難しいことではありませんが、少し手間がかかります。手動で行う場合は、何が起こっているかを正確に把握できますが、同時に各ステップに注意を払う必要があります。一度コツをつかんでしまえば、プロセスは非常に簡単です。少しの忍耐力が必要です。この情報が誰かの時間を節約してくれることを願っています。お役に立てれば幸いです。