XenServer Native HA with CloudStack

前言

能力有限,翻譯如果有錯誤,希望大家多多指正。共同學習交流。

關於作者

Geoff Higginbottom是雲計算戰略諮詢公司ShapeBlue公司的CTO和雲架構師。 Geoff花費了很多時間,爲telco's、ISP's以及企業設計基於CloudStack的私有&公有云基礎設施。


原文鏈接:

http://shapeblue.com/cloudstack/xenserver-native-ha-with-cloudstack/



警告: 如果你已經在基礎設施是XenServer 6.2的環境中安裝了補丁 XS62ESP1004 且還未啓用Pool的HA功能, 那麼一旦Pool的Master節點宕機,Slave節點不但不會接管成爲Pool的Master角色,並且在XenCenter中將丟失和服務器的連接。所有的主機將在CloudStack中顯示爲Alert狀態,所以這將降低你的CloudStack雲的功能性。該篇文章將會涉及到如果正確的配置池的HA以及如何管理啓用HA功能的XenServer。

簡介

傳統上當使用 Citrix XenServer和Apache CloudStack / Citrix CloudPlatform (在本文的其他內容中統稱爲CloudStack)時, 雖然CloudStack會處理所有的HA事件,但XenServer HA 特性並不會被啓用 。 而發佈的XS62ESP1004做了些改變。

XS62ESP1004的發佈,XenServer在丟失Master以後處理方式改變了,而不用再手動推選Slave成爲Master。XenServer Pool現在擁有了“自愈”功能,可以進行自我修復,這是一個好消息,但是你需要做一些額外的配置,才能看到這個神奇的事情發生。

最重要的是要明白CloudStack仍然控制所有VM的HA事件,所以我們不能把VM的控制權交給XenServer。事實上我們在做的所有事情只是啓用‘Pool Master HA’, 以便在Pool的Master發生故障時,一個新的Master會被推選。

配置Pool HA

第一步是確保Pool中所有的主機都已經安裝了 XS62ESP1004 補丁。如果部署新的XenServer服務器供CloudStack使用,那麼最佳實踐是首先安裝好適當的補丁,然後再將主機添加到CloudStack中。

一旦池中所有的主機網絡及綁定等配置完畢以後,你需要爲Pool Master HA機制創建一個專屬的存儲倉庫, 通常我將這個作爲Pool HA管理要素的存儲命名爲“MGMT-HA”。可以掛載使用NFS或iSCSI並且只需要1GB空間足矣。 重要的是該存儲只是用來做HA,而無需作爲主存儲添加到CloudStack中。

待SR配置完畢並上線後, 下一步便是啓用HA。你可以通過XenCetner UI  來啓用HA, 然而有個風險,你可能在無意中啓用了VM HA,這將導致一些不必要的問題發生。另外你可以能需要定期關閉並重新啓用HA,所以當需要時,使用一個統一的腳本啓用/重新啓用 HA是一個很好的選擇。 

將下面這個腳本保存至XenServer主機中 (可以在任意主機中運行該腳本,不僅限於Pool Master)注意該腳本引用的SR名稱爲“MGMT-HA”,如果你的命名規則不同,切記要更換匹配爲你的SR名稱。

#!/bin/bash
MGMTHAUUID=`xe sr-list name-label=MGMT-HA --minimal`
xe pool-ha-enable heartbeat-sr-uuids=$MGMTHAUUID
echo "Pool HA is now enabled"

 

現在運行腳本並等待確認消息“Pool HA is now enabled”可能需要幾分鐘,請耐心等待。

查看下XenCenter中的配置,HA並未啓用,這情有可原;事實上HA已經啓用, 但只針對Pool Master,並非仍然受CloudStack保護的VMs。

wKioL1S6KEbijZ6rAAG6_clQnAs549.jpg


不幸的是,XenServer Pool啓用Pool HA會帶來一些額外的併發症,所以請繼續閱讀下文,學習如何處理故障和如何執行重啓計劃等。

主機故障的自動處理

如果Pool Master主機宕機,Slave會接管成爲Master並且宕機的Pool Master上面運行的所有虛擬機將自動在備用主機中重新啓動, 但需要在虛擬機的計算方案中啓用“Offer HA”特性。

