天天看點

應用容器帶動IT新時尚

行業觀察者回顧2015年重大主題時,應用容器一定會在這一年的技術排名中名列前茅。似乎已經到處都是容器,從公有雲—aws釋出了ec2容器服務,到私有雲—vmware提供了vsphere的容器支援預覽都是。

容器的炒作甚至令有經驗的專業人士都倍感折磨,但大多數人對基礎知識仍了解有限:比如容器和傳統虛拟的差別是什麼,各自優缺點是什麼,有哪些使用者案例等。據2015 openstack峰會一位與會者的文章,甚至在懂行的人群中具備容器經驗人也是很少的:

在開幕式的主旨演講中,當其中一位發言者詢問6000名與會者“‘在座有多少人對進一步了解docker感興趣?’時,似乎所有人都舉手了。然後他又問‘有多少人在生産中使用了docker?’幾乎所有的手馬上都放下來了。”盡管沒有東西能夠代替親自試驗,我還是想通過聚焦應用容器基礎,把一些有前景的使用場景過一遍,以及讨論在以vm為中心的管理環境下的應用部署和監控問題來引導大家的學習過程。

應用容器優缺點

應用開發者對性能的追求永無止境,這是容器如此流行的原因之一。它們比vm更加高效,記憶體封裝要小很多,而這又轉化為更快的應用啟動和停止時間。一組基準測試(圖1、圖2)發現docker容器使用基于核心虛機(kvm)執行個體1/3的記憶體就能在前者所需一半的時間内啟動伺服器。其他測試表明,更大的性能改進可以讓應用啟動時間在毫秒級完成。

應用容器帶動it新時尚

  圖1:docker容器使用記憶體比kvm執行個體更少

  圖2:docker容器啟動時間隻有kvm執行個體的一半

原生容器應用—那些針對子產品化、水準伸縮性以及多租戶部署的應用,幾乎可以即時針對工作負荷進行伸縮。較低記憶體使用也使得每台伺服器容納的應用密度更高。的确,基準測試表明容器化運作時的性能相當于裸伺服器的97%。

因為容器封裝的知識應用運作時環境,而代碼、庫都不在整個os棧裡面,是以可移植性也更高。比方說,在使用像docker這樣的标準包格式時,同一個應用容器既能在内部linux伺服器運作,也能在aws上運作而不需要修改。這種應用抽象水準也意味着容器可以用流行的自動化工具,如ansible、chef或puppet來進行配置部署。

容器不好的地方是它們提供的應用間隔離要比全vm環境要少,可能會沒那麼安全,容易導緻流氓代碼從一個容器越獄進入另一個容器。

常見用例

考慮到容器的效率,應用容器在雲服務提供商那裡相當流行也就不足為奇,因為他們都希望通過更大的伺服器整合來實作資源利用的最大化。如果4、5個容器可以在同一片伺服器上面跑,為什麼還要用vm呢?

容器效率還使得它們成為複雜、多租戶工作負載,如使用web伺服器的多層應用、中間件、資料庫這些每一個使用者執行個體都作為獨立容器負載的理想環境。通過把運作時庫封裝進可移植、易于部署的鏡像,容器是的服務提供商能迅速增加新的應用或同一軟體的多個版本的同時提供運作時隔離。這使得應用容器成為有很多複雜依賴的軟體(如wordpress、drupal、joomla等内容管理系統),或私有像flask、.net或slim的複合微服務的更大選項。

因為容器允許同一應用代碼的許多版本共存并在同一伺服器隔離,是以可以成為采用持續傳遞和內建的快速應用開發的很好平台。代碼隔離意味着整個開發過程,包括開發、測試、籌劃和産品部署都能在同一個系統上面跑。将應用容器與docker swarm、kubernetes、aws codedeploy或elastic beanstalk opsworks這樣的編排平台結合能夠進行快速部署,因為開發者能夠實作由于版本管理和自動化工作流的流水化。

容器還可以用來對遺留的一體化軟體進行“雲化”。也就是說,你可以部署不是針對多租戶分布式系統的應用,或作為自包含、在共享雲基礎設施上可重定位鏡像的微服務。容器隔離和抽象簡化了可重複配置和管理,使得一體化應用能利用雲自動化軟體進行部署和監控。這種容器提供的隔離還意味着遺留系統很容易就能部署到aws ec2 container service、azure container service或google container engine這樣的公有iaas容器上面。

容器管理問題

2015年供應商紛紛給自己的産品增加了容器支援,vm和雲管理軟體需要時間來跟上形勢。比方說,vmworld2015的焦點之一就是介紹vsphere integrated containers,它允許控制相容docker api的容器,并可作為vsphere資源池的一部分進行消費。類似地,windows server 2016技術預覽版也包含有windows server container manager,這可以讓你通過powershell一級仍然比較粗糙的gui工具管理容器,包括相容docker的和新的hyper-v容器。

在linux-openstack這一塊,openstack nova能夠用管理程式驅動控制docker容器。類似地,dell也在用openmanage system administrator來內建docker,而redhat的atomic host容器平台帶了kubernetes。從長遠看,要找能夠內建其他的vm和雲管理平台、全面it營運管理以及應用性能管理套件的容器管理。

盡管炒得很熱,但應用容器既不會取代傳統的vm,也不會成為一時的流行。其技術優勢使得它們可以成為許多應用完全伺服器虛拟化的很好替代品,而microsoft nano server、vmware photonos等新的微vm技術的出現有望結合容器的性能好處和vm的徹底隔離和管理。it架構師的部署選擇從來沒有這麼豐富過。關鍵是要了解每一種平台的相對優勢,然後做出明智選擇。

本文轉自d1net(轉載)