WOT董明鑫:容器技術在雪球的實踐
原創【51CTO.com原創稿件】2018年5月18-19日,由51CTO主辦的全球軟件與運維技術峰會在北京召開。此次峰會圍繞人工智能、大數據、物聯網、區塊鏈等12大核心熱點,匯聚海內外60位一線專家,是一場高端的技術盛宴,也是***IT技術人才學習和人脈拓展不容錯過的平臺。
在“開源與容器技術”分會場,雪球 SRE 工程師董明鑫帶來了《容器技術在雪球的實踐》的主題分享,會后,51CTO記者根據董明鑫在WOT2018全球軟件與運維技術峰會的演講內容進行了整理。
【講師簡介】
董明鑫,雪球 SRE 工程師,主要負責保障雪球穩定性、提升資源利用率及提高開發效率等。關注容器生態圈的技術發展。
業務的發展需要容器技術
雪球最初是一個投資者社區。用戶在雪球可以關注全市場所有的投資品類,還可以基于行情進行交流,同時也可以快速獲取相關資訊。
有很多股民在雪球交流,甚至基于在雪球獲得的信息直接作出投資決策,這時,他們就有一個強烈的需求:購買股票!于是雪球與國內券商合作推出了滬深A股交易的業務。由于互聯網企業大部分都是在港美股上市,所以雪球還推出了港美股券商雪盈證券,滿足用戶交易港美股的需求。此外,雪球還做了持牌的基金代銷機構蛋卷基金。
基于社區,雪球業務衍生出一些其他商業化的項目:滬深A股交易、港美股交易、基金銷售、私募孵化器等。隨著業務的發展,不同業務之間受到影響的概率比較高,雪球希望業務之間不被相互打擾,為了滿足這種隔離的需求,雪球發現容器技術其實比較合適,因為容器本身鏡像比較小,比較靈活,啟動速度快,相比虛擬機,更適合雪球的業務發展,經過比較,雪球最終選擇了Docker。
在運行過程中,雪球發現,使用Docker需要解決的問題主要有三個:網絡連通性、多節點的服務部署更新、以及優秀的監控方案。
在實踐中演進
雪球在初期的網絡模式是一個二層互通的方案,這個方案的優點是與其它基礎設施直接可達,并且性能很高。缺點是管理復雜,需要管理 IP 地址和 MAC 地址;規模受限,容易引發網絡風暴;網絡隔離實現復雜。
在服務部署方面,雪球嘗試了虛擬機。虛擬機的優勢一是與原有基礎設施相比遷移成本低,二是相比物理機啟動快,沒有虛擬化的損耗,三是滿足了隔離的需求。缺點是遷移、擴容繁瑣;管理相對復雜,主要靠文檔記錄;基本沒有流程控制和權限控制。
面對這些缺點,雪球希望做一個平臺,實現容器的物理機管理、容器的管理,以及IP和MAC地址和流程控制的管理。于是,雪球變更了發布流程,如下圖所示。
發布流程
經過一段時間的使用,雪球發現自研的容器管理平臺雖然實現了流程控制與權限控制,并且將代碼與環境固化,使多版本鏡像管理方便了很多,部署效率和擴縮容效率都有所提升,但是,流程控制邏輯與機器管理、網絡管理之間耦合嚴重,而且,無法實現自動選擇物理機和自動分配容器 IP,沒有自愈功能。于是,雪球引入了Swarm,做了一個三層部署的模式。如下圖所示。
網絡模式 Downward Default
后期,雪球又對此進行了優化,更加自助化的流程解放了運維,加入了更好的調度方案,支持多機房多云環境。
***,雪球引入kubernetes,每一個項目里可能有多個互聯網數據中心(IDC),每一個IDC有不同的集群(Cluster),為每一個項目分配一個命名空間(Namespace),有自己的部署(Deployment)。由于Kubernetes本身的解決方案比較全,而雪球也已經有了很多解決方案,例如日志、負載均衡、監控等。如何才能更低成本的引入Kubernetes,而且讓開發盡量不要感知到,***的辦法是做合約的兼容性,最終,雪球只使用了Kubernetes的Deployment和HPA。
董明鑫***表示,雪球目前擁有一千多個容器,項目數量大概有一百多個,規模并不是很大。但是得益于容器技術,雪球部署的效率非常高,雪球的開發人員只有幾十個,但是每個月的發布次數高達兩千多次。
以上內容是51CTO記者根據雪球 SRE 工程師董明鑫在WOT2018全球軟件與運維技術峰會的采訪內容整理,更多關于WOT的內容請關注51cto.com。
【51CTO原創稿件,合作站點轉載請注明原文作者和出處為51CTO.com】