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