eBay宣布擁抱容器,將全面整合Kubernetes和OpenStack
在線拍賣及購(gòu)物網(wǎng)站eBay比亞馬遜(Amazon)成立晚一年,但卻比Google、Facebook等眾多的巨無(wú)霸要早。和其他的伙伴們一樣,eBay也為大量的用戶提供服務(wù),它在190個(gè)國(guó)家擁有1.59億活躍買家而且支撐了超過(guò)8億條商品信息。要支持海量用戶并非易事,這需要持續(xù)擴(kuò)展基礎(chǔ)架構(gòu),所以eBay一直在積極地?fù)肀录夹g(shù)。
為了管理云端基礎(chǔ)架構(gòu),eBay在三年前把虛擬機(jī)從VMware的ESXi Hypervisor切換到了OpenStack之上的KVM,因而成為OpenStack的早期忠實(shí)用戶(eBay使用他們自行部署的OpenStack,做了大量的定制化開(kāi)發(fā))。該公司從大約300臺(tái)運(yùn)行“Essex(艾塞克斯)”版本OpenStack的服務(wù)器起步,很快在三年后eBay和PayPal就共同運(yùn)行在“Havana(哈瓦那)”版本上,超過(guò)30萬(wàn)個(gè)核、支持了超過(guò)1萬(wàn)2千個(gè)KVM hypervisor、通過(guò)Open vSwitch虛擬交換機(jī)橫跨了十多個(gè)可用性區(qū)域(Availability Zone)而且為了公司多個(gè)業(yè)務(wù)部門的需要配置了超過(guò)15個(gè)虛擬私有云。
現(xiàn)在,eBay開(kāi)始在前端使用由Google開(kāi)源的Kubernetes容器調(diào)度系統(tǒng),而且eBay計(jì)劃把它與OpenStack結(jié)合在一起來(lái)管理容器化的應(yīng)用程序。
eBay是世界***零售商品牌之一,它的規(guī)模不能和諸如Google、Amazon、微軟和Facebook這類的超級(jí)巨無(wú)霸相比。但是,它的基礎(chǔ)架構(gòu)也非常大,而且該公司非常重視基礎(chǔ)架構(gòu),包括使用集裝箱式的數(shù)據(jù)中心、用燃料電池供電、使用惠普和戴爾的hyperscale(超大規(guī)模)級(jí)別的主機(jī)而且經(jīng)常使用定制化的超強(qiáng)處理器。(我們聽(tīng)說(shuō),eBay喜歡讓它的處理器運(yùn)行時(shí)溫度高一點(diǎn)兒來(lái)獲得更高的系統(tǒng)性能,但eBay卻沒(méi)回應(yīng)過(guò)這個(gè)傳言)。
eBay云計(jì)算技術(shù)服務(wù)團(tuán)隊(duì)的資深成員Ashwin Raveendran本周在KubeCon 2015會(huì)議上說(shuō)他們正在嘗試使用Kubernetes容器調(diào)度器來(lái)增強(qiáng)他們的OpenStack云。eBay是***個(gè)愿意把OpenStack和Kubernetes結(jié)合的大型IT企業(yè)。Raveendran說(shuō)eBay(在七月已經(jīng)同PayPal支付服務(wù)進(jìn)行了拆分)還在繼續(xù)擴(kuò)展它的基礎(chǔ)架構(gòu)而且當(dāng)前在超過(guò)15萬(wàn)臺(tái)服務(wù)器上使用了50多萬(wàn)個(gè)核。一個(gè)更直觀的說(shuō)法就是,這使得eBay的服務(wù)器集群規(guī)模已經(jīng)同Rackspace Hosting及Softlayer這類的公有云服務(wù)提供者一樣 。
在eBay一個(gè)典型的可用性區(qū)域擁有5000到20000臺(tái)服務(wù)器,而且服務(wù)器會(huì)被分配到500個(gè)節(jié)點(diǎn)的chunk中。有意思的是,根據(jù)eBay在過(guò)去公布的一些數(shù)據(jù),在2013年(在它剝離PayPal之前)它的CPU核數(shù)呈現(xiàn)為線性地增長(zhǎng)而VM以及部署在其基礎(chǔ)架構(gòu)上的項(xiàng)目的數(shù)量則是指數(shù)級(jí)增長(zhǎng)。關(guān)于存儲(chǔ),我們猜想eBay擁有超過(guò)200PB的容量,它應(yīng)該運(yùn)行在相當(dāng)多的服務(wù)器之上。截止今年春天,1.6PB用于Cinder塊存儲(chǔ)。大約120PB的存儲(chǔ)用于支持Hadoop,這也使其成為世界上***的分析平臺(tái)之一。
Raveendran在eBay所就職的數(shù)據(jù)及基礎(chǔ)架構(gòu)服務(wù)部門每秒鐘從應(yīng)用程序和基礎(chǔ)架構(gòu)監(jiān)控系統(tǒng)中抽取2百萬(wàn)個(gè)指標(biāo)(metrics),而且每天生成300TB以上的日志文件因?yàn)樗刻煨枰幚硎畠|次查詢并且顯示200億以上的圖片。它顯然是一個(gè)龐大且復(fù)雜的操作,而我們簡(jiǎn)化了一點(diǎn)兒。
eBay的平臺(tái)??雌饋?lái)和大多數(shù)的現(xiàn)代企業(yè)在概念上很類似。
OpenStack統(tǒng)一管理服務(wù)器和存儲(chǔ),并抽象出計(jì)算、存儲(chǔ)和網(wǎng)絡(luò)等資源。當(dāng)前,eBay的現(xiàn)有系統(tǒng)強(qiáng)制每一個(gè)應(yīng)用程序?qū)嵗\(yùn)行在它自己專用的虛擬機(jī)中。eBay使用Kubernetes不僅僅是改為用容器來(lái)部署應(yīng)用程序,而是在該公司以基礎(chǔ)架構(gòu)的云計(jì)算層為中心來(lái)改變應(yīng)用程序的生命周期 (包括構(gòu)建、部署、監(jiān)控并且修復(fù)問(wèn)等開(kāi)發(fā)者和系統(tǒng)管理員需要執(zhí)行的關(guān)鍵功能)。eBay計(jì)劃以容器作為運(yùn)行環(huán)境而Kubernetes在OpenStack之上來(lái)管理這些容器來(lái)實(shí)現(xiàn)更佳靈活的部署模型。eBay所采用的Kubernetes使用方式是受到了他們當(dāng)前在虛擬機(jī)里部署應(yīng)用程序的自主技術(shù)的啟發(fā)。
當(dāng)前的設(shè)置如圖所示:
目前,eBay的大多數(shù)程序是用Java開(kāi)發(fā)的。而且和很多基于虛擬機(jī)的商業(yè)集群一樣,eBay的集群也是以靜態(tài)的方式來(lái)調(diào)度的。嚴(yán)格地講,這種方式意味著基礎(chǔ)架構(gòu)云中的服務(wù)器節(jié)點(diǎn)被分配到每一類負(fù)載中,就像這樣:
在集群中靜態(tài)地調(diào)度節(jié)點(diǎn)顯然不是一個(gè)理想的狀態(tài),但是很多公司在部分應(yīng)用程序存在很大峰值的情況下也同樣在其私有云中靜態(tài)地分配容量。“這些服務(wù)對(duì)于相應(yīng)的私有云而言是很大的問(wèn)題,而且當(dāng)我們需要容量的時(shí)候也不能迅速擴(kuò)展到公有云上去“,Raveendran解釋到。“我們不得不***化地利用我們的資源”。
(除非你能創(chuàng)建和Amazon類似的自己擁有的公有云,當(dāng)然我們跑題了)。
但是為什么諸如Kubernetes和Mesosphere等技術(shù)越來(lái)越受關(guān)注的原因之一是當(dāng)多個(gè)負(fù)載共享一臺(tái)主機(jī)時(shí)他們對(duì)于服務(wù)器的開(kāi)銷要小得多,而且可能更重要的是運(yùn)行擴(kuò)展負(fù)載的容器相比于傳統(tǒng)的服務(wù)器虛擬化能夠以一種快得多的方式啟動(dòng)和終止。曾經(jīng)老舊的軟件容器技術(shù)又煥發(fā)了新生,而且現(xiàn)在對(duì)于那些在過(guò)去的十年里使用相當(dāng)重的技術(shù)來(lái)進(jìn)行服務(wù)器虛擬化的企業(yè)而言很有誘惑力。他們現(xiàn)在開(kāi)始明白什么時(shí)候堅(jiān)固異常的虛擬機(jī)隔離手段并不必要而什么時(shí)候容器就可以滿足需求了。
eBay主動(dòng)擁抱了容器,但也需要繼續(xù)在其基礎(chǔ)架構(gòu)云中支持虛擬機(jī),因此它計(jì)劃使用OpenStack的Magnum插件,請(qǐng)看五月的文章了解該平臺(tái)的信息,它是用來(lái)將Docker Swarm和Kubernetes容器調(diào)度器引入OpenStack。
如你所見(jiàn),eBay將用Kubernetes加入Docker容器運(yùn)行環(huán)境的kubelet主機(jī)代理進(jìn)程替代其自主的主機(jī)代理進(jìn)程。應(yīng)用程序?qū)囊粋€(gè)容器倉(cāng)庫(kù)下載并被部署到Kubernetes pod中的一臺(tái)服務(wù)器,而且pod中的所有服務(wù)器在需要時(shí)可以被共同地管理。這個(gè)配置也將在eBay當(dāng)前的基礎(chǔ)架構(gòu)中淘汰靜態(tài)的負(fù)載均衡器和防火墻,Raveeddran稱之為基礎(chǔ)架構(gòu)運(yùn)維中的一個(gè)大瓶頸。當(dāng)這些都完成了,動(dòng)態(tài)調(diào)度看起來(lái)就是這樣的:
Raveendran解釋說(shuō)是Kubernetes能夠吸引eBay關(guān)注的原因就是因?yàn)樗情_(kāi)源軟件,有很多人在一起協(xié)作而且eBay可以有所貢獻(xiàn)也能從中受益。可能更重要的, 在多個(gè)運(yùn)行Docker容器的公有云上Kubernetes可以用于控制器層,這使得eBay在需求發(fā)起時(shí)有能力擴(kuò)展到公有云而且工作負(fù)載能夠從eBay的分布式私有云遷移到一個(gè)公有云中。
Raveendran說(shuō),轉(zhuǎn)向Docker容器和Kubernetes來(lái)控制工作負(fù)載并不是沒(méi)有挑戰(zhàn)。如很多人多年來(lái)抱怨的,網(wǎng)絡(luò)是OpenStack的一個(gè)挑戰(zhàn),特別是當(dāng)前的現(xiàn)實(shí)問(wèn)題是OpenStack并沒(méi)有一個(gè)同Amazon Web服務(wù)(AWS)和Google計(jì)算引擎(Google Compute Engine)類似的虛擬路由器。但這里是eBay對(duì)于如何解決它的思考:
其想法是使用OpenStack的Neutron網(wǎng)絡(luò)插件來(lái)創(chuàng)建一個(gè)Kubernetes路由器。Raveendran說(shuō)在經(jīng)歷了一個(gè)漫長(zhǎng)的過(guò)程后,eBay只是將用于網(wǎng)絡(luò)三層所有路徑的邊界網(wǎng)關(guān)協(xié)議(BGP)下放到服務(wù)器主機(jī)而非僅僅停留在基礎(chǔ)架構(gòu)中的機(jī)柜頂部交換機(jī)(TOR)上。這些是eBay的巨無(wú)霸伙伴們?yōu)榱撕?jiǎn)化網(wǎng)絡(luò)已經(jīng)完成的事情,它使得一個(gè)單一網(wǎng)絡(luò)囊括了差不多10萬(wàn)臺(tái)設(shè)備(有時(shí)會(huì)更多)。
eBay擔(dān)心的另一件事是規(guī)模,當(dāng)然他們正在和Kubernetes社區(qū)一起提升Kubernetes的性能。Kubernetes早期發(fā)布版本中有一些自行設(shè)定的限制,因?yàn)镚oogle和他的社區(qū)伙伴們?cè)噲D使得語(yǔ)法和基礎(chǔ)適用于混合的負(fù)載以及不同于Google內(nèi)部規(guī)范的硬件環(huán)境。eBay正在努力構(gòu)建自己的Kubernetes集群并使用Kubernetes來(lái)抽象容器層以便于實(shí)現(xiàn)跨數(shù)據(jù)中心region或者私有云和公有云混合體的擴(kuò)展。另外,eBay也在嘗試一種方式把它的Cinder塊存儲(chǔ)與Kubernetes容器pods相結(jié)合。