成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

58同城高可用Docker容器云平臺的技術演進之路

云計算
本文和大家分享在私有云平臺實施過程中的相關容器技術實踐,主要從以下三個部分來進行討論。

 58 私有云平臺是 58 同城架構線基于容器技術為內部服務開發的一套業務實例管理平臺。

它支持業務實例按需擴展,秒級伸縮,平臺提供友好的用戶交互過程,規范化的測試、上線流程,旨在將開發、測試人員從基礎環境的配置與管理中解放出來,使其更聚焦于自己的業務。

[[207200]]

本文和大家分享在私有云平臺實施過程中的相關容器技術實踐,主要從以下三個部分來進行討論:

  • 背景:當前存在哪些問題,為什么使用容器技術。
  • 整體架構:整個容器技術的架構方案。
  • 核心模塊的設計方案:一些核心模塊的選型決策與解決方案。

為什么使用容器技術

在沒有用容器化技術之前,我們存在這些問題:

01資源利用率問題

不同業務場景對資源的需求是不一樣的,有 CPU 密集型、內存密集型、網絡密集型,這就可能導致資源利用率不合理的問題。比如,一個機器上部署的服務都是網絡密集型,那么 CPU 資源和內存資源就都浪費了。

有些業務可能只聚焦于服務本身而忽略機器資源利用率的問題。

02混合部署交叉影響

對于線上服務,一臺機器要混合部署多個服務,那么服務之間可能存在相互影響的情況。

比如,一個服務由于某些原因突然網絡流量暴漲,可能把整個機器的帶寬都打滿,那么其他服務就會受到影響。

03擴/縮容效率低

當業務節點需要進行擴/縮容時,從機器下線到應用部署、測試,周期較長。當業務遇到突發流量高峰時,機器到手部署后,可能流量高峰已經過去了。

04多環境代碼不一致

由于過去內部開發流程的不規范,存在一些問題,業務提測的代碼在測試環境測試完畢后,在沙箱可能會進行修改、調整,然后再打包上線。

這就會導致測試的代碼和線上運行的代碼是不一致的,增加了服務上線的風險,也增加了線上服務故障排查的難度。

05缺少穩定的線下測試環境

在測試過程中,會遇到一個問題,服務依賴的其他下游服務都沒有提供穩定的測試環境。

這導致無法在測試環境模擬整個線上流程進行測試,所以很多測試同學會用線上服務進行測試,這里有很高的潛在風險。

為了解決上述問題,架構線云團隊進行了技術選型與反復論證,最終決定使用 Docker 容器技術。

58 私有云整體架構

58 私有云的整體架構如下圖:

01基礎設施

整個私有云平臺接管了所有的基礎設施,包括服務器、存儲和網絡等資源。

02容器層

基礎設施之上提供了整個容器初始化層,容器初始化層包含 Kubernetes、Agent、IPAM;Kubernetes 是 Docker 的調度和管理組件。

Agent 部署在宿主機上,用于系統資源和底層基礎設施的管理,包含監控采集、日志采集、容器限速等。IPAM 是 Docker 的網絡管理模塊,用于管理整個網絡系統的 IP 資源。

03資源管理

容器層之上是資源管理層,包含容器管理、縮擴容、回滾降級、上線發布、配額管理、資源池管理等模塊。

04應用層

運行用戶提交的業務實例,可以是任意編程語言。

05基礎組件

私有云平臺為容器運行環境提供必備的基礎組件,包含服務發現、鏡像中心、日志中心、監控中心。

06服務發現

接入云平臺的服務提供統一的服務發現機制,便捷業務接入云平臺。

07鏡像中心

存儲業務鏡像,分布式存儲,可彈性擴展。

08日志中心

中心化收集業務實例日志,提供統一的可視化入口,方便用戶分析與查詢。

09監控中心

匯總全部的宿主和容器監控信息,監控視圖化,報警定制化,為智能化調度提供基礎。

10統一門戶

可視化的 UI 門戶頁面,規范化整個業務流程,簡潔的用戶流程,可動態管理整個云環境的所有資源。

全新的架構帶來全新的業務流轉方式:

平臺定義了四套基礎環境:

  • 測試環境:測試人員進行功能測試,對接到線下環境。
  • 沙箱環境:程序預發布環境,對接到線上環境。
  • 線上環境:提供服務的線上環境。
  • 穩定環境:運行在線下環境的實例,為其他上游服務提供穩定的測試環境實例。

業務基于 SVN 提交的代碼構建鏡像,鏡像的整個生命周期就是在 4 個環境中流轉。因為是基于同一個鏡像創建實例,所以可以保證測試通過的程序與線上運行的程序是完全一致的。

