انجام تغییرات اساسی بر روی Exchange Server یا بهروزرسانی آن میتواند منجر به بروز مشکلاتی از جمله خرابی پایگاهداده و قطعی سرویس شود؛ بنابراین توصیه میشود قبل از انجام تغییرات در سرور Exchange، آن را در وضعیت تعمیر و نگهداری (Maintenance Mode) قرار دهید. وضعیت تعمیر و نگهداری معمولاً زمانی به کار میآید که ادمین باید بهروزرسانیهای امنیتی ( SU ها) و یا بهروزرسانیهای تجمعی (CU ها) را نصب کند.
Exchange Maintenance Mode وضعیتی است که در آن تمام خدمات و اجزای Exchange در حالت غیرفعال قرار گرفته و فعالیتهای سرور به طور موقت به حالت تعلیق درمیآید. بهخصوص در محیط DAG شما باید قبل از شروع بهروزرسانی حالت تعمیر و نگهداری را برای سرور موردنظر فعال کرده و تمامی وظایف آن را به سرورهای دیگر محول کنید.
البته بسیاری از ادمینها این روش را دنبال نمیکنند و سرورهای خود را بدون قراردادن در وضعیت تعمیر و نگهداری بروز میکنند. اگرچه گاهی اوقات این بهروزرسانیها با موفقیت انجام میگردند؛ اما همواره با ریسک همراه بوده و به هیچ عنوان توصیه نمیشود.
فعالسازی وضعیت تعمیر و نگهداری از طریق چند دستور PowerShell قابل انجام است که در ادامه مراحل فعالسازی همچنین غیرفعالکردن حالت تعمیر و نگهداری را ذکر خواهیم کرد.
در این سناریو دو سرور Exchange به نامهای Ex01 و Ex02 داریم که هر دو عضو DAG هستند. میخواهیم سرور اول را به حالت تعمیر و نگهداری ببریم. برای این کار باید وظایف سرور اول و دیتابیسهای فعال آن را به سرور دوم انتقال دهیم. حتماً قبل از شروع از دیتابیسهای فعال، کپیها و سروری که آنها را نگهداری میکند اطلاع کامل داشته باشید.
- ابتدا وارد EX01 شوید و Exchange Management Shell را با دسترسی ادمین اجرا کنید و سرویس Hub Transport را روی حالت Draining تنظیم کنید. پس از اجرای این دستور این سرور هیچ پیام جدیدی را نمیپذیرد.
[PS] C:\>Set-ServerComponentState -Identity "EX01" -Component HubTransport -State Draining -Requester Maintenance
- پیامهایی که در صف وجود دارند را به سمت سرور EX02 هدایت کنید. نام سرور مقصد باید بهصورت FQDN وارد شود. دقت کنید که سرور مقصد نباید در حالت تعمیر و نگهداری باشد.
[PS] C:\>Redirect-Message -Server "EX01" -Target "EX02.bsvd.lan"
Confirm
Are you sure you want to perform this action?
Redirecting messages to "EX02.bsvd.lan".
[Y] Yes [A] Yes to All [N] No [L] No to All [?] Help (default is "Y"): Y
- چون سرور ما عضو DAG است، با دستور زیر عضویت آن را از DAG معلق کنید.
[PS] C:\>Suspend-ClusterNode "EX01"
Name ID State
---- -- -----
EX01 1 Paused
- در این مرحله باید مطمئن شویم هیچ پایگاهداده فعالی روی سرور EX01 وجود نداشته باشد.
بهوسیله دستور زیر فعالسازی خودکار کپی پایگاهداده را روی سرور اول غیرفعال کنید. این دستور هرگونه کپی پایگاهداده فعال را به سایر سرورهای عضو DAG انتقال میدهد.
[PS] C:\>Set-MailboxServer "EX01" -DatabaseCopyActivationDisabledAndMoveNow $true
- پالیسی فعالسازی خودکار پایگاهداده در سرور را چک کرده و یادداشت کنید. تا بتوانید بعداً آن را به این مقدار برگردانید. مقدار پیشفرض آن Unrestricted است.
[PS] C:\>Get-MailboxServer "EX01" | Select DatabaseCopyAutoActivationPolicy
DatabaseCopyAutoActivationPolicy
--------------------------------
Unrestricted
- حالا برای جلوگیری از فعالشدن خودکار دیتابیسها مقدار آن را به Blocked تغییر میدهیم.
[PS] C:\>Set-MailboxServer "EX01" -DatabaseCopyAutoActivationPolicy Blocked
- شاید مدتی طول بکشد تا پایگاهدادههای Active جابهجا شوند. با دستور زیر وضعیت کپی پایگاهدادههایی که هنوز روی سرور Mount هستند را بررسی کنید. این دستور نباید هیچ نتیجهای را برگرداند. اگر هنوز روی سرور پایگاهداده فعالی وجود دارد و کپی آن روی دیگر سرورهای DAG قرار دارد، میتوانید از طریق کنسول Admin Center بهصورت دستی Switchover کنید.
[PS] C:\>Get-MailboxDatabaseCopyStatus -Server "EX01" | Where {$_.Status -eq "Mounted"} | ft -AutoSize
هنگامی که پایگاهدادههای فعال منتقل شدند، صف ارسال و دریافت را بررسی میکنیم. صفها باید تقریباً خالی باشند، به دلیل اینکه همه اجزای سرور را غیرفعال خواهیم کرد ایمیلهایی که هنوز در صفها هستند، تا زمانی که سرور از حالت تعمیر و نگهداری خارج نشود، تحویل نخواهند شد.
[PS] C:\>Get-Queue
Identity DeliveryType Status MessageCount Velocity RiskLevel OutboundIPPool NextHopDomain
-------- ------------ ------ ------------ -------- --------- -------------- -------------
EX01\4 SmtpDeliveryToMailbox Ready 0 0 Normal 0 db2
EX01\8 SmtpDeliveryToMailbox Ready 0 0 Normal 0 db4
EX01\15 SmartHostConnectorDelivery Ready 0 0 Normal 0 mx1.spambull.com
EX01\20 SmtpDeliveryToMailbox Ready 0 0 Normal 0 db5
EX01\22 SmartHostConnectorDelivery Ready 0 0 Normal 0 mx2.spambull.com
EX01\Submission Undefined Ready 0 0 Normal 0 Submission
EX01\Shadow\3 ShadowRedundancy Ready 0 0 Normal 0 ex02.basvd.lan
- حالا با دستور زیر سرور EX01 را در حالت تعمیر و نگهداری قرار دهید.
[PS] C:\>Set-ServerComponentState "EX01" -Component ServerWideOffline -State Inactive -Requester Maintenance
- بهوسیله دستور زیر بررسی کنید که آیا Exchange Server EX01 در حالت تعمیر و نگهداری قرار گرفته است. در این حالت همه مؤلفهها به جز Monitoring و RecoveryActionsEnabled باید غیرفعال شده باشند.
[PS] C:\>Get-ServerComponentState "EX01" | Select Component, State
Component State
--------- -----
ServerWideOffline Inactive
HubTransport Inactive
FrontendTransport Inactive
Monitoring Active
RecoveryActionsEnabled Active
AutoDiscoverProxy Inactive
ActiveSyncProxy Inactive
EcpProxy Inactive
EwsProxy Inactive
ImapProxy Inactive
OabProxy Inactive
OwaProxy Inactive
PopProxy Inactive
PushNotificationsProxy Inactive
RpsProxy Inactive
RwsProxy Inactive
RpcProxy Inactive
UMCallRouter Inactive
XropProxy Inactive
HttpProxyAvailabilityGroup Inactive
ForwardSyncDaemon Inactive
ProvisioningRps Inactive
MapiProxy Inactive
EdgeTransport Inactive
HighAvailability Inactive
SharedCache Inactive
MailboxDeliveryProxy Inactive
RoutingUpdates Inactive
RestProxy Inactive
DefaultProxy Inactive
Lsass Inactive
RoutingService Inactive
E4EProxy Inactive
CafeLAMv2 Inactive
LogExportProvider Inactive
- پس از انجام بهروزرسانی، بهوسیله دستورات زیر میتوانید سرور را از وضعیت تعمیر و نگهداری خارج نمایید.
[PS] C:\>Set-ServerComponentState "EX01" -Component ServerWideOffline -State Active -Requester Maintenance
[PS] C:\>Resume-ClusterNode -Name "EX01"
[PS] C:\>Set-MailboxServer "EX01" -DatabaseCopyAutoActivationPolicy Unrestricted
[PS] C:\>Set-MailboxServer "EX01" -DatabaseCopyActivationDisabledAndMoveNow $false
[PS] C:\>Set-ServerComponentState "EX01" -Component HubTransport -State Active -Requester Maintenance
- در پایان حتماً از وضعیت سلامت و صحت کارکرد سرور اطمینان حاصل کنید.