讓 SharePoint 2010 拓撲服務達到負載平衡的補充資訊
讓 SharePoint 2010 拓撲服務達到負載平衡的補充資訊
本文主要是對 JoshGav 在「非觀點」( Beside the Point) 部落格上這篇精彩文章的補充︰ https://blogs.msdn.com/b/besidethepoint/archive/2010/12/08/load-balancing-the-sharepoint-2010-topology-service.aspx (可能為英文網頁)。 Josh 以其敏銳的觀察力指出,雖然拓撲服務負責將要求分散到不同服務應用程式端點以達到負載平衡,然而,當將服務應用程式發佈到其他伺服器陣列時,還是需要藉助其他功能才能讓拓撲服務本身達到負載平衡。 譬如,連線到其他服務應用程式時,通常是透過類似以下的 URL︰ https://serverNetBiosName:32844/Topology/topology.svc。 這種方式的問題當然就在於,萬一 “serverNetBiosName” 發生停止運作狀況,您的 Proxy 便無法連線取得所需服務端點的 URL。
所以,第一步最重要的事,請到 Josh 部落格上詳讀有關此主題的文章! 我在這裡所補充的只是一些關於我在進行設定時所遇到的額外注意事項。 根據 Josh 在文章中所述,我採用第一種方法,也就是以多個主體別名 (SAN) 建立新的 SSL 憑證,並將其關連到伺服器陣列中的每部伺服器。 以下就是我補充的注意事項︰
1. 建立可支援 SAN 的全新 SSL 憑證︰ 您需為 SSL 在每部伺服器上建立新憑證。 新憑證應支援三種名稱︰ localhost、伺服器的 NetBIOS 名稱及您要使用的負載平衡名稱。 根據 SharePoint 的現成行為方式,它會包含 localhost 及 NetBIOS 名稱,因此,只要按照原來的作法,再新增其他平衡負載名稱即可。
a. 若您在實驗室測試憑證是否可行,並採用 Active Directory 憑證服務發出憑證,您可以將名稱設定成支援 SAN 命名方式。 在執行憑證服務的伺服器上,從命令提示字元執行下列動作︰
certutil –setreg policy\EditFlags +EDITF_ATTRIBUTESUBJECTALTNAME2
net stop certsvc
net start certsvc
執行第一行命令後,所得到的回饋是表示憑證設定是否可行。
b. 啟動 MMC,並新增 [憑證範本] 嵌入式管理單元 (您需在執行 Active Directory 憑證服務的伺服器上執行這個動作)。 按一下展開 [憑證範本] 節點以顯示所有範本。 向下捲動到底,連按兩下 [網頁伺服器] 範本。 按一下 [安全性] 索引標籤;針對 [Authenticated Users],您應勾選 [允許] 欄中 [註冊] 旁的方塊,然後儲存變更。 完成此動作後,您才能按照以下步驟的指示執行。
c. 請參閱下列文章中的逐步指示,對可提供 SAN 支援的 AD 憑證服務提出憑證要求。 https://technet.microsoft.com/zh-tw/library/ff625722(WS.10).aspx (可能為英文網頁)。 請注意,您必須在伺服器陣列中「每一部」執行 Web 應用程式服務的伺服器上執行此動作。
2. 變更 SharePoint Services Web 應用程式的 SSL 憑證︰ 我用的是 PowerShell 的一個簡單 PowerShell 指令碼,這其實是 Josh 在他部落格文章上提供的。 我把這個指令碼的 zip 檔附在這篇文章最後。 請注意,您必須變更憑證指紋,並在伺服器陣列中每一部執行 Web 應用程式服務的伺服器上執行此憑證。 為了讓提取憑證指紋變得更簡易,我寫了一個小工具稱為 GetThumbprints,也同樣附在本篇文章最後。 這個工具會查尋 [本機電腦] 憑證存放區中的 [我的] 及 [SharePoint] 存放區中。 若要使用此工具,請務必確認您在上面步驟 1 中所建立的憑證是位於這些存放區之一中。
3. 為負載平衡名稱在所有伺服器上設定虛擬 IP︰ 任何負載平衡服務都需有個可跨集區內所有機器共用的虛擬 IP。 您可以使用現有虛擬 IP,或建立新的虛擬 IP,這需視您的負載平衡解決方案而定。 請查看您的負載平衡解決方案,了解哪種方式適合您,若有需要,請部署新的虛擬 IP。 以我的情況來說,我原本就有使用 Windows Server 的「網路負載平衡」元件,對伺服器陣列內容的要求進行平衡負載處理,所以我只要用原本的虛擬 IP 來處理拓撲服務平衡負載。 這表示,在我的環境中,只有我的網頁前端伺服器會收到對已發佈服務應用程式的要求。
4. 為負載平衡名稱設定負載平衡器及 DNS︰ 若您處於多伺服器的伺服器陣列環境,應該就已具備某種負載平衡解決方案。 請在負載平衡器中設定拓撲服務的負載平衡名稱。 因為我原本就有使用負載平衡元件,所以我只要為我的負載平衡拓撲服務名稱在 DNS 中建立一筆新的「Alias (A)」記錄即可;至於位址,則是使用對伺服器陣列所收到之 Web 要求進行負載平衡處理的虛擬 IP。
5. 設定 SharePoint 拓撲服務的負載平衡 URL︰ 最理想的作法是執行以下程序中的兩個步驟︰
a. 首先在 PowerShell 中執行 Get-SPTopologyServiceApplication,取得拓撲服務資訊。 結果會顯示此服務的識別碼及目前的負載平衡 URL。
b. 執行 Set-SPTopologyServiceApplication -LoadBalancerUrl <負載平衡名稱> 命令,確認是否按照 Josh 文章中對此動作的提點設定。 PowerShell 會再要求您提供拓撲服務的身分識別。 此時,便可將上個步驟執行 Get-SPTopologyServiceApplication 所得到的識別碼複製至此處。
6. 發佈服務應用程式︰ 這個步驟並沒有重要注意事項要補充。 我想最重要的是要確認您是否已遵照<跨伺服器陣列共用服務應用程式>中所述的所有步驟執行;這篇文章位於︰ https://technet.microsoft.com/zh-tw/library/ff621100.aspx (可能為英文網頁)。 即使您之前已在伺服器陣列之間發佈並使用過服務應用程式,還是要確認您是否已對遠端伺服器授與至少是已發佈服務應用程式的「完全控制」權限,否則就會出現拒絕存取的錯誤訊息。
7. 使用已發佈的服務應用程式︰ 除了要注意上述所提醒的事項之外,並沒有其他補充事項;請務必明確遵照上述所提文章中的步驟。
這些注意事項應足以幫助您順利完成。 建議您先從較容易驗證的情況開始著手,像是發佈及使用 Search Service 應用程式。 如此,要執行一個您知道應該會傳回特定文件的查詢,可就容易的多,接著再於訂閱者伺服器陣列執行相同動作。
再次感謝 Josh 提供了如此實用的文章,希望本文能補足部分細節。
這是翻譯後的部落格文章。英文原文請參閱 Additional Info on Load Balancing the SharePoint 2010 Topology Service