核心模塊的設計方案

開發 58 私有云平臺需要考慮很多細節,這里主要和大家分享下其中的五個核心模塊:

  • 容器管理。
  • 網絡模型。
  • 鏡像倉庫。
  • 日志收集。
  • 監控告警。

有了這幾個核心模塊,平臺就有了基礎框架,可以運轉起來。

01容器管理

我們調研的基于 Docker 的管理平臺主要有三個:Swarm、Mesos、Kubernetes,通過對比,我們最終選擇了 Kubernetes。

Swarm 功能過于簡陋,所以最早就 pass 了,Mesos + Marathon 是一個成熟的解決方案,但是社區不夠活躍,而且使用起來要熟悉兩套框架。

Kubernetes 是專門針對容器技術提供的調度管理平臺,更專一,社區非常活躍,配套的組件與解決方案較多,使用它的公司也越來越多,通過和一些公司溝通,他們也在逐步的將 Docker 應用從 Mesos 遷移到 Kubernetes 上。

下面表格為我們團隊關注點的一些對比情況:

02網絡模型

網絡模型是任何云環境都必須面對的問題,因為網絡規模一旦擴大之后,會帶來各種問題。網絡選型這塊,針對 Docker 和 Kubernetes 的特性,對六種組網方式進行了對比,如下所示:

針對每種網絡模型,云團隊都做了相應的性能測試,Calico 除外,因為公司所用的機房不支持開啟 BGP 協議,所以沒有進行測試。

iPerf 測試網絡帶寬結果如下:

Qperf 測試 TCP 延遲結果如下:

Qperf 測試 UDP 延遲結果如下:

 

通過測試結果可以看出:Host 模式和 Bridge 模式性能與宿主機是最接近的,其他組網模式還是有一些差距的,這和 Overlay 的原理有關。

私有云平臺最終選擇了 Bridge + VLAN 的組網方式,原因如下:

  • 性能較好,組網簡單,可以與現有網絡無縫對接;可以很好的實現容器與容器、容器與宿主互通。
  • 故障易于調試,傳統的 SA 即可解決;適應任意物理設備,可大規模擴展。
  • 公司內部服務之間都是基于 RPC 協議,有自己的服務發現機制,可以很好的兼容;現有內部框架改動小。

由于 VLAN 最多有 4096 個,所以 VLAN 是有個數限制的,這也是為什么會有 VLAN 的原因。

在云平臺當前的網絡規劃中,VLAN 是夠用的,未來隨著使用規模的擴大,技術的發展,我們也會深入研究更合適的組網方式。

網上也有同學反饋 Calico 的 IPIP 模式網絡性能也很高;但是考慮到 Calico 當前的坑比較多,需要有專門的網絡組來支撐,而這塊是云團隊所欠缺的,所以沒有深入調研。

這里還有一個問題,默認的使用 Bridge 模式是每個宿主機配置不同網段的地址,這樣就可以保證不同宿主機上為容器分配的 IP 不沖突,但是這樣也會導致出現大量的 IP 浪費。

機房的內網環境 IP 資源有限,沒有辦法這樣配置網絡,所以只能開發 IPAM 模塊進行全局的 IP 管理。

IPAM 模塊的實現參考了開源項目 Shrike 的實現,將可分配的網段寫入 etcd 中,Docker 實例啟動時,會通過 IPAM 模塊從 etcd 中獲取一個可用 IP,在實例關閉時,會對 IP 進行歸還,整體架構如下所示:

另外,由于 Kubernetes 不支持使用 CNM,所以我們針對 Kubernetes 源碼進行了修改。網絡方面還有一個點需要考慮:就是網絡限速。

03鏡像倉庫

Docker 的鏡像倉庫使用官方提供的鏡像倉庫,但是后端提供的存儲系統我們進行選型,默認的存在本地磁盤的方式是無法應用到線上系統的。具體的選型如下:

 

通過對比,可以看出 Ceph 是最合適的,但是最終云團隊選擇使用 HDFS 作為鏡像倉庫的后端存儲,原因如下:

  • Swift 是官方默認提供支持的存儲類型,但是搭建一套 Swift 并保證其穩定運行需要專人深入研究,由于人員有限所以暫沒使用,Ceph 也是基于同理沒有進行選擇。
  • HDFS 系統公司有專門的數據平臺部門在管理和維護,他們更專業,云團隊可以放心的將 Docker 鏡像托管到 HDFS 上。

但是 HDFS 本身也存在一些問題,比如壓力大時,NameNode 無法及時響應,未來我們會考慮將后端存儲遷移到架構線部門內部自研的對象存儲中,以提供穩定高效的服務。

04日志系統

