京東618:大規模Docker集群,關鍵業務全部容器化
在2015年的618大促中,京東大膽啟用了基于Docker的容器技術來承載大促的關鍵業務(圖片展現、單品頁、團購頁),當時基于Docker容器的彈性云項目已經有近萬個Docker容器在線上環境運行,并且經受住了大流量的考驗。而今年618,彈性云項目更是擔當重任,所有的核心業務均已經跑在Docker上,包括商品頁面、用戶訂單、用戶搜索、緩存、數據庫。像618大促這樣的流量高峰期,彈性云可以自動管理資源,做到彈性擴展,而在流量低谷期,又可以進行資源回收,在提升資源利用率的同時確保了運維系統的穩定性。據官方估計,本次大促活動中,京東線上將會啟動近20萬個Docker容器,從數量上來看,京東是全球范圍內Docker的應用大戶之一。
為了了解相關的詳情,InfoQ記者采訪了彈性云項目負責人鮑永成。此外,鮑永成將會在InfoQ主辦的 CNUTCon全球容器技術大會 上分享本次618大促的具體技術細節,歡迎關注。
受訪嘉賓介紹
鮑永成,京東彈性計算組項目負責人,帶領彈性計算團隊,深耕IaaS領域,致力于打造京東強大的虛擬化平臺。2013年初加入京東,重點在京東彈性云平臺系統研發,運營多個中大規模IaaS集群,包括(京東彈性云、公有云、混合云等產品),在OpenStack研發&性能優化、自動化部署、KVM、Docker、分布式系統等方面有一定的實踐經驗。
InfoQ:去年618的時候,我們就有聊過京東Docker的應用情況。您能對比去年618,介紹下今年的規模、應用以及調整嗎?
鮑永成:從數量上來講,去年618線上容器應對峰值為9853個實例,今年截止6月17日線上容器突破208220實例;在整體布局上來看,對比去年618,彈性云在規模上和業務全容器化實現戰略落地。
在應用層面,京東所有應用100%通過容器技術來發布和管理應用集群。值得指出一點:今年618有9879個容器實例支撐DB集群,對京東云數據庫提供非常便利的支持。
彈性云核心架構沒有很大變化,依然簡潔定義:彈性云=軟件定義數據中心+業務容器集群調度。在此基礎上,有兩點增強:
- 單個容器的穩定性和性能方面做了很大提升,有效滿足核心系統對計算和網絡的巨大需求;
- 統一管理物理機、虛擬機和容器,加入統一集群進行調度,以適應不同業務對計算資源的不同需求;
InfoQ:您能介紹下有哪些業務全量跑在Docker上嗎?為了迎接這樣的挑戰,架構做了哪些調整?
鮑永成 : 網站、交易、無線、微信手Q、數據庫等全部核心和非核心業務都跑在Docker上。
因為京東業務在多年前就開始微服務化治理,所以應用層架構調整很小。現如今微服務化比例已經很大,所以容器技術的融入比較順利。彈性云平臺,算是站在多年對各個業務系統微服務化治理的巨人肩膀上。
InfoQ:這么多容器,如何做到海量監控?采用了什么開源方案嗎?有哪些注意的事項?
鮑永成 : 監控采取自主研發系統,該系統負責海量數據采集和存儲工作,其構架如圖。
對于20W+容器監控,需要注意:指標采集傳輸一定要設計得非常高效,并且要做到采集過程對資源的消耗控制,建議使用加速告警和監控圖表跟蹤緩存狀況。
InfoQ:在洪峰來臨之時,彈性計算云平臺是如何進行擴容的?可以從系統角度分享下其中的流程嗎?
鮑永成 : 彈性云有兩種模式:
- 自動模式會根據每個業務方自己的預設彈性擴展條件,自動觸發擴容。擴容工作包括使用業務鏡像spawn實例、自動DB授權、微服務框架注冊、添加實例到LB負載。
- 手動模式的前提是有彈性事件被觸發,垂直運維收到擴展確認消息,人工參與的只是這個消息的點擊確認擴容環節,其后續流程與自動模式一致。
InfoQ:可以談談目前應用了哪些關鍵開源項目嗎?各自在系統的哪些level?對應的版本分別是什么?
鮑永成 :
- OpenStack-IceHouse 用于管理數據中心計算、網絡、存儲等資源,位于JD Data Center Operating System層。
- Docker-1.3用于spawn容器實例,加入很多自主研發的內容和功能。
InfoQ:這么多的容器,您覺得最大的挑戰是什么?
鮑永成 :
1. 集群規模 : 介于高效運維,彈性云集群走的是大集群架構的思路。單個OpenStack集群會建設得非常大,目前單集群規模控制在6千臺計算節點左右。
管理6K臺計算節點集群,僅僅使用原生OpenStack是很困難的,因此我們對OpenStack依賴的數據庫、MQ等全部重新設計實現,設計經過測試可以支撐1W臺計算節點。
2. 單實例性能調優 : 很多核心的業務對單個請求的響應時間有極其嚴格要求,這勢必要求彈性云提供的每一個容器實例均要具有極好的性能,我們從CPU和網絡兩方面入手。
針對CPU,我們采取Scale-up算法靈活調配CPU分配,使繁忙業務可以及時獲得足夠多CPU資源。
在網絡這塊,主攻方向為如何把萬兆卡的性能發揮出來。我們對OVS(Open vSwitch)做了一些改進:減少了一些鎖,優化peer port和網卡中斷。這帶來近乎物理機網卡的網絡性能。
InfoQ:這么大規模的Docker應用,在國內外都是屈指可數的。在整個容器化的進程,你們得到了什么,失去了什么?
鮑永成 :
收益 :
京東彈性計算云通過軟件定義數據中心與大規模容器集群調度,實現海量計算資源的統一管理,并滿足性能與效率方面的需求。
提升業務自助上線效率。
應用部署密度大幅提升,資源使用率提升,節約大量的硬件資源。
面臨一些規模性挑戰 :
內核因為bug升級;全部容器化后,底層依賴系統的版本高度一致,很容易帶來因為底層bug需要規模性升級,幸運的是我們在內核團隊建設這塊一直非常重視,已經有內核發布版本、內核熱patch等方式,有效解決此類問題。
InfoQ:在CNUTCon 2016全球容器技術大會上,你會重點分享哪些內容?
鮑永成 : 重點分享軟件定義數據中心、大規模容器集群調度以及Docker容器性能調優。
InfoQ:感謝鮑永成老師接受我們的采訪。期待您在 CNUTCon 2016全球容器技術大會 上的分享。
感謝郭蕾對本文的審校。
來自: http://www.infoq.com/cn/news/2016/06/jd-618-docker-cloud-practice