CloudStack仍然會處理虛擬機的重新啓動,在新的Pool Master已經接管且失控時間超過全局參數設置的‘alert.wait’後將開始重新啓動  下述系統測試中,將 alert.wait 的值設置爲 60 秒。 默認值爲‘空’,一旦CloudStack檢測到主機宕機,這將導致30分鐘的延遲

以下時間演示在生產系統中進行故障測試。Apache CloudStack版本爲4.3.2,物理主機爲思科UCS,運行XenServer 6.2,並安裝所有可用補丁(更新至XS62ESP1014)。 使用SolidFire存儲,由Cisco設備提供10G網絡。運行10臺Windows 2008 R2 虛擬機,以及部分系統虛擬機。 兩個羣集同時測試,且每個羣集有4臺主機。所有的虛擬機均運行在Pool Master主機上,用於模擬可造成最大影響的故障。測試開始時進行秒級別的計時:

Start – 通過CIMC切斷Pool Master主機電源模擬故障

01:15 – XenCenter檢測到主機故障且失去連接

03:00 – XenCenter重新連接到新的Pool Masters

03:15 – CloudStack確認主機故障

03:30 – CloudStack在主機宕機時間超過配置的60秒(通過 alert.wait 參數調整)以後,啓動VM的HA

05:30 – 所有的包括10個Windows虛擬機和系統虛擬機在 CloudStack 顯示爲‘Running’狀態

總結,在兩個集羣的XenServer Pool Master都故障,這個糟糕的情況下,經過5分鐘30秒,10個Windows 虛擬機,4個虛擬路由器和3個系統虛擬機重新上線,管理員沒有做任何干預。

從主機故障中恢復

如果“故障”的Pool Master被加電後重新恢復運行  ,此時也無法通過XenCenter進行訪問。

爲了使它恢復正常並且可以通過XenCenter進行訪問時,你需要禁用Pool HA和主機HA, 此時它還認爲它是Pool Master,並會進入‘Emergency Mode’。首先使用XenCenter關閉Pool的HA,然後再恢復的主機中運行如下命令:

xe host-emergency-ha-disable --force

經過短暫的延遲後主機將作爲Slave重新連接到Pool中,然後在CloudStack重新上線。

如果一臺Slave主機宕機, 恢復開機後, 在自動連接到Pool之前,,需要先關閉Pool HA, 但無需強制禁用該主機的HA。因爲它無需進入 Emergency Mode,當主機啓動完成後將會與Pool Master取得聯繫。

一旦失敗的主機重新上線,啓用HA的主機通過重新運行腳本從而使Pool HA功能被再次啓用。

啓用Pool HA時管理主機

偶爾你需要重啓或關閉啓用了HA功能的Pool中的某臺XenServer主機,且該主機屬於CloudStack羣集中的一部分。那麼以下部分列出正確的操作步驟:

執行Slave主機重啓操作:

1. 在CloudStack中將其置爲維護模式
2. 禁用Pool HA功能
3. 在XenCenter中將其置爲維護模式
4. 重啓主機
5.  一旦主機完全啓動並在XenCenter中顯示爲在線狀態時重新啓用Pool HA
6. 在 XenCenter 中退出維護模式
7. 在 CloudStack 中退出維護模式

執行Master主機重啓操作:

1. 在CloudStack中將其置爲維護模式
2. 禁用Pool HA
3. 在XenCenter中將其置爲維護模式,強制提升Slave成爲Master
4. 重啓主機
5. 一旦主機完全啓動並在XenCenter中顯示爲在線狀態時重新啓用Pool HA
6. 在 XenCenter 中退出維護模式
7. 在 CloudStack 中退出維護模式

需要關閉一臺主機較長時間: (Master主機應被降級爲Slave)

1. 在CloudStack中將其置爲維護模式
2. 在XenCenter中將其置爲維護模式
4. 關閉主機電源

當想讓主機重新上線時:

a. 禁用Pool HA
b. 打開主機電源,一旦主機完全啓動並在XenCenter中顯示爲在線狀態時重新啓用Pool HA功能
c. 在 XenCenter 中退出維護模式
d. 在 CloudStack 中退出維護模式

概要

在安裝完補丁XS62ESP1004以後,你必須在你的XenServer Pool啓用HA功能,該結果將會採用不同的方法管理XenServer資源




發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章