傳統服務遷移到容器環境,日志是一個大問題。因為容器即用即銷,容器關閉后,容器的存儲也會被刪除。

雖然可以把容器中的日志導出到宿主機上的指定位置,但是容器會經常漂移,在排查故障時,我們還需要知道歷史上的某一時刻,某個容器在哪臺宿主機上運行,并且由于使用方沒有宿主機的登陸權限,所以使用方也沒法很好的獲取日志。

在容器環境下,需要新的故障排查方式。這里,一個通用的解決方案就是采用中心化的日志解決方案,將零散的日志統一進行收集存儲,并提供靈活的查詢方式。

私有云平臺采用的方案如下:

使用方在管理門戶上配置要采集的日志,私有云平臺通過環境變量的方式映射到容器中,宿主機上部署的 Agent 根據環境變量獲取要采集的日志,啟動 Flume 進行采集。

Flume 將日志統一上傳到 Kafka 中,上傳到 Kafka 中的日志保證嚴格的先后順序。

Kafka 有兩個訂閱者,一個將日志上傳到搜索服務中,供管理門戶查詢使用;一個將日志上傳到 HDFS 中,用于歷史日志的查詢和下載,使用方也可以自己編寫 Hadoop 程序對指定日志進行分析。

05監控告警

資源的監控和報警也是一個云平臺必不可少的部分。針對容器的監控有很多成熟的開源軟件可供選擇,58 內部也有專門的監控組件,如何更好的監控,云團隊也進行了相應的選型。

最終,云團隊選擇使用 WMonitor 來作為容器的監控組件,因為 WMonitor 本身集成了物理機和報警邏輯,我們不需要再做相對應的開發,只需要開發容器監控部分的組件,并且針對內部的監控需求,我們可以很好的進行定制。

Heapster + InfluxDB + Grafana 是 Kubernetes 官方提供的監控組件,規模小時用它也沒有問題,但是規模大時使用它可能會存在問題,因為它是輪詢獲取所有節點監控信息的。

后記

以上內容是 58 同城架構線針對容器技術如何落地進行的相關探索,很多技術選型無關優劣,只選擇適合 58 相關應用場景的。整個云平臺要解決的技術點有很多,這里選取了其中幾個關鍵的點和大家進行分享。

 

責任編輯:武曉燕 來源: 58架構師微信公眾號
相關推薦

2023-02-01 10:11:06

轉轉容器日志

2019-11-21 09:49:29

架構運維技術

2023-08-28 16:10:00

容器化DockerKubernetes

2015-07-17 08:23:06

品高云計算

2017-01-06 08:37:13

大數據高可用計算

2024-03-29 13:25:12

互動玩法直播

2020-06-03 07:59:12

2015-10-27 10:33:03

架構設計演進

2014-11-20 10:55:47

Docker容器技術虛擬化

2023-03-16 07:20:15

大數據平臺云數據

2024-07-17 11:40:58

2016-08-16 17:44:19

華為

2015-09-21 15:00:54

聯想OpenStack企業云平臺

2019-12-20 10:45:47

Kubernetes容器網絡

2013-03-21 10:32:59

視訊云阿里云云平臺

2022-06-02 12:56:25

容器網絡云原生

2023-07-02 11:14:21

工具TypeScript框架

2018-06-28 15:18:01

餓了么容器云計算

2021-09-16 16:15:14

Linux設備虛擬化機器模擬器

2021-09-01 10:59:28

可信云
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 国产在线精品一区 | 在线婷婷 | 国产欧美在线视频 | 成人国产精品 | 一区二区日韩 | 亚洲成人精品一区 | 天天干精品 | 国产精品一区一区三区 | 色资源在线 | 精品久久99 | 欧美精品一区二区三区在线 | 亚洲一区二区三区四区五区中文 | 天天躁日日躁狠狠躁2018小说 | 精品国产免费人成在线观看 | 亚洲视频中文字幕 | 91视频在线 | 九九热精品在线视频 | 日本精品一区 | 久草在线免费资源 | 一区二区三区四区毛片 | 日韩欧美国产综合 | 色婷婷av777 av免费网站在线 | 亚洲成人精品国产 | 成人依人 | 青青草综合 | 亚洲日本免费 | 午夜视频一区 | 国产精品久久精品 | 精品无码久久久久久久动漫 | 日韩三区在线观看 | 在线视频国产一区 | 国产一区二区三区久久 | 国产网站在线免费观看 | 四虎影视一区二区 | 国产乱码精品一区二区三区中文 | 亚洲午夜在线 | 国产在线97 | 欧美日高清 | 日韩精品极品视频在线观看免费 | 日日精品 | 九九亚洲 |