天天看點

基于超融合架構的容器雲管部署實踐

作者介紹

張揚,daocloud售前工程師,緻力于企業it環境中容器化、超融合和雲計算方面的需求分析,方案設計和技術支援。曾任職ibm aics雲服務項目并負責cloud infra和devops相關工作。nutanix社群活躍使用者,個人微信号:小張烤茄。

随着雲計算的逐漸落地,容器化和超融合等技術開始風靡整個it圈。本次分享主要從技術層面講述雲計算環境中容器化和超融合的雙擎工作模型。

 一、超融合概念 

超融合基礎架構(hyper-converged infrastructure,或簡稱”hci”)也被稱為超融合架構,是指在同一套x86單元裝置中不僅僅具備計算、網絡、存儲和伺服器虛拟化等資源和技術,而且還包括緩存加速、存儲分層、重複資料删除、線上資料壓縮、快照技術等元素,并且多節點可以通過網絡聚合起來,實作子產品化的無縫橫向擴充(scale-out),形成統一的資源池。

傳統集中式存儲的基礎架構一般會被分為四層:以太網絡層、計算資源層、存儲網絡層和存儲資源層。如下圖:(圖中沒有涉及以太網絡層)

基于超融合架構的容器雲管部署實踐

這樣的模型在傳統的架構中是非常适用的,但是随着雲計算和使用者體驗時代的體驗到來,在應用規模比較大的場景中該模型面臨着很大的挑戰。

比如:集中存儲容易成為io性能瓶頸、層次過多不易管理、擴充複雜且價格昂貴、資料儲存偏向中心化等等。如下圖:

基于超融合架構的容器雲管部署實踐

超融合基礎架構基于web scale(一種面向基礎架構和資源的全新架構方式,實作網際網路規模的彈性擴充能力)的設計思想,從硬體層面将計算資源層、存儲網絡層和存儲資源層融合為一層,增強資料中心基礎架構的靈活性并降低複雜度。如下圖:

基于超融合架構的容器雲管部署實踐

超融合從硬體将傳統的計算資源和存儲資源內建到一個2u的标準裝置裡,并提供千兆網絡口用于前端應用的通路,萬兆網絡口用于後端分布式存儲的資料傳輸,進而全面擺脫傳統造價昂貴的存儲網絡和集中式存儲。

同時也在軟體層面基于軟體定義一切則準則,使用虛拟化和分布式存儲等技術,實作分布式的資源排程。如下圖:

基于超融合架構的容器雲管部署實踐

分布式架構将所有的資源池化,進而實作單點性能瓶頸的消除、去中心化、無上限擴充等雲計算環境中所需要的基本要素。如下圖:

基于超融合架構的容器雲管部署實踐

<a>超融合基礎架構的本質是在硬體層包含計算和存儲資源,并在軟體層通過軟體定義的方式實作資源池化,為上層應用提供去中心化且可彈的基礎架構支撐。</a>

 二、超融合架構介紹 

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、軟體架構  

nutanix的軟體架構基于兩個産品來實作:prism和acropolis

基于超融合架構的容器雲管部署實踐

prism是一個分布式的資源管理平台,基于web console實作對超融合叢集環境對象及服務的管理和監控,類比vmware vcenter。

acropolis是一個分布式的多資料總管,集協同管理和資料平台功能于一身,實作計算和存儲資源的管理和排程,類比vmware vsphere+vsan。

包含三個主要元件:

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包含兩個主要元件:

nutanix docker machine driver:docker machine操作nutanix平台部署docker主控端的驅動子產品。

基于超融合架構的容器雲管部署實踐

如果有使用過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作為叢集中的編排工具,可部署到實體機、虛拟機或雲主機上的企業級應用雲管平台。它提供企業容器雲環境中應用編排、鏡像倉庫、負載均衡、日志和監控管理、網絡和存儲控制等功能。

我們采用manager-worker的拓撲結構:

基于超融合架構的容器雲管部署實踐

dce controller作為控制節點,處理所有的使用者請求,并管理叢集中的所有容器節點。

dce agent作為容器節點,承載使用者的容器和應用的運作。

下面我們看一下本次實踐的拓撲結構:

基于超融合架構的容器雲管部署實踐

本次部署采用企業級的高可用模式,底層使用nutanix的超融合環境生成5台标準的docker主控端,docker主控端中3台作為我們的高可用controller叢集,2台作為我們雲管平台的agent運作使用者應用所需的容器。

 五、部署實踐 

前面提了很多理論性的東西,下面基于上述功能在超融合架構的基礎上部署出一套容器運管平台,并使用應用商店釋出一個資料持久化的wordpress應用。

1、主控端生成  

docker主控端是使用nutanix docker machine driver生成的虛拟機,使用該種方式可實作在每台docker host快速部署的同時保證硬體配置、軟體版本的一緻性。

指令格式如下:

基于超融合架構的容器雲管部署實踐

有使用過docker machine基于virtualbox生成主控端的朋友可能會比較熟悉,差別就是驅動為nutanix,參數方面包含超融合的環境資訊以及主控端的硬體配置資訊。

我們通過該指令生成部署所需的5台主控端。

基于超融合架構的容器雲管部署實踐

2、配置設定塊裝置  

向5台docker主控端配置設定相應容量的塊裝置作為docker engine的資料存儲。

基于超融合架構的容器雲管部署實踐

作為生産環境的企業級雲管平台,我們不推薦使用devicemapper預設的loop-lvm模式,是以我們需要使用外部abs存儲配置設定的塊裝置來配置direct-lvm模式。

3、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位址。

4、釋出應用  

啟動應用容器的時候需要調用volume plugin來實作外部存儲的挂在,docker run指令的格式如下:

基于超融合架構的容器雲管部署實踐

和通常run一個容器的指令基本沒差別,隻需加上–volume-driver參數并指定為nutanix即可。

由于本例需要使用dce的應用商店部署一個wordpress應用,是以我們要修改wp的compose檔案以實作外部volume的挂載。在選擇部署wp應用之後,雲管平台預設會提供一個compose檔案模闆,使用者可以基于該模闆檔案進行自定義操作。

基于超融合架構的容器雲管部署實踐

如上圖,将volume_driver參數指定為nutanix,并将volumes參數中的卷挂載到wp的mysql資料目錄即可。随後dce會基于自定義好的compose檔案自動的去部署wp應用。

5、狀态檢查  

1)容器運作狀态

基于超融合架構的容器雲管部署實踐

可以看到compose檔案中定義的wordpress和mysql兩個容器已分别被分布在兩個agent節點部署且運作。

2)應用通路

基于超融合架構的容器雲管部署實踐

通路平台中wordpress容器提供的應用連結來确認應用可成功通路。(wp的配置步驟在此省略)

3)外部卷

基于超融合架構的容器雲管部署實踐

compose檔案定義的外部卷wpdb已經在存儲池中建立成功,資料持久化功能得以實作。

至此基于nutanix超融合架構的容器雲管平台部署已經完成。本次主要是從技術層面抛磚引玉似的分享容器化+超融合這種雙擎模式的嘗試,希望能給大家帶來一些啟發。

<b></b>

<b>本文來自雲栖社群合作夥伴"dbaplus",原文釋出時間:2016-11-09</b>

繼續閱讀