摘要:我們為什么需要鄭昀創建于關鍵詞容器虛擬機私有云配置管理部署發布年年底,我們開始試著將原有的持續集成和持續發布流程,從遷移到上。累覺不愛的部署環境維護傷不起一線互聯網公司的技術團隊紛紛夸耀自己在生產環境發布的頻次。
——我們為什么需要 CloudEngine?
鄭昀 創建于2016/7/31
關鍵詞: 容器、Docker、OpenStack、虛擬機、私有云、Mesos、配置管理、部署、發布
2014年年底,我們開始試著將原有的持續集成和持續發布流程,從 OpenStack 遷移到 Docker 上。后來,我整理過兩篇文章講容器私有云和持續發布都要解決哪些基礎問題(I,II)。
現在,OpenStack 又回來了,與 Docker 并肩作戰。不管是容器化 OpenStack,還是 Docker 集群,做到這一步就解決問題了嗎?
我們要的不僅僅是容器或虛擬機
我們都知道,Docker 實現的只是鏡像內部的小環境的一致性,它保證了一個應用程序在不同機器上運行時的一致性。
就我們之前持續經營了五年之久的 O2O 電商平臺而言,首先它存在多條業務線:
團購
POP 平臺
電影訂座
網店通
……
其次,它打通了供應鏈管理的全鏈條,從商機管理,銷售行動管理,簽約,終端設備鋪設,……,到與商戶的資金結算,與銷售體系的傭金計算,與第三方支付的自動對賬,與流量渠道的傭金對賬,各種平臺收費的核帳和攤銷等等,加上外圍技術支撐體系(如天機和鷹眼),里里外外大約近百個 Java 和 PHP 工程,每個工程都是集群。
這還不算上那些開源組件所需的集群,如 ZooKeeper,Redis, MyCat,Elastic Search,還不算上商業智能的那套體系。
所以才云科技的張鑫說得對:
然而大中型企業用戶很快意識到,真正的難點在于如何保證“大環境”一致,即整個業務系統中眾多容器、組件、服務之間如何配置、互聯、依賴,如何保證開發、測試、生產環境能相互轉化、克隆等。這些環境和配置在容器概念之上,是容器自身無法解決的,只能依賴集群層面的管理工具。
是的,給你一堆虛擬機,給你鏡像庫和一堆容器,你仍然很難構建出能 Run 起來的業務系統。
累覺不愛的部署環境維護傷不起
一線互聯網公司的技術團隊紛紛夸耀自己在生產環境發布的頻次。無疑,一天之內發布頻次越高,同時發布質量還很穩定,意味著技術管理水平越高超。
好吧,假定我們僅僅是每周發布一個常規版本(少則幾個工程,多則幾十個工程),每日可能有幾次 hotfix。那么在生產環境中,部署時間 30 分鐘 還是 2 小時,區別不大,畢竟部署是一次性的工作。
但對于開發聯調和測試來說,就完全不一樣。如果 1 分鐘就能完成一次部署,信手拈來,毫無心理負擔,可以測試驗證的東西,和幾個小時才能完成一次的部署,差異是巨大的。
說白了,分布式系統的線下環境維護,做過的人都知道,傷不起。
你家的業務系統能DRP嗎?如何快速重建
何謂 DRP?
Disaster Recovery Plan,災難恢復計劃是也。
2011年藝龍曾經因為 EMC 存儲設備故障而連續 27 個小時無法對外提供服務,在此之后他們做了相應的規范和開發,我去年看到一份資料說,藝龍可以在 30 分鐘內異地重建集群。此后適逢著名的攜程 5·28 停服 11 個小時的大事件,驚嚇之余我們啟動了 DRP 計劃。
DRP 涵蓋的事務有:
代碼
配置
數據
DRP 面對的災難場景:
生產機房物理毀滅,或短時間內網絡不通(如光纜被挖斷)
線下機房毀滅
想想看,如果你有一整套研發測試運維流程規范,還有:
代碼庫備份,
鏡像庫(包括了基礎鏡像)備份,
分環境的配置管理(一個環境對應一套持久化配置中心),
運維層面的 CMDB 備份,
數據庫備份(跨機房數據同步),
在虛擬機和容器集群之上的集群管理工具
那 DRP 可能真的是水到渠成。
大前提:配置管理規范配置與代碼分離
前面說過,給你 OpenStack 和 Docker,你也很難快速構建出可運行的業務系統,那該怎么辦?
首先我們要明白,要做到真正的大環境一致,必須將配置完全與代碼分離,這里的配置不僅僅是服務之間的 IP 地址/內部域名/自動發現,還包括不同環境下不同應用的配置參數等。
我們要求的是,線下測試環境測試通過的包(或鏡像),可以直接上預發環境,上生產環境,一路穿行沒有障礙。
我們不希望看到的是,不同環境需要打不同的包/鏡像。
因此,首先我們要一套環境對應一個持久化配置中心,與環境有關的參數都存儲在配置中心里。
其次,每個應用都有自己的配置模板,不同環境部署的應用默認繼承配置模板,人們可以通過集群管理工具(或配置中心的管理界面)對本環境配置做一些微調。
自研的 Java/PHP 工程,中間件,開源組件,這些都叫“應用”。
我們在集群管理工具里,操作的對象是“應用”而不是裸機(當然你也能申請裸虛擬機)。
重要的是,將鏡像的構建與代碼庫的分支構建整合。
想想看,
你自己的應用,應用的元信息里已經指定好了代碼倉庫地址,你本次只需要指定分支(一套環境對應一個分支,如測試環境對應于測試分支),選擇虛擬化技術(虛擬機還是容器),指定節點數量;
開源組件,比如你選擇構建一個 Redis 集群,你只需要選擇相應的鏡像,指定節點數量,微調下配置;
幾分鐘后一切成為現實,網絡已經配置好了,內部域名就位,你能立刻開始聯調測試,是不是很美好?
背后對應哪些事情?我們以阿里的 ACP 給應用分配虛擬機資源為例吧:
分配機器
服務器初始化
創建安全掃描黑盒任務
添加監控
添加ssh
安裝ccbin
安裝httpd/jboss/tomcat/resin等
安裝jdk
安裝acc
初始化sharedata
下載代碼/鏡像
下載額外流代碼
配置assert
獲取antx
初始化template目錄
初始化uiweb
build
部署前自檢
deploy
checkservice
我們的應用申請容器資源,背后的步驟大致為:
發送容器創建請求
從 iDB(注:自研的數據庫自動化運維系統) 獲取數據源配置:這樣應用訪問哪些數據庫,用什么工程帳號,都自動解決了;
上傳配置(含要注入的環境變量)和 Dockerfile 至 Git
創建 Jenkins Job
從 TouchStone(注:自研的容器私有云管理系統) 獲取配置
下載代碼
編譯
打包
構建 Docker 鏡像
鏡像上傳
部署信息結果處理
Haproxy 配置文件生成
Marathon 鏡像創建
DNS 配置
checkservice
容器創建結果返回
還要考慮什么?大致想來,集群管理工具還需要解決:
灰度發布;
安全管理:如何在虛擬機和容器的基礎上做好安全檢測,就像上面阿里 ACP 的“創建安全掃描黑盒任務”之類的步驟一樣;
……
上面說了這么多,這個集群管理工具就是我們的 CloudEngine,之前我在《CloudEngine:大殺器如何煉成》里介紹過。
-EOF-
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/26653.html
摘要:這么思考問題的原因也很簡單,我們篤信工程師文化,靠技術而不是管理解決問題,正如陳皓同學所言如果你是一個技術公司,你就會更多的相信技術而不是管理。 鄭昀 創建于2017/3/8 最后更新于2017/3/10 關鍵詞:研發協作,Docker,環境變量,開發聯調,環境維護,虛擬機,中間件,配置與代碼分離,git,jenkins 開發聯調,測試,預發,生產,稍微上規模的互聯網技術團隊,每一次...
摘要:這么思考問題的原因也很簡單,我們篤信工程師文化,靠技術而不是管理解決問題,正如陳皓同學所言如果你是一個技術公司,你就會更多的相信技術而不是管理。 鄭昀 創建于2017/3/8 最后更新于2017/3/10 關鍵詞:研發協作,Docker,環境變量,開發聯調,環境維護,虛擬機,中間件,配置與代碼分離,git,jenkins 開發聯調,測試,預發,生產,稍微上規模的互聯網技術團隊,每一次...
摘要:如今,跨境電商市場上,獨立站似乎出現了重新繁榮的跡象。區別于中國國內電商市場被巨頭壟斷的格局,在跨境出口電商市場,亞馬遜等第三方平臺尚未形成壟斷,這讓獨立站有了更多發展空間和機會。如今,跨境電商市場上,獨立站似乎出現了重新繁榮的跡象。一方面源于平臺電商規則的收緊,給鋪貨型賣家帶來了巨大壓力,經營環境的變化使獨立站成為了這些賣家的必要選擇。另一方面,Anker、SHEIN等品牌的成功出海,對于...
摘要:年,七牛收入較增幅超過,企業用戶數突破萬,平臺上總文件數達億,月活躍終端數億,相當于覆蓋的中國網民。自月日起,七牛宣布海外全面降價,以下是最新價格詳情 showImg(https://segmentfault.com/img/bVsy3A); 2015年,七牛收入較2014增幅超過500%,企業用戶數突破40萬,平臺上總文件數達1600億,月活躍終端IP數3.76億,相當于覆蓋50%的...
摘要:在里面,最大的改變使運行時的成為可能。缺省情況下,將會在方法中計算這些,通過在加載這兩個類進入虛擬機時,使用反射來計算。通過重寫方法,更正獲取的方式,改成使用指定的方式進行。 Grays Anatomy源碼淺析 標簽(空格分隔):JAVA JVM 問題排查 在知乎上看到一個問題,被R大推薦了這個線上排查的工具,就下來用了用,感覺還不錯,知道是Java寫的后,就行看看源碼,相關知識比較...
閱讀 1787·2021-11-25 09:43
閱讀 15421·2021-09-22 15:11
閱讀 2632·2019-08-30 13:19
閱讀 2015·2019-08-30 12:54
閱讀 1821·2019-08-29 13:06
閱讀 930·2019-08-26 14:07
閱讀 1621·2019-08-26 10:47
閱讀 3037·2019-08-26 10:41