Exchange2013的维护模式

Exchange2010有一个选项,即通过命令“StartDagServerMaintenance.ps1”可以将DAG成员服务器切换到维护模式。同理,通过命令StopDagServerMaintenance.ps1可以终止维护模式。实际上,这条命令可以将任意活动的邮箱数据库移至DAG的另一个节点并将此节点服务器暂时置为对其他服务器不可用状态。所以如果当故障转移发生时,有服务器处于维护模式,那它将不会被选作故障转移的目标节点。

Exchange2013的维护模式功能不限于此。您现在可以将整台服务器包括一些诸如传输服务,联合消息呼叫路由服务等组件暂时挂起以方便做系统变更。在很多情况下您需要将一台服务器置于维护模式。例如您需要安装一些软件或者需要做一些排错但不希望影响用户访问这台服务器上的邮箱数据。为简化进出维护模式的流程,我创建了一下两个脚本以方便Exchange2013服务器的切换。将Exchange2013由工作状态切换到维护模式相对比较简单。使用以下命令即启用维护模式。如果一台邮箱服务器在停止传输服务以前,活动队列必须先清空。为此,队列中的信息会转移到另一台服务器上。以下命令中的Target和Server的值必须是一个FQDN名。1. Set-ServerComponentState -ComponentHubTransport -StateDraining -RequesterMaintenance 2. Redirect-Message -Server <server_fqdn> -Target <server_fqdn>如果服务器是DAG的成员,命令行如下:1. Suspend-ClusterNode2. Set-MailboxServer -DatabaseCopyActivationDisabledAndMoveNow $true 3. Set-MailboxServer  -DatabaseCopyAutoActivationPolicy Blocked 一旦消息队列清空了以后,就可以着手停止所有组件了。 Set-ServerComponentState  -Component ServerWideOffline -State Inactive -Requester Maintenance 将服务器退出维护模式差不多是一个反向操作。首先先激活所有组件: Set-ServerComponentState  -Component ServerWideOffline -State Active -Requester Maintenance 如果服务器是DAG成员,您需要在集群中激活之(即恢复集群节点)。 1. Resume-ClusterNode 2. Set-MailboxServer  -DatabaseCopyActivationDisabledAndMoveNow $false 3. Set-MailboxServer  -DatabaseCopyAutoActivationPolicy Unrestricted 如果这台服务器是邮箱服务器,传输队列也需要恢复如初: Set-ServerComponentState –Identity  -Component HubTransport -State Active -Requester Maintenance 尽管不是必须的,但出于系统稳定考虑最好可以在变更组件状态后重启Exchange传输服务。这能确保传输服务能够立即应用这些变更的组件而不需要等到Managed Availability(健康服务)起作用。 有时候等待队列清空相当耗费时间。我不喜欢等在屏幕前然后每隔一段时间检查一下队列清空状态,所以我又写了两个小脚本可以完全将定期检查的工作自动化。此外,这个脚本还可以对其他服务器的组件状态做安全检查并发预警信息。第一个脚本,Start-ExchangeServerMaintenanceMode.ps1会将服务器切入维护模式,第二个脚本Stop-ExchangeServerMaintenanceMode.ps1会将服务器置回常态。请注意这两个脚本都依赖于Exchange的一些组件因此需要通过Exchange管理命令行来运行。为确保脚本可以简单复用,我为这一串脚本建立了命令行,将以下两个脚本加到Powershell的配置文件里:.//Start-ExchangeServerMaintenanceMode.ps1.//Stop-ExchangeServerMaintenanceMode.ps1加好之后,在Exchange管理命令行中就可以使用以下命令了:Start-ExchangeServerMaintenanceMode –Server Stop-ExchangeServerMaintenanceMode –Server 我在Start-ExchangeServerMaintenanceMode的脚本里面加了空循环Loop,这样可以每隔一分钟地检查传输队列知道队列清空。只有在队列清空时,脚本才会继续将一台服务器标记为维护模式。以下代码反复更新测试了多遍,验证可用。

function evaluatequeues(){

$MessageCount = Get-Queue -Server $Server | ?{$_.Identity -notlike “*\Poison” -and $_.Identity -notlike”*\Shadow\*”} | Select MessageCount

$count = 0

Foreach($message in $MessageCount){

$count += $message.messageCount

}

if($count -ne 0){

Write-Output “INFO: Sleeping for 60 seconds before checking the transport queues again…” -ForegroundColor Yellow

Start-Sleep -s 30

evaluatequeues

}

else{

Write-Host “INFO: Transport queues are empty.” -ForegroundColor Yellow

Write-Host “INFO: Putting the entire server into maintenance mode…” -ForegroundColor Yellow

if(Set-ServerComponentState $Server -Component ServerWideOffline -State Inactive -RequesterMaintenance){

Write-Host “INFO: Done! The components of $Server have successfully been placed into an inactive state!”

}

Write-Host “INFO: Restarting MSExchangeTransport service on server $Server…” -ForegroundColorYellow

#Restarting transport services based on info fromhttp://blogs.technet.com/b/exchange/archive/2013/09/26/server-component-states-in-exchange-2013.aspx

#Restarting the services will cause the transport services to immediately pick up the changed state rather than having to wait for a MA responder to take action

Invoke-Command -ComputerName $Server {Restart-Service MSExchangeTransport | Out-Null}

 

#restart FE Transport Services if server is also CAS

if($discoveredServer.IsFrontendTransportServer -eq $true){

Write-Host “INFO: Restarting the MSExchangeFrontEndTransport Service on server $Server…” -ForegroundColor Yellow

Invoke-Command -ComputerName $Server {Restart-Service MSExchangeFrontEndTransport} | Out-Null

}

Write-Host “INFO: Done! Server $Server is put succesfully into maintenance mode!” -ForegroundColor Green

}

}

下面的连接方便您从SkyDrive上下载到命令的完整代码。

Start-ExchangeServerMaintenanceMode (v1.6)

Stop-ExchangeServerMaintenanceMode (v1.4)

Latest posts by Exchange中文站 (see all)
发布于: 浏览:10342 次

还没有评论

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据