把負載平衡器加入到Exchange Server 2010環境時的經驗分享

把負載平衡器加入到Exchange Server 2010環境時的經驗分享

介紹

 

近來入手一台Barracuda的ADC負載平衡器, 我嘗試把這幾天的配置到Exchange 2010的經驗整合起來.

而Exchange 2013由於構造稍有不同, 主要是Hub Transport整合到CAS上

所以某些地方會有不能直接套用的問題. 閱讀時要特別注意.

如果你正要配置負載平衡器, 我會假設你的Exchange環境已經做好DAG, CAS array等預備東西

這裡就只專注於有關使用負載平衡器的部份了, 而無論你要使用那一個廠牌的平衡器

Exchange和Load Balancer的設定和理論部份應該大同小異. 只是登入程序可能會有些區別.

這篇文章只把過程經驗和理論記載, 在負載平衡器的設定細項上盡可能精簡, 令泛用性高一點.

而且雖然文章中由些地方以Barracuda的產品作為示範, 但我盡可能不會寫出它的專屬設定, 因為這不是一篇廣告.

 

文章分為以下部份

1. 環境分析和前置作業

2. 設定Exchange CAS使用固定連接埠

3. 匯出Exchange Server的SSL憑證

4. 設定Exchange SSL Offloading

5. 設定Exchange服務的分流原則

6. 測試服務

 

環境分析和前置作業

 

我的配置環境裡, 負載平衡器位於防火牆的後方而且跟Exchange Server 陣列同處一個網絡

所以是1-Armed的配置模式

 

image

 

負載平衡器現在已經有實體或虛擬機器版本, 大部份實體平衡器都會最少擁有2個連接埠,

虛擬機器版本雖然沒有看得到的連接埠, 但實際操作起來也分為以下部份

例如這台負載平衡器可以找到3個網絡接頭,

image

前方兩個是1 Gbps的, 負責接入分流負載的封包, 需要配置服務才能使用

服務會指定一個Virtual IP (VIP)套用到這些連接埠上

 

後方一個是10/100 Mbps的接頭, 是負責Device Management, 或這說這是網頁館理版面的登入IP接頭

在第一次電源啟動前, 可以先不用接駁網絡

把屏幕, 鍵盤先接上平衡器, 就可以做網絡設定作業.

設定好後就可以把它轉到投產環境, 把Management Port / 前方的P1 / P2埠接上網線

啟動電源後就可以在電腦上的瀏覽器登入

 

建議在登入後先進行所有Firmware的更新動作, 再重啟機器才開始正式設定.

image

-----------------------------------------------------------------------------------

設定Exchange CAS使用固定連接埠

在我們等待平衡器更新到最佳狀態的時候, 我們先跑到Exchange上做些設定

Exchange預設會以浮動的連接埠來迎接Outlook 客戶端的請求, 而如果我們要做到負載平衡

在負載平衡器上我們要標明服務器的連接埠號碼是甚麼

所以我們先要讓Exchange在每次重新啟動後都使用同一個連接埠.

在每一台CAS上開啟regedit.exe, 找尋以下路徑修改RPC連線連接埠

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\MSExchangeRPC

在ParametersSystem裡增加一個新的機碼TCP/IP Port, 數值以十進位輸入

可以選用任何未使用的連接埠, 每個品牌推薦的不一樣

而微軟建議的範圍是59531 到 60554之間

image

 

另一個要新增的機碼是位於

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\MSExchangeAB\Parameters

新增RcpTcpPort (注意跟上面的不同!), 以十進位把數值加入, 如下圖

image

每一台CAS在修改後都把Microsoft Exchange Address Book和Microsoft Exchange RPC Client Access服務重新啟動一次

image

做好後以Netstat –na 指令檢查服務器有沒有把兩個連接埠用上而且在Listening狀態

image

-----------------------------------------------------------------------------------------

匯出Exchange Server的SSL憑證

 

我們亦要在Exchange Server上做有關SSL Offloading的動作

SSL Offloading是為了2個目的

1. 減低Exchange CAS服務電腦解密封包的負擔

2. 負載平衡器能夠解密封包, 才能令它分析封包資料從而做到正確分流

 

image

而要令負載平衡器能夠像Exchange Server一樣能夠把封包解拆出來

我們就要先把正在Exchange Server上使用的加密證書匯出

如果你的Exchange有多於一張SSL證書, 建議先鍵入Powershell cmdlet

