基於超融合架構(HCI)的容器雲管理部署實踐
大家好,我是DaoCloud售前工程師張揚,平時工作主要為企業IT客戶提供容器化、超融合和雲端計算方面的技術支援。沒事兒喜歡去Nutanix超融合社群轉轉,也運營者一個微信訂閱號寫些上不了檯面的技術貼。
隨著雲端計算的逐步落地,容器化和超融合等技術開始風靡整個IT圈。本次分享主要從技術層面講述雲端計算環境中容器化和超融合的雙擎工作模型,希望能夠給大家帶來一些嘗試或啟發。
一、超融合概念
超融合基礎架構(Hyper-Converged Infrastructure,或簡稱”HCI”)也被稱為超融合架構,是指在同一套x86單元裝置中不僅僅具備計算、網路、儲存和伺服器虛擬化等資源和技術,而且還包括快取加速、儲存分層、重複資料刪除、線上資料壓縮、快照技術等元素,並且多節點可以通過網路聚合起來,實現模組化的無縫橫向擴充套件(scale-out),形成統一的資源池。
上圖可能是資料中心運維人員比較熟悉的傳統集中式儲存的基礎架構,它一般會被分為四層:乙太網絡層、計算資源層、儲存網路層和儲存資源層。(圖中沒有涉及乙太網絡層)
這樣的模型在傳統的架構中是非常適用的,但是隨著雲端計算和使用者體驗時代的體驗到來,在應用規模比較大的場景中該模型面臨著很大的挑戰。
如上圖,在計算資源經過虛擬化技術實現彈性擴充套件以後,集中式儲存很容易就成為效能的瓶頸。
超融合基礎架構基於Web Scale(一種面向基礎架構和資源的全新架構方式,實現網際網路規模的彈性擴充套件能力)的設計思想,從硬體層面將計算資源層、儲存網路層和儲存資源層融合為一層,增強資料中心基礎架構的靈活性並降低複雜度。如下圖:
超融合裝置從硬體層將傳統的計算資源和儲存資源整合到一個2U的標準裝置裡,並提供千兆網路口用於前端應用的訪問,萬兆網路口用於後端分散式儲存的資料傳輸,從而全面移除傳統的儲存網路和集中式儲存。
同時也在軟體層面基於軟體定義一切則準則,使用虛擬化和分散式儲存等技術,實現分散式的資源排程。如下圖:
分散式架構將所有的資源池化,從而實現單點效能瓶頸的消除、去中心化、無上限擴充套件等雲端計算環境中所需要的基本要素。
超融合基礎架構的本質是在硬體層包含計算和儲存資源,並在軟體層通過軟體定義的方式實現資源池化,為上層應用提供去中心化且可彈的基礎架構支撐。
二、超融合架構介紹
2.1 硬體架構
如圖可以看到,Nutanix 3000系列的超融合硬體裝置是一臺x86平臺的2U機架式伺服器。
含有:
NODE: 每臺Nutanix伺服器可支援1到4個節點。
SSD: 每節點可支援一到兩塊400或800GB的固態硬碟,最大支援6400GB。
HDD: 每節點可支援一到四塊1TB的機械硬碟,最大支援16TB。
CPU: 每節點可支援一到兩顆Intel CPU,最大支援64核。
MEM: 每節點可支援64到512GB記憶體,最大可支援2TB。
SATADOM: 每節點必須含有一塊64GB的SATA介面的固態硬碟,預裝客戶所選擇虛擬化型別的Hypervisor。有Nutanix AHV,VMWare ESXi和Microsoft Hyper-V三種可選。
NIC: 每節點含有兩塊10GB乙太網卡(用於NDFS),兩塊1GB乙太網卡(用於應用)。
Other: 每節點含有一個VGA介面,一個IPMI介面,4個USB介面。整機2個電源模組,4個風扇。
硬體層是標準的x86架構的伺服器,包含計算和儲存所需的硬體資源。核心是SATADOM,其中預裝的軟體實現了超融合裝置“開箱即用”的功能。整個物理架構非常簡單,這也是超融合的價值所在,企業基礎架構需要擴容的時候拿這樣一臺裝置上架加電接網即可。
2.2 軟體架構
Nutanix的軟體架構基於兩個產品來實現:Prism和Acropolis
Prism是一個分散式的資源管理平臺,基於Web Console實現對超融合叢集環境物件及服務的管理和監控。
Acropolis是一個分散式的多資源管理器,集協同管理和資料平臺功能於一身,實現計算和儲存資源的管理和排程。
Acropolis包含三個主要元件:
DFS(Distributed Storage Fabric)分散式儲存架構,基於Nutanix分散式檔案系統實現儲存資源池化的儲存平臺。
AMF(App Mobility Fabric)應用移動性架構,提供在Hypersior間動態切換和移動工作負載的功能。
AHV(Acropolis Hypervisor)虛擬化管理器,基於CentOS KVM開發後的多用途虛擬化管理器元件。
以上介紹的軟硬體架構基本在每個廠商的超融合產品中都包含,可以說已經形成了一個業界的標準。特別是軟體層面的虛擬化和分散式儲存更是每個超融合產品必須具備的功能元件,畢竟超融合的準則是軟體定義一切,是實現SDDC(軟體定義資料中心)的終極技術路徑。
軟體定義一切的魅力也在於,自行攢機也同樣可以基於社群版部署出一套超融合的HomeLab。:)
三、超融合對容器化的支援
Docker引領的容器化風潮已席捲整個IT行業,拋開容器圈內部的生態競爭,容器圈外的IT巨頭也紛紛選擇支援容器技術的發展,並且也一步步在自己的解決方案中融入容器技術。
Nutanix在新發布的AOS 4.7中同樣為Docker容器推出了ABS和ACS功能,使得容器化能夠很容易的在超融合架構上被承載。
ABS(Acropolis Block Services)使用iSCSI協議將儲存資源以塊裝置的形式提供給的裸機、虛機或容器,從而實現了底層分散式儲存對外部物件的支援。
如圖,容器中的重要資料可以外部volume的形式存放到ABS儲存中,從而實現了資料的持久化。
ACS(Acropolis Container Services)實現Nutanix超融合平臺對Docker容器化的支援,解決了容器應用資料持久化的問題並提供了效能和安全兼顧的”雙擎”方案。
ACS包含兩個主要元件:
如果有使用過Docker Machine的朋友對這個就會比較熟悉,Machine Driver會被Docker Machine呼叫,然後基於Prism的API在Nutanix的超融合平臺快速建立標準的Docker宿主機。
Nutanix Docker Volume Driver:Docker容器操作Acropolis Block Services的驅動模組。
Volume Driver提供的容器卷外掛(Volume Plugin)遵循Docker提供的規範,將容器中的關鍵資料儲存到ABS所提供的分散式儲存中,以外部volume的形式實現容器資料的持久化。
四、容器雲管介紹
容器雲管平臺提供了容器叢集環境中容器和應用的管理和編排。目前國內外的容器雲管有很多,且基本都是基於Google Kubernetes、Apache Mesos和Docker Swarm三種編排工具來實現。
DaoCloud Enterprise(DCE)是一套以Docker Native為核心、將Swarm作為叢集中的編排工具,可部署到物理機、虛擬機器或雲主機上的企業級應用雲管平臺。它提供企業容器雲環境中應用編排、映象倉庫、負載均衡、日誌和監控管理、網路和儲存控制等功能。
DCE採用Manager-Worker的拓撲結構
DCE Controller作為控制節點,處理所有的使用者請求,並管理叢集中的所有容器節點。
DCE Agent作為容器節點,承載使用者的容器和應用的執行。
下面我們看一下本次實踐的拓撲結構
本次部署採用DCE企業級的高可用模式,底層使用Nutanix的超融合環境生成5臺標準的Docker宿主機,Docker宿主機中3臺作為DCE的高可用Controller叢集,2臺作為DCE的Agent執行使用者應用所需的容器。
五、部署實踐
前面提了很多理論性的東西,下面我們基於上述功能在超融合架構的基礎上部署出一套容器運管平臺,並使用應用商店釋出一個數據持久化的Wordpress應用。
5.1 宿主機生成
Docker宿主機是使用Nutanix Docker Machine Driver生成的虛擬機器,使用該種方式可實現在每臺Docker Host快速部署的同時保證硬體配置、軟體版本的一致性。
命令格式如下:
有使用過Docker Machine基於virtualbox生成宿主機的朋友可能會比較熟悉,區別就是驅動為nutanix,引數方面包含超融合的環境資訊以及宿主機的硬體配置資訊。
我們通過該命令生成部署所需的5臺宿主機,如下圖
5.2 分配塊裝置
向5臺Docker宿主機分配相應容量的塊裝置作為Docker Engine的資料儲存。
DCE作為生產環境的企業級雲管平臺,不推薦使用devicemapper預設的loop-lvm模式,所以我們需要使用外部ABS儲存分配的塊裝置來配置direct-lvm模式。
5.3 DCE雲管部署
DCE雲管作為容器執行在Docker宿主機之中,使用DCE自帶Toolbox來部署也很靈活和簡單。
本次實踐用到的install命令實現控制節點的部署,join命令實現容器節點的部署。
部署主控節點
# bash -c "$(docker run --rm daocloud.io/daocloud/dce install)"
部署副控節點
# bash -c "$(docker run --rm daocloud.io/daocloud/dce install --force-pull --replica --replica-controller MASTER_CONTROLLER_IP)"
部署容器節點
# bash -c "$(docker run --rm daocloud.io/daocloud/dce join --force-pull MASTER_CONTROLLER_IP)"
三種類型的節點物件使用三條命令部署即可,同樣的節點型別命令可複用。需要注意的是MASTER_CONTROLLER_IP為主控節點的IP地址。
5.4 釋出應用
啟動應用容器的時候需要呼叫Volume Plugin來實現外部儲存的掛在,docker run命令的格式如下:
和通常run一個容器的命令基本沒區別,只需加上–volume-driver引數指定為nutanix,同時指定外部volume的名字就行。
由於本例需要使用DCE的應用商店部署一個Wordpress應用,所以我們要修改WP的compose檔案以實現外部volume的掛載。在選擇部署WP應用之後,DCE預設會提供一個compose檔案模板,使用者可以基於該模板檔案進行自定義操作。
如上圖,將volume_driver引數指定為nutanix,並將volumes引數中的卷掛載到WP的MySQL資料目錄即可。隨後DCE會基於自定義好的compose檔案自動的去部署WP應用。
5.5 狀態檢查
a. 容器執行狀態
可以看到compose檔案中定義的wordpress和mysql兩個容器已分別被DCE自動分佈在兩個agent節點部署且執行。
b. 應用訪問
訪問DCE中wordpress容器提供的應用連結來確認應用是否可成功訪問。(WP的配置步驟在此省略)
c. 外部卷
Compose檔案定義的外部卷wpdb已經在儲存池中建立成功,資料持久化功能得以實現。
至此基於Nutanix超融合架構的DaoCloud容器雲管平臺部署已經完成。
本次主要是從技術層面拋磚引玉似的分享容器化+超融合這種雙擎模式的嘗試,希望能帶來一些啟發。另外,DaoCloud已從企業容器雲管走向企業應用雲,Nutanix也從企業超融合架構走向企業雲平臺。如有興趣,請關注”小張烤茄”一起學習交流。