介紹
前虛擬化技術的現況有 提到過一些虛擬化技術對個人以及軟體工程師的幫助。大概在2008年初的時候,虛擬化技術因為CPU的支援,而開始了另一波的高峰。而因為全球經濟風暴, 所有企業也在積極尋求節能減碳的方法。對於企業的資訊資源來說,浪費CPU或者是硬碟空間,無非就是浪費電力。有虛擬化技術的幫助,能夠在一個實體機器上 執行多個虛擬機器,以不互相干擾,又能夠互借多餘的CPU時間,記憶體或硬碟空間的方式,讓實體機器的使用度大增。
本篇文章要從建置不中斷的系統服務,以及系統管理者的角度為各位介紹,VMWare究竟是怎樣利用虛擬化來幫助管理者建置高可用(High Availability,HA)的虛擬化叢集。
虛擬化技術名詞解釋
在此先介紹一些共同的名詞及觀念。
Virtual Machine(VM):虛擬機器
一個虛擬機器要能夠完全地模擬一台實體機器的韌體,硬體結構。也就是說,對於所有的作業系統(軟體),安裝在實體機器及虛擬機器,要是一模一樣的。虛擬化技術可分成全虛擬化,半虛擬化,而全虛擬化則可以透過CPU的虛擬化支援來加速。
近年來Intel-VT及AMD-V這兩個在CPU裡增加的虛擬化支援,也促使許多虛擬化軟體廠商都開始採用,不僅增加了效能,也增加了對許多 GuestOS的相容性。但對於虛擬化效能最大的幫助,莫過於核心的數量與記憶體的多寡。Intel後期的四核心CPU,以及未來的八核心CPU,讓許多 大廠的伺服器都能夠強打支援虛擬化的銷售策略。而另一個就是像虛擬硬碟(Virtual Disk)的備份方案,也有越來越多軟硬體廠商支援。
Guest OS:VM所使用的作業系統
通 常並不是所有的作業系統都可以支援虛擬化,而對於大部分的管理者來說,Windows 2003 R2及Redhat Enterprise 5這兩套就足以讓企業有穩定的Windows及Linux環境可供使用。但對於開放原碼的OS或是其他沒在相容列表裡的,就無法保證會發生啥事。儘管在實 際情況中,Windows XP以及大多數Linux的版本(如Fedora或CentOS)都可以使用,但對管理者來說有官方承諾的相容度總是比較放心的。
對於企業來說,GuestOS牽扯到部署,備份,還原等問題。虛擬機器要可以轉換成「樣版」來幫助進行部署,而且部署還要快速。此外虛擬機器的硬碟檔當然要能夠線上備份及還原,畢竟有些服務是不允許中斷的。
Virtualization Cluster:虛擬化叢集
對 企業而言一台機器是無法做事情的,而很多關鍵性的服務,不允許關機的機器,更是為許多管理員們所負擔的沈重壓力。因此企業在規劃許多不停機服務的時候,都 會採取備援(Fail-over)或者是高可用度(High Availability, HA)的解決方案。有了虛擬化技術之後,HA變得輕鬆許多,當某個虛擬機器出了問題,只要將他的狀態存起來,然後轉移到能夠執行他的實體機器上就可以了。 就算是實體機器忽然斷電了,只要有一個以上的實體機器還存活,網路設備不斷電,就還有機會可以即時轉移(Migrate)。因此我們將這樣的作法稱做是虛 擬化叢集,意思是說用許多相同的伺服器串連在一起,進行互相備援或是即時支援的協同作業。
Motion Technology:VM動態轉移
上 述的轉移技術,必須要有幾個條件才能運作,一是所有機器必須都使用Storage Area Network(SAN)的架構來掛載共用的儲存。現在SAN的架構,比較常見的就是Fiber或是iSCSI。預算不夠買儲存硬體的話,使用較便宜的 PC伺服器也可以透過軟體的方式來建構iSCSI的儲存網路。二是所有的實體機器都要在同一個網段,而如果所使用的網段較多的話,也要能夠確保所有的實體 機器都能夠要用多張網路卡去連接。
Storage Area Network (SAN):儲域網路
SAN代表的是 如同LAN(區域網路)的意義,只是功能是用來連接儲存媒體與伺服器。在SAN架構之下的設備通常有iSCSI或是Fiber的NAS儲存裝置,交換機, 區塊裝置卡(HBA)等。這個名詞大家常會與NAS(Network Attached Storage)搞混,NAS代表的是硬碟式的儲存媒體,能夠利用檔案層級(File-Level)的方式,如NFS,CIFS的網路檔案系統讓其他主機 掛載。然而現在有些NAS設備也包含了可以使用區塊層級(Block-Level)來連接的iSCSI或是Fiber連接介面,在效能上更是加倍。至於交 換機的部分,也是視使用的連接介面而定,可以使用Gigabit Ethernet Switch或是Fiber Switch。最後也是根據介面的不同,可以選擇iSCSI HBA或是Fiber HBA,來連接到主機上。
iSCSI Protocol
以 往為了追求高效能的中央控管儲存,使用Fiber(光纖)或是更高檔的Infiniband來連接SCSI設備已經是非常常見的事。但是這些設備造價高 昂,並不是一般的學校單位或中小企業負擔得起。也因此就出現了能夠透過一般的以太網路(Ethernet)來連接的iSCSI及AoE(ATA Over Ethernet),這些都是將區塊層級(Block-Level)利用網路來存取或共享。而iSCSI對於共享式的儲存也有些限制,必須確定所使用的服 務程式(iSCSI Target Service)能夠支援叢集式的存取。因為不管是哪一家的VM Server,要能更使用VM動態轉移,一定必須使用一個儲存裝置的空間,然後透過iSCSI或是Fiber,加上叢集式存取的機制,讓多台的VM Server去掛載才行。
企業虛擬化方案
在本文章中,是著重在企業化的虛擬機器管理,而考量這些虛擬機器會有 Windows及Linux的GuestOS共存。而綜觀商場上現有的虛擬機器軟體,方案較完整的只有VMWare ESX 3.5及Citrix XenServer 5。至於其他的虛擬機器軟體如Virtual Box或微軟的Virtual Server,由於支援度或功能太過特定,則不在考慮內。
VMWare ESX 3.5
自從EMC買下VMWare 後,許多與高階軟硬體的整合能力就大幅提昇。記得早期還在GSX Server或Workstation時代的時候,也是有很多如同XenServer現在的情況一樣,還在操作介面上或是設定的彈性上有所欠缺。 VMWare經常對產品名稱做改變,而發展出來許多主線副線的產品,其名稱的演進造成的混亂,讓許多在評估產品的管理員們可是大感吃不消。然而自從進入了 3.0的InfraStructure時代,帶給管理員們的是功能更完整,操作性,整合度更高的虛擬系統。現在VMWare的主力產品就是VMWare InfraStructure,分做三大軟體:
- ESX Server 以Linux 2.4為核心,直接以光碟安裝完後,就是一個Linux Server,並且包含以下選項:
- VMFS是作為儲存虛擬硬碟檔案所必須的檔案系統,所有要用來儲存的區塊裝置(無論是本機的硬碟或是iSCSI網路硬碟)都必須使用VMFS來格式化,才能掛載到ESX Server上儲存。
- Virtual SMP是讓虛擬機器能夠選擇以幾個CPU來執行。
- VirtualCenter(VC) 並不是「用戶端程式」,而是為了要串連ESX Server並且啟用HA,Motion功能的「中介軟體」。一旦啟用了,就算VC關閉了也不會影響HA的運作。但連線到VC來進行管裡的時候,可以看見 實體與虛擬機器的全景,是更為合理的管理方式。VC包含了幾個軟體選項:
- VMWare VMotion是能夠將虛擬機器動態地在實體機器間轉移的技術
- VMWare HA利用了vmotion技術,能夠在虛擬機器失效,或是實體機器發生錯誤時,即時地轉移至還存活的實體機器上繼續執行。
- VMWare DRS將vmotion及ha技術融合在一起,根據實體機器的CPU或記憶體資源負載,動態地轉移虛擬機器至較無負載的實體機器上。
- Virtual InfraStructure Client(VIC) 就是能夠直接對ESX及VC進行連線的用戶端軟體,在官方網站也可以免費下載使用。
- 介面觀感
對於一個能夠進行集合管裡的軟體來說,利用樹狀結構來建立自己的根節點,並且加入主機,這是相當基本的。而右邊的分頁,也會根據目前點到的管理單位(叢 集,實體主機,虛擬主機...等)而有所改變。例如管理某台主機的儲存裝置時,可以發現列出的項目都可以按右鍵,並且可以瀏覽裡面的內容。有時後到底哪個 項目可以右鍵,哪個項目不行,會有點讓使用者感到混淆。而如上圖在最右邊有時後會出現「Property...」表示點選了後會出現新視窗來設定,而有的 功能分頁會有,有的沒有。但通常這些彈出式視窗都是關係到非常重要的設定,如新增網路卡,新增儲存裝置等,管理員們得好好閱讀管理手冊來瞭解每一件工作倒 底要從哪裡點選。而大致上VIC都照著管理員的習慣而設計,這一點能夠感受到VMWare的長期努力,值得讚賞。尤其是Map分頁,直接畫出了目前實體機 器,虛擬機器,網路,儲存的架構圖,這是管理員們都想要的重要功能。 - 效能
由於VMWare是以自家獨特的全虛擬化技術(Binary Translation)做為基底,早期的VMWare我一直覺得都是非常地慢而不願意使用。然而在3版的時候加入了VMI(Virtual Machine Interface)的半虛擬化支援,使得如Linux核心版本大於2.6.21的Fedora8,能夠讓OS知道自己正在虛擬機器上執行,進而達成最佳 化效能。此外Windows 2008也預計加入VMI的支援。但如果沒有VMI的支援,一旦CPU或是IO的負載量大的時候,常常會出現效能不平衡的狀態,有些機器會變得非常慢,這 個時候就只能請管理員自行限制那些負載量高的虛擬機器資源配置了。從效能圖表上也可以發現,大多數沒有VMI支援的OS(如常用的Windows 2003 R2),CPU都無法飆上100%,相對的就是效能較差。因此如果有效能考量的管理員們,可以考慮架設叢集化的服務來平衡速度上的差距。 - 支援性
使用傳統的Binary Translation的方式,缺點就是如果沒在VMWare支援GuestOS的列表下,像是以前的版本還不支援Vista的時候,那真是怎樣灌也灌不 起來。相對起來XenServer在這邊就比較有機會。不過近年來VMWare已經大幅度地改善了支援度,直到現在的3.5連Windows 2008 Server也支援了。 - 授權方式
VMWare有提供免費的版本稱做ESXi,就基本功能來說與ESX是相同的。但如果要使用VC來進行串連,還是建議使用ESX。VMWare有相當多的 方案可以參考,例如企業HA方案(2ESX+1VC),價格會比分開買還便宜許多。值得一提的是,比起XenServer比較單純的計費方式及軟體授權方 法,所有功能都是分開授權的。所以管理者們要小心檢視自己購買的方案所含的授權多了哪個或少了哪個。
Citrix XenServer 5
XenServer 給我一個最深的印象,那就是開放原碼起家。如果你想要使用免費的Xen VM,其實它已經附在現在大多數的Linux版本裡了,如Fedora 8,CentOS 5.2。免費版的Xen所使用的管理介面比較簡單,也沒有任何方式支援HA,適合個人使用。
有關使用Xen及Virt-manager可以參考這些文章:
如 果沒有太要求完整的備份方案,或是工程師還有餘力可以解決一些小問題的話,XenServer5確實是一個便宜的方案。估計比起VMWare至少要便宜一 半以上的價格。然而XenServer的半虛擬化(para-virtualization)比起VMWare所支援的Linux核心版本要來得多,對於 需要管理較多Linux機器的管理者們來說,不需使用太昂貴的硬體便能夠運作。此外Windows系列的作業系統使用起來也不會太慢。 XenServer5的主要軟體套件都附在第一張光碟裡,並包含以下:
- XenServer5 以Linux 2.6.18為核心(相當於Redhat Enterprise 5),與VMWare不同的是開機完成後,也可以直接在console上進行設定。另一點不同的地方是,XenServer只能夠在64位元CPU上執 行,這對於管理員們是一大考量。如果是比較舊的主機,那就只能使用VMWare了。
- XenXerver5 Enterprise 包含了XenMotion,HA及能夠掛載NFS或iSCSI硬碟的能力。
- XenCenter 與VMWare的VC不同,這只是單純的用戶端程式。XenServer的架構並不需要使用到任何中介程式進行串連,因此在管理上雖然少了些彈性,卻比VMWare簡單許多。
- 介面觀感
在使用介面的觀感上XenServer給人的初次印象就是簡單,但也反映出來他們對於系統管理者的管理方式還不夠熟悉。許多功能都是用精靈的方式來一步一 步增加,並無法讓管理者能夠彈性地新增刪除。對於各個元件的狀態(如儲存媒體或是硬體儲存卡的狀態)也都做了資訊隱藏,除非使用指令介面來操作,不然無法 查詢到。使用Console來顯示Windows畫面的速度比較緩慢,甚至有Lag的狀況。
但總結起來,比較適合剛入門或是需求單純的管理員。 - 效能
對於Linux虛擬機器的效能,由於使用了半虛擬化而大增。但Windows機器就相對地效能普通。 - 支援性
比起VMWare來說,Xen幾乎是可以跑所有以Linux做為核心的OS,而幾乎是不會有太大問題,這個是Xen的天生優勢,在負載很大的情況下也不會輕易當機。 - 授權方式
XenServer5可以隨時從官方網站下載並安裝,但並不包括HA及Motion的功能,這兩個功能需要啟用Enterprise版本的授權才行。授權檔也可以在官方網站取得,並且有一個月的試用期限。
建置
部署環境
在本文中,我們將使用iSCSI的方式來連接中央的儲存設備。而本文章的主題是VMWare,因此接著在接下來的文章中。所有設備的部署圖如下:
IP清單:
| hostname | ip |
| vmware01 | 10.1.1.11 |
| vmware02 | 10.1.1.12 |
| vcserver | 10.1.1.21 |
| iscsiserver | 10.1.1.22 |
建置iSCSI NAS
準備硬體
建 置iSCSI最低的門檻我想應該都必須要1G的Ethernet。如果要得到更好的效能,無非就是將所有的儲存網路換成10G Ethernet或者是Fiber。而不同家的iSCSI Target的軟體,效能差距應該不會太大。此外網路卡的部分,也請盡量使用Intel,3Com,Broadcom(多半是內建)等大廠牌的,以免影響 最大的出力值。
iSCSI Target 伺服器所需要的CPU及記憶體並不需要太好,一般P4的PC,具備有512M記憶體皆可。但最主要是所採用的磁碟陣列系統,由於一旦中央的儲存系統損毀, 就萬事休矣,另一點是如果要搭配硬體的複寫(replication)系統也非常昂貴。也因此對於管理員來說,也可以選擇市售搭配Windows2003 儲存版的「直立式儲存伺服器」,就大概符合上述需求,然後在自行重新安裝一般的Linux OS即可。
軟體iSCSI的方案並不多,除了 Linux 有Linux iSCSI Enterprise Target (IET)以外,Windows上有StarWind及Windows Storage Server 2003 R2(wintarget)。這些通常都只支援到SendTarget Discovery及Clustering。
如果需要MPIO (Multipath) 的方案,恐怕只有硬體才有支援了,此外也得購買硬體的iSCSI HBA卡。儘管StarWind及WinTarget都有支援MPIO,不過只限定使用Microsoft iSCSI Initiator。
安裝及設定
在此我們使用最簡單的軟體,他支援最基本的send target discovery及建置存及需要的clustering,請在http://iscsitarget.sourceforge.net/下載。
- tar zxf iscsi-target.{version}.tar.gz
- make; make install
- 編輯/etc/ietd.conf,修改iqn及Lun 0 那一行
iqn的格式是iqn.yyyy-mm.<reversed domain name>[:identifier]
舉個例子iqn.tw.com.yourdomain:iscsiserver.lun0
Lun 0 Path={檔案路徑},Type=fileio
檔案路徑可以是一般的空白檔案(要先用dd寫入空白資料),裝置檔,或是LVM裝置檔
舉例 Lun 0 Path=Lun 0 Path=/dev/VolGroup00/lv_iscsi,Type=fileio - chmod 700 /etc/init.d/iscsi-target
- service iscsi-target start
- chkconfig --level 35 iscsi-target on
你也可測試iSCSI是否正常運作,這樣就必須安裝open-iscsi (iscsi-initiator-utils)。
- yum install iscsi-initiator-utils
- service iscsi start
- iscsiadm -m discovery -t sendtargets -p 10.1.1.22
對iscsi server進行查詢 - iscsiadm -m node -l
如果查詢成功的話,就進行連接(登入) - fdisk -l來看看是否有多新的scsi裝置
- iscsiadm -m node -u
如果要中斷的話,就登出 - 如果沒有清除紀錄的話,只要iscsi啟動就會進行登入。請到/var/lib/iscsi/nodes及/var/lib/iscsi/send_targets刪除其目錄下的資料
建置叢集
接著便安裝各兩台ESX伺服器,安裝的方式也非常簡單,與安裝一般的LinuxOS無異。
一 旦安裝完畢,可以使用VIC進入vmware01,建立第一個虛擬機器,這個虛擬機器就是我們用來安裝Virtual Center(VC)所用的,在此我們假定IP是10.1.1.22。安裝完OS及VC後,可以在程式集裡找到「VMWare License Server Tool」,換上你擁有的授權檔,也當作授權伺服器使用。以下安裝的介紹,將會預設使用者已經有ESX Enterprise(SAN Usage選項),VC,HA,DRS的授權,一旦通過授權,才不會發生未授權的錯誤或者是功能被UI鎖住無法使用。
此外在部署圖中也看到建議自行安裝一般常見的網路服務如DNS及DHCP,來加速未來安裝虛擬機器的便利性。
伺服器設定
在設定之前請務必要熟悉VIC的操作介面。
網路設定
請找到Configuration分頁,點選Networking。
這一張圖片是比較複雜的設定,藉此可以瞭解ESX的網路設定架構。
- vSwitch:一個vSwitch代表至少一張網路卡的連結。也就是說,如果你有一張以上的網路卡,你可以分別建立不同的vSwitch來指向不同的網段。在這個例子中,我們有兩個vSwitch,分別指向10.1及10.3兩個網段。而vSwitch也可以指定兩張以上的網路卡作為備援,完成後如同vSwitch0的設定狀態。如果兩張網路卡所連接的實體Switch支援Trunk的話,也可以採用Bonding,來將兩張網路卡的頻寬合併在一起。
VM在建立的時候都會新增一個網路卡,你可以修改VM的設定來讓他指向不同的vSwitch,也就是不同的網段。 - VM Network:當你建立vSwitch的時候,也同時會建立VM Network。這裡可以看見有多少VM已經啟動並連接上。
- Service Console:代表著能夠讓VIC或是SSH進行連線的IP,一個實體機器至少要有一個。在這個例子中,我們並沒有在vSwitch1中增加Service Console。
- VM Kernel:代表著實體機器連出的IP,這個IP也作為iscsi client或是vmotion的傳輸通道使用。也就是說,service console並不能作為這些網路功能使用,只能夠連線而已。一旦要啟用上述功能,就必須在該網段使用VM Kernel佔用一個IP才行。
ESX在建立叢集服務的時候,如果沒有事先在DNS裡註冊的話,會出現An error occurred during configuration of the HA Agent on the host。原因只是因為ESX會直接使用你設定的hostname來進行連線,但VC並未設計充當DNS的功能,所以不是安裝一個DNS,那就是直接修改 所有主機的(包括VC的)hosts檔案。詳細請參考http://60.190.88.90/ljf/2008/04/an-error-occurred-during-confi-1.html。如果要修改DNS或是Default Gateway的設定,請點選「Properties...」並編輯Service Console。
在HA啟動的時候,會使用這裡所填寫的hostname與domain進行彼此之間的連線,在這個例子是vmware03.mydomain.com。請記得在DNS裡設定,讓這個名稱可以被查詢。
儲存裝置設定
請在Configuration分頁點選Storage Adapters。
點選Properties,再點選「Configure...」,可以勾選「Enabled」來啟動軟體的iSCSI Initiator。
接著可以點選Dynamic Discovery來加入iscsi server的IP,完成後UI會自動詢問要不要Rescan,選是。
基本上重新掃瞄完後,會出現如同第一張圖一樣,已經有SCSI Target被註冊,這時請注意Canonical Path裡所顯示的vmhba32:n:n的代號。
接著點選Configuration分頁的Storage,在點選「Add Storage...」,依照精靈的提示繼續下去,會看見剛剛所出現的代號,選擇這個HBA後,再進行命名。在這例子我命名為iscsi,之後會進行格式化。
在這個頁面中,任何已經格式化好的儲存裝置都會列出來。接著你可以在項目上按右鍵,選擇「Browse DataStore...」,就會出現像檔案總管般的畫面,可以讓你上傳及管理檔案。
iSCSI的設定大致上是這樣,我們再將步驟整理一下:
- 點選「Enabled」來啟用iSCSI
- 新增Dynamic Discovery IP
- Rescan
而移除的時候,就是移除掉所有的Discovery IP,並且重新Rescan即可。確定沒有任何連接中的iSCSI裝置,就可以將Enabled勾取消,來關閉iSCSI。
用上述步驟,可以避免調重新啟動實體機器的麻煩,儘管UI會提示,不過可以不予理會。
高可用度(HA)叢集設定
這個設定起來非常的簡單。請注意在設定的時候是必須連到VC的,不過一旦設定成功後,即使VC沒有啟動,HA也會運作。
- 在根目錄上新增資料中心(New DataCenter),一個資料中心代表最上層的管理組織,但無任何可以設定的項目。就像是Folder一樣,但比較有代表性。
- 在資料中心下新增叢集(New Cluster),叢集下可以新增虛擬機器及伺服器(Add a host),而如果伺服器上已有虛擬機器,就會納入此叢集下管理。新增叢集的時候,可以指定要選用DRS或是HA。
- 在AdmissionControl裡提到了一個Cluster最多能夠同時容忍幾個「實體機器」斷線,如果要讓容忍的數目增加,那勢必要有更多實體機器。
- Default Cluster Setting可以設定當實體機器斷線時,該機器本身要採取的動作。由於斷線可能是因為網路,當網路回復時可能會讓已經在其他活著的實體機器啟動的VM衝 突。因此在Host Isolation Response裡可以選擇讓離線的實體機器自動關閉所有VM,或是讓VM留著不要關閉。
- HA也可以偵測VM的活動,但只針對有安裝VMWare Tools的。這裡可以選擇是否要偵測VM的回應,當VM停止回應時,實體機器會自動重新啟動VM。
虛擬機器的管理
還是一樣請務必要熟悉介面的操作。你可以利用「Edit Virtual Machine Settings」來為你的VM新增或移除硬體,如額外的硬碟,或是調整CPU或記憶體的數量。
Migration
遷移分做兩種狀態。
如果可以Motion,就會自動進行,反之則會要求選擇你要migrate過去的儲存裝置及主機。當然管理員必須先自行判斷,如果你知道自己要做的是migration而不是motion,那就記得要先點「Suspend」來將VM暫停。
步驟如下:
- 選擇目的地:展開樹狀圖來選擇你想要的主機,如果驗證未通過,那就要看出現的訊息是啥。
- 選擇Resource Pool:基本上Migration可以跨DataCenter。
- 選擇儲存裝置:根據你選擇的主機,可以在選擇已經在該主機上設定好的儲存裝置。
- 完成。依網路速度及VM硬碟大小不同,等待一段時間後,便可以回復VM。此時你會發現如果使用Gigabit Ethernet的時間就會縮短很多。
CPUID Mask
如果你的實體機器不支援SSE3的時候,便無法migrate到這上面,會出現類似這樣的畫面。這個時候要修改VM的CPUID Mask。
點選「Edit setting」,「Options」,「CPUID Mask」,先選擇「Expose the Nx flag to guest」,再點「Advanced...」。
找到Level1 ecx那一排,然後將下列一行複製,並貼上,就可以解決了。
---- ---- ---- ---- ---- ---- ---0 -0-0
參考資料
http://www.vmware.com/support/pubs/vi_pages/vi_pubs_35u2.html
http://60.190.88.90/ljf/2008/04/an-error-occurred-during-confi-1.html
http://searchvmware.techtarget.com/tip/0,289483,sid179_gci1277081,00.html
http://communities.vmware.com/thread/125432
結論
在試用的期間,真的已經逐漸熟悉VIC整體的操作模式,以及貼心的小設計。但無論機器怎樣方便好用,怎樣聰明自動化,還是需要瞭解其技術核心的管理員來輔助,免得出了任何手冊上沒寫的狀況,就無法處理。

沒有留言 :
張貼留言