Get-ExchangeCertificate | FL

先檢查那一張是正在使用的證書, 把Thumbprint碼記下來, 避免匯出錯誤的證書.

匯出證書的步驟你可以參考微軟的KB文章:

https://technet.microsoft.com/en-us/library/dd351274.aspx

而我更推薦使用由DigiCert這個憑證公司所提供的免費軟體DigiCertUtil來做這個步驟

https://www.digicert.com/util/pfx-certificate-management-utility-import-export-instructions.htm

把DigiCertUtil下載到你其中一台CAS服務器, 根據上面網頁的步驟就可以輕易的把憑證匯出

匯出的文件是一個 .pfx 檔案, 只要連同設定好的密碼, 就可以在平衡器上匯入證書.

image

在憑證上傳部份命名憑證, 指出匯出檔案位置就可以匯入到負載平衡器上

image

----------------------------------------------------------------------------------------------------------------------------------------

設定Exchange SSL Offloading

 

再來我們要為每一台CAS服務器設定SSL Offloading,

而要設定的服務分別是OWA, ECP, Outlook Anywhere,

Offline Address Book, ActiveSync, Exchange Web Service, AutoDiscover

其實每一個服務的設定大同小異, 只有OWA和Outlook Anywhere會多一個步驟

 

打開Internet Information Serviecs (IIS) Manager,

在Default Web Site下, 每一個服務下都有SSL Settings

image

在裡面把Require SSL反選, 再套用設定就可以了

你可以隨時做這一步, 而不會影響到投產環境的運作.

而由於我們由7個服務要做SSL Offloading, 所以這個步驟基本上要重覆做7次.

image

再來我們要為OWA的SSLoffloading多做一個步驟, 我們打開regedit.exe

找尋以下的機碼:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\MSExchange OWA

再裡面新增一個DWORD機碼, 而且把數值以10進位的方式改成1, 如下圖

另外到每一台CAS上的

C:\Program Files\Microsoft\Exchange Server\V14\ClientAccess\Owa

以Notepad開啟web.config檔案, 找出requireSSL, 如果你建到requireSSL=”true”, 請把它改成requireSSL=”false”

我就在這個地方纏繞了很久, 因為KB上並沒有提到這個步驟

如果這邊沒有改, 登入OWA時會出現登入迴圈的問題, 不斷要求重新登入.

image

 

再來我們要到Exchange Management Console, 打開Server Configuration

在每一台CAS 服務器上啟用Outlook Anywhere, 或進入Outlook Anywhere的設定頁

把Allow secure channel (SSL) offloading 勾選起來

image

 

--------------------------------------------------------------------------------------------------------------------------

設定Exchange服務的分流原則

 

Exchange Server已經準備好了, 接下來要到負傷平衡器設定Exchange服務的分流原則

理論上, 我們把Exchange的服務的連線分為兩種類型,

第一類連線是需要保持連線一段時間的, 而且需要把連線保持連線到其中一台CAS

第二類連線是只需要把連線接駁到其中一台最適當的CAS即可

 

第二類的連線很單純, 例如Auto Discovery, 當你要設定手機或是Outlook郵箱時會使用到

又例如我們寄送信件時的SMTP連線

服務特色就是一問一答然後完成任務, 所以我們並不需要顧慮它連到那裡, 也不需要保持連線很久.

 

第一類是更常見的連線, 例如Outlook的Mapi, Outlook Web Access,

我們需要為它們保持連線直到使用者登出. 或者發呆時間超出系統設定為止,

而且我們會想把使用者長期保持連線到同一台機器, 如果不這樣做, 可能會發生以下情況

1. 使用者A連線到負載平衡器上已設定的Exchnage Virtual IP(VIP) 要求使用Exchange OWA服務

2. 負載平衡器把連線接駁到CAS1

3. CAS1提供登入頁面

4. 使用者A向CAS1使用帳號密碼登入

5. CAS1提供OWA郵箱服務

6. 過了幾分鐘, 使用者A再次檢查郵件, 網頁按鍵向負載平衡器的Exchnage Virtual IP(VIP) 發出要求

7. 負載平衡器把要求送到CAS2

8. CAS2查看已驗證的帳號中並沒有使用者A的資料, 拒絕連線

9. 使用者看到拒絕連線的錯誤

 

要避免做成這樣的問題, 負載平衡器就要依服務類型把連線記載下來

