《大規模云上調度實踐(25頁).pdf》由會員分享,可在線閱讀,更多相關《大規模云上調度實踐(25頁).pdf(25頁珍藏版)》請在三個皮匠報告上搜索。
1、大數據在物流行業應用突破張磊韻達快運集團 高級總監大規模云上調度實踐一、韻達上云分享二、云上資源調度實踐三、未來與挑戰目 錄content韻達上云分享:進度簽約整體上線深度合作2015/12/292016/3/18合作探討方案論證項目立項系統拆分系統改造專線建立整體上云架構優化云上數據直推(已上線)基于日志全鏈路系統與業務監控(進行中)地址清洗/地盤服務/地址聚合大數據分析韻達上云分享:混合云架構IDC(上海)Oracle應用層數據層數據庫應用B區機房A區機房ESS彈性伸縮組ALIYUN VPC讀寫SLB主備RDSRedis MQ專線專線TMSSAPOMS WMS CODCOD WMS OMS
2、上海域香港域備RDS主SLBA/B區機房官網韻達上云分享:碰到哪些問題?如何解決?數據遷移:部分數據庫數據量TB級別,直接利用DTS遷移線上數據庫,會對線上造成影響。1)中間庫:云上ECS上安裝MYSQL,作為云下MySQL的備庫;2)目標RDS:使用DTS,從中間庫向目標RDS進行數據同步(含數據遷移);本方案可同時實現存量數據遷移、增量數據同步到云上,數據同步的網絡延遲毫秒級(DTS同步速度理論上可達到70Mbps)ALIYUN VPCMySQLMySQL 備庫DTS主從復制主從復制目標RDSIDC(上海)韻達上云分享:成本與效益人員投入2人(物流云)6人(韻達)上云項目周期2個月云資源使
3、用成本相比之前自建硬件投入成本下降So easy!云上運維二、云上資源調度實踐變革軟件交付方式的技術:Docker-“沒有集裝箱,不可能有全球化?!盌ocker基于容器技術的輕量級虛擬化解決方案Docker是容器引擎,把Linux的cgroup、namespace等容器底層技術進行封裝抽象,為用戶提供了創建和管理容器的便捷界面(包括命令行和API)Docker 是一個開源項目,誕生于 2013 年初,基于 Google 公司推出的Go 語言實現微軟,紅帽Linux,Oracle等主流IT廠商在各自產品增加對Docker的支持。什么是Docker?Docker會在隔離的容器中運行進程。當運行do
4、cker run命令時,Docker會啟動一個進程,并為這個進程分配其獨占的文件系統、網絡資源和以此進程為根進程的進程組。在容器啟動時,鏡像可能已經定義了要運行的二進制文件、暴露的網絡端口等,但是用戶可以通過docker run命令重新定義(譯者注:docker run可以控制一個容器運行時的行為,它可以覆蓋docker build在構建鏡像時的一些默認配置。Docker原理作為一種新興的虛擬化方式,Docker 跟傳統的虛擬化方式相比具有眾多的優勢。首先,Docker 容器的啟動可以在秒級實現,這相比傳統的虛擬機方式要快得多。其次,Docker 對系統資源的利用率很高,一臺主機上可以同時運行
5、數千個 Docker 容器。容器除了運行其中應用外,基本不消耗額外的系統資源,使得應用的性能很高,同時系統的開銷盡量小。傳統虛擬機方式運行 10 個不同的應用就要起 10 個虛擬機,而Docker 只需要啟動 10 個隔離的應用即可。為什么要使用Docker?對開發和運維(devop)人員來說,最希望的就是一次創建或配置,可以在任意地方正常運行。開發者可以使用一個標準的鏡像來構建一套開發容器,開發完成之后,運維人員可以直接使用這個容器來部署代碼。Docker 可以快速創建容器,快速迭代應用程序,并讓整個過程全程可見,使團隊中的其他成員更容易理解應用程序是如何創建和工作的。Docker 容器很輕
6、很快!容器的啟動時間是秒級的,大量地節約開發、測試、部署的時間。更快速的交付和部署對比傳統虛擬機總結Docker虛擬機啟動速度秒級分鐘級復雜度基于內核的namespace技術,對現有基礎設施的侵入較少部署復雜度較高,并且很多基礎設施不兼容執行性能在內核中實現,所以性能幾乎與原生一致對比內核級實現,性能較差可控性依賴簡單,與進程無本質區別依賴復雜,并且存在跨部門問題體積與業務代碼發布版本大小相當MB級別GB級別并發性可以啟動幾百幾千個容器最多幾十個虛擬機資源利用率高低搭建開發環境安裝web容器安裝數據庫分配網絡開發測試編碼測試安裝web容器安裝數據庫分配網絡上線生產搭建開發環境安裝web容器安裝
7、數據庫分配網絡SAP測試環境安裝SAP系統測試安裝SAP系統生產SAP生產環境SAP開發環境安裝SAP系統開發共享NFS文件系統版本管理傳輸傳輸傳統型軟件開發、測試、上線過程1、資源利用效率低2、單物理機多應用無法有效隔離(進程空間,cpu資源,磁盤)3、運維部署不便4、測試、版本管理復雜5、遷移成本高6、傳統虛擬機,空間占用大,啟動慢,管理復雜傳統型軟件開發、測試、上線過程不足之處Docker倉庫群開發(本地)獲取鏡像開發測試提交倉庫測試機(公用)獲取鏡像驗證測試生產機集群獲取鏡像部署備份以Docker為單位的開發部署流程設計應用Docker化交付的過程代碼:/src/mainweb.xml
8、一個描述文件 環境定義:OS版本 中間件類型 環境變量配置 編譯之后的應用包 運行鏡像:container container 1.應用級別的依賴怎么辦?比如,一個應用依賴一個mysq數據庫。docker官方提供docker-compose解決這個問題,管理docker image2.用來docker image的編排(1)write your dockerfile(2)write your compose.yml filecompose.yml管理多個image,管理image啟動順序等,然后要把多個image一起運行只需要用一個命令就可以全部運行起來Docker-compose描述依賴環境
9、用Docker描述集成/運行環境Docker踩過的“坑”1.dockerfile不要放到代碼根目錄下docker編譯dockerfile時,會把dockerfile同級目錄所有文件傳遞給docker deamon,避免大量文件傳遞給docker deamon,導致內存爆掉2.Dockerfile行數盡可能少,否則最終生成的鏡像會很大3.Dockerfile注意字符編碼環境變量以及時區設置1.安全性問題。docker目前并不能分辨具體執行指令的用戶,只要一個用戶擁有執行docker的權限,那么他就可以對docker的容器進行所有操作,不管該容器是否是由該用戶創建。比如A和B都擁有執行docker
10、的權限,由于docker的server端并不會具體判斷docker client是由哪個用戶發起的,A可以 刪 除 B 創 建 的 容 器,存 在 一 定 的 安 全 風 險2.docker目前還在版本的快速更新中,細節功能調整比較大。一些核心模塊依賴于高版本內核,存在版本兼容問題Docker相對虛擬機不足之處三、未來與挑戰完整的容器持續交付流程未來與挑戰:TODO優化:Docker本身的性能優化比如:dockercontainer 在stdout/stderr有大量數據傳輸會導致內存泄露監控:服務級別的監控負載均衡:容器根據機器負載情況自動遷移統一管理頁面:統一的根據服務來管理的WEB頁面微服務:應用程序功能模塊拆分,適應Docker?