如果使用者A是已連線到CAS1的, 就在某段時間內繼續把封包轉送到CAS1

 

那負載平衡器要怎樣把使用者A分辨出來呢?

最簡單的方式莫過於使用封包的來源IP來決定

image

假設環境如上圖, 客戶端從DNS上知道要連線到Exchange的服務要先連接到mail.justinlab.com

而mail.justinlab.com現在指向10.0.0.1, 亦即Exchange 2010服務的Virtual IP

負載平衡器接到封包, 把封包的來源IP看一看, 視情況分配到最合適的CAS上, 把連線記錄下來

在往後的一段時間, 就可以把來自10.0.0.50和10.0.0.60的封包轉送到已紀錄的固定CAS上

但使用來源IP有個問題, 想像環境變到以下的樣子

image

如果客戶端跟CAS處於不同的Subnet, 中間以一個路由器分隔起來

而從10.0.0.0/8的封包會被NAT成10.0.0254這個地址丟到負載平衡器

假如我們的負載平衡器以來源IP來做保持連線的依據, 就會出現問題了

 

有這個問題, 那麼還有甚麼標識的方式呢? 原來當我們建立好連線後,

封包就會擁有當前session的session ID, 包含在封包的Cookie上

而要看到封包內的Cookie內容, 就必須先把封包解密, 所以我們之前就需要把SSL憑證上傳到負載平衡器.

如果你能截取到封包的內容, 或者是查看負載平衡器的交易紀錄

你會發現正常的OWA封包會有類似這些內容物 (BNI是Barracuda的插入值):

Cookie BNI_sessionid=000000000000000000000000fb05a8c00000bb01; MstrPgLd1=1; MstrPgLd2=1;
OutlookSession=09133dc35b1e46fbbbea1ddd24b1b7
而這些獨有的數值就是用來決定保持連線的依據

 

而每一種連線究竟我們應該使用那一種保持連線的依據, 微軟有篇文章詳細講解

而每個品牌也應該也它們自家的配置文件

例如我是次的配置中, Barracude就有詳細說明每一個服務的配置細項

而另一個微軟認可的品牌: KEMP也有提供Exchange 2010專屬的說明文件

 

由於過程畫面在每一個品牌都不同, 而且避免有賣廣告的感覺, 所以這段就從缺了.

----------------------------------------------------------------------------------------------------------------------------------

測試服務

在完成設定後, 我們可以先不用碰投產環境的DNS

在自己的電腦上一個叫hosts的檔案, 位於 C:\Windows\System32\drivers\etc

開啟時要以系統館理員身份開啟Notepad

只要在裡面以這種方式增加行數在文件最下方

10.0.0.1 mail.justinlab.com

以後電腦在需要解析mail.justinlab.com 時就會直接得到10.0.0.1而不詢問DNS服務器

同樣地你可以增加例如casarray.xxxx.com, autodiscover.xxxx.com等記錄

這樣你就可以在不影響投產環境的情況下自行測試.

 

個人建議可以做以下的東西來測試所有服務

1. 開啟Outlook, 重新建立一個郵箱, 測試Auto Discover有沒有正常套用郵箱資料到Outlook,

    建議使用Exchange Online模式而不使用Exchange Cached Mode令測試更準確

2. 繼續使用Outlook, 開啟新郵件, 查看Global Address Book有沒有顯示正常

3. 寄送信件有沒有正確寄出

4. 開啟瀏覽器, 登入到OWA及ECP, 使用一段時間看看有沒有問題,

    要使用一段時間是因為要測試連線有沒有準確保持到同一台CAS

5. 以Windows 8或以上的MAIL APP測試ActiveSync連線是否正常,

    假如沒有Windows 8的郵件App, 只能在投產後以手機測試了.

 

在非辦公時間可以嘗試:

6. 到負載平衡器把其中一台機器暫時停止連接, 看看連線能不能繼續運作

7. 重複步驟6到其他機器上

8. 直接關閉CAS模擬機器發生故障

9. 在完成所有測試後修改DNS紀錄, 把Exchange相關的紀錄指向VIP就完成配置

----------------------------------------------------------------------------------------------------------------------------------------

這篇整合了我的負載平衡器配置經驗, 希望讓要配置的朋友有個大概了解

假如你有設定平衡器時的困難, 我很樂意用知識去幫助, 如果發現文章中有問題的地方, 請不吝惜指點, 謝謝!

Technorati 的標籤:,,,