摘要:三私有代碼庫阿里云使用引言使用肯定離不開和代碼的集成。本著代碼可靠性,服務器穩定性,功能擴展性綜合對比,我們選擇使用阿里云的庫。
來自用戶的DevOps實踐分享,分享從開發代碼到生產環境部署的一條龍操作的實踐及經驗, 包含工具技術的選型及考量、私有代碼庫與私有鏡像庫的應用等。
(一)容器服務的Rancher選型 1、為什么說是下一代核心技術從互聯網的多次變革說起,早期的C/S架構,到后來的B/S架構,一直到現在最普遍的M/S架構,他們的背后都是技術不斷的優化改進,以適應、促進IT技術的發展整。體而言在過去10年間,互聯網技術可以說是以手工制造的方式為主,類似于傳統銷售、設計、制作、然后打包銷售。每個環節都需要大量的人員來操作,也需要不斷有人接班學習來延續對應的環節。而未來10年將會是以流水線的方式為主 ,其主要原因是互聯網云計算技術的高速發展及可持續快速交付的業務需求。其對應的DevOps方式將完美契合。開發運維一體化確切的說是一種方式,而這種方式需要全新的技術來支撐才行執行下去,我們將之稱為下一代核心技術。
2、傳統技術與下一代核心技術區別傳統的技術主要問題是高耦合,其耦合存在于服務器、硬件存儲、內外網之間(網絡通訊),存在于應用程序之間、代碼之間、業務模塊之間。雖然經過近幾年的發展,在不斷的去耦合化大趨勢下,已經盡可能的將這幾大塊之間進行低耦合處理,但是由于傳統技術的限制,無法從根本上解決這些問題。比如最常用的程序連接數據庫。傳統的方式多將數據庫連接字符串寫到程序的配置文件里,導致其連接數據庫IP不能變,多節點部署程序需要一一手動修改數據庫連接字符串,非常麻煩。隨著技術的發展優化,有經驗的研發人員會將數據庫連接放到JNDI里面(如Tomcat),由中間件管理,這樣將程序和數據庫之間進行解耦。這也是傳統技術架構常用的做法。但是對于多節點的部署變更,需要改變多個節點Tomcat的JNDI配置,還是存在易用性、可維護性、可靠性方面的問題。當然也有高級別的中間件來集中解決這些問題,如WebSphere的集群管理。但這都屬于為了解決問題而解決問題,受限于傳統技術,無法從根因上解決各個組件、軟硬件之間的耦合問題。而且需要商業付費,非常的貴。
下一代核心技術,受益于云計算、微服務、容器服務的高速發展,采取DevOps的模式進行整合,實現硬件服務器、存儲、網絡、軟件程序、代碼之間的全低耦合甚至0耦合,這將大大提高交付能力,降低運維成本,實現互聯網產品的快速迭代。
3、容器服務的Rancher選型我之前的文章已經對微服務做了基本分析,本章節及后續章節會陸續對云計算的分析應用和容器服務的分析應用做逐一的講解。微服務主要是對軟件代碼層面進行解耦,云計算主要從硬件支撐層進行解耦,而容器服務主要從應用層面進行解耦。容器服務的飛速發展,主要是Docker的巨大功勞,將傳統的虛擬化技術帶到一個全新的層面。Docker的優勢在此不做多講,主要是其原生的管理基于命令行,對于簡單應用較為方便。但是在DevOps模式下就需要有一整套的規范接口來統一管理整個流水線。對于Docker容器的管理系統目前比較流行的有幾個: K8S、Rancher、Shipyard等,其他還有一些不是很有名的在此不多做列舉了,大家可以自行研究學習。
經過對比試用選型,在容器管理考慮到易用性包括跨主機通訊的管理、DevOps的支持力度等方面,Rancher以各方面優先勝出。Rancher目前在開源社區非常火爆,支持眾多的編排引擎,當前最新版本為 1.6.12 ,大家可以下載試用。
(二)Rancher的應用及優點簡介 1、環境選擇安裝Rancher環境,一定要在干凈的linux主機上進行,避免出現因配置導致的莫名其妙的問題。服務器操作系統建議CentOS7.4(內核3.10以上),低于這個版本的系統 如7.3 7.2會報一個小bug,不過倒不影響使用,再低內核的版本就不要用了,很多都不支持。
生產環境建議采用阿里云 Rancher(1C 2G以上的配置,若要保證運行穩定,建議配置至少2C 4G),宿主機(1C 2G以上的配置)、彈性公網EIP+ 專有網絡測試,私有環境建議采用Rancher(1C 2G以上的配置),宿主機(1C 2G以上的配置)、 虛擬機(Hyper-V、VMware)+ 同一內網可通訊Rancher 1.6.12 ,調度引擎選擇Cattle。Rancher2.0調度引擎默認使用K8s,當前還是測試版,官方不建議在生產環境使用。
2、環境配置 3、安裝Dockerroot執行
curl https://releases.rancher.com/install-docker/17.06.sh | sh
配置加速器
重啟Docker服務
sudo systemctl daemon-reload sudo systemctl restart docker4、安裝Rancher管理端
登陸服務器Mgr01
運行完后,就可以通過IP:8888來訪問Rancher的管理臺了,接下來我們就可以點擊 “添加主機” 來添加各個宿主機了
5、加入宿主機依次登陸各個宿主機,執行5里面的腳本即可。
如果需要把mgr01加為宿主機,那么需要在4里面填寫mgr01和ws之間互通的內網IP地址,建議不要添加mgr為宿主機,方便后續做mgr集群高可用。
6、添加好的界面Rancher有很多好玩的、強大的功能,后續我們會逐一去發現講解。對于DevOps來講,原來可以這么簡單。
(三)私有代碼庫阿里云Git使用 1、引言使用DevOps肯定離不開和代碼的集成。所以要想跑通整套流程,代碼庫的選型也是非常重要的。否則無法實現持續集成。目前比較常用的代碼管理有SVN和Git,如果還使用SVN的,建議盡早遷移到Git上面,不然很費勁的。尤其是webhook,很多svn軟件都不支持。
2、Git選型可以采用公網的GitHub,這是用的最多的,但是免費賬號還是缺少很多功能,收費版功能更全的,但需要考慮公司的預算。
免費版需要自行架設,Gitlab CE和Bitbucket都可以。當然這又少不了一部分維護人員、設備,從而導致增加成本。
那么既然不愿意花錢,又想要好用的,我們就只能選型國內一些公司的Git服務了。本著代碼可靠性,服務器穩定性,功能擴展性綜合對比,我們選擇使用阿里云的Git庫。
優點:速度快速度快,不限空間,不限項目數。可以和阿里的相關產品無縫集成。
3、注冊使用打開 鏈接 自行注冊即可。使用方法就不說了,和GitHub一模一樣。性能,穩定性,都比較好。最重要的是在國內,速度非常快
4、代碼管理通過開發IDE工具,把應用代碼放到Git庫里面。比如我這里有個config的項目
5、代碼庫管理這時候看到Git服務端已經可以做代碼管理了
(四)私有鏡像庫阿里云Docker服務使用 1、使用阿里云鏡像庫有很多優點穩定可靠,阿里技術,放心使用。
國內cdn多節點加速,下載速度非常快
可以和阿里云Git代碼集成,不需要第三方CI工具
國內專屬加速器,一個人的專屬通道,國外需要FQ下載的鏡像,在這里統統可以搞定
阿里云端構建,不需要占用本地資源,全球網絡直達
免費,不限空間
2、注冊使用打開 鏈接 即可,有阿里云賬號可以直接登陸使用
3、配置加速器登陸自己的Rancher服務器mgr和ws節點,依次執行下列配置,把自己的docker加速器配置上。
4、這時候你就有了自己的私有鏡像庫可以使用docker標準的pull、push等進行鏡像推拉操作。
(五)微服務CI與Rancher持續集成 1、引言DevOps的核心魅力是快速的持續集成交付,降低研發和實施運維之間的交互,使得傳統的各種扯皮現象統統消失。最重要的是降低成本保障產品交付可靠性。
使用Rancher作為持續集成的關鍵環節,統一結連微服務和云計算,使得產品從研發到上線流水線操作,提高生產效率,此處我寫的是微服務而不是傳統的程序,是因為微服務(架構的產品)和容器服務、云計算是完美結合的三大核心模塊,也是互聯網下一代核心技術DevOps的3個核心支柱。而傳統程序,由于在微服務架構方面轉型較慢或者生態鏈較弱,無法完美進行DevOps。
2、集成說明本例集成代碼采用java微服務項目,可拋棄第三方集成組件如Jenkins,簡單高效。
實現提交代碼,即生產發布的全自動流程 (Code->Git repository->Docker repository->Rancher->Server)
3、配置自動CI登陸阿里云鏡像庫
選擇鏡像區域,如華南1.點擊“創建鏡像倉庫”
創建:命名空間,
倉庫名稱:你的項目名稱
源代碼選擇:阿里云Code或者其他的Git源
勾選:代碼變更時自動構建鏡像
路徑:/或者你代碼里Dockerfile文件的全路徑
標簽:latest或者自定義版本號
然后點擊:創建鏡像倉庫
只要提交代碼上來,服務器就會自動根據構建image鏡像
4、配置鏡像自動構建點擊剛創建的:server-config庫,管理,記錄下鏡像庫的地址,因為需要在接下來的Rancher中進行配置。
進入Rancher管理后臺-基礎架構-鏡像庫 -添加
添加成功后,Rancher就可以下載部署你的私有鏡像
接下來進入Rancher管理后臺 -API-WebHooks 添加一條接收器
名稱:隨意好記
類型:升級服務
參數格式:阿里云
標簽:latest
選擇器標簽:update=server-config
然后點擊:創建
復制保存:觸發地址
再次進入阿里云Docker管理服務后臺,可以看到構建里面的鏡像已經構建完畢。
我們點擊webhook,新增一條記錄
名稱:隨意
URL:剛才Rancher里面配置的觸發地址
標簽:latest
登陸Rancher管理后臺,開始部署我們的應用
新建服務
鏡像:剛建立的鏡像名稱
標簽:update=server-config
完成后,Rancher自動拉取鏡像庫的鏡像并部署
提交代碼。查看鏡像自動構建過程。完成后,查看Rancher的服務server-config自動升級。
至此,基于DevOps的全自動CI/DI發布已經實現。且不用配置Jenkins等復雜的集成組件。最重要的是:不需要自己的服務器,全部FREE。
這種集成適合于團隊內部進行了相關測試,最終交付的代碼已經是穩定可靠版、直接上生產的情況。其實這也是大多數中小型公司使用的方式,屬于半自動化,方便,靈活可控,可隨時中斷某個環節。
另外一種方式,是全部使用全自動化集成測試,同時包括自動化團隊溝通、同時多鏡像庫發布、自定義動作等。這個對公司IT能力水平要求較高,使用Pipeline Jenkins流水線發布。這個我會在隨后的博文里面給大家講。
(六)Rancher集中存儲及相關應用 1、前言為什么要使用集中存儲?使用集中存儲有個很大的優勢是數據安全和統一管理,和集群完美配合。產品集成存儲經歷
過幾個階段:
單機本機存儲。系統使用本地硬盤存儲
單網絡集中存儲。局域網主機使用同一網絡內的磁盤陣列存儲單元
分布式集群本地存儲。集群節點使用自己本地硬盤存儲。
分布式集群集中存儲。集群節點使用集中存儲(其背后可以是單一存儲也可以是分布式存儲,集中存儲相當于一個代理入口)
其中云計算用的最多的是 3、4,主要適應于網絡架構的分布式設計和基本云計算存儲,如多機房、多地存儲。使用集中存儲給運維帶來的最大優勢就是核心數據保存,不怕應用崩潰,各種docker容器都可以隨時拋棄、重建而不用擔心數據問題。
2、Rancher中使用集中存儲NFSRancher對Docker集群的管理已經是非常方便,默認是沒有加載共享存儲的,我們這里使用Rancher NFS插件來實現一個統一的存儲,當然也可以選擇其他的插件,目前官方只有這一個,其他非官方的如CephFS、FastDfs等請自行添加插件或自寫插件來實現,在此不做過多解讀。
點擊Rancher應用商店,搜索nfs,找到官方插件并添加
填寫主機地址:IP
目錄:建議不要填 / 而是指向NFS服務器存儲的一個目錄
ON_Remove: Purge: 刪除映射目錄時會刪除NFS遠程對應的數據 Retain:不刪除遠程數據
點“啟動”即可 ,Rancher會在各個宿主機上面添加NFS驅動
查看NFS驅動,每個宿主機都已啟動完畢
使用NFS:
我們在添加服務的時候,可以配置下卷name:/容器對應目錄
填logs:/opt/logs會對應遠程NFS里面新建的logs目錄
如果填/logs:/opt/logs則是常用的卷映射,會寫入宿主機本地的/logs目錄
驅動填寫默認的rancher-nfs
這樣,容器里面讀寫的文件就直接操作遠程Nfs服務器了
查看效果:
啟動應用后,容器的日志已經輸出到NFS里面了。
用途及注意事項:
主要是針對日志類的,可以統一做日志搜集。
針對于數據持久化的,如MySQL數據可以通過映射mysql/data:/var/lib/mysql把數據集中存儲到NFS上
注意:
集中存儲要考慮到同時讀寫的問題,即Lock。有的程序無法同用一套數據,這時候要考慮到多帶帶讀寫或放到多個變量子目錄,如MySQL無法同時起2個實例讀寫一套數據。
NFS插件還有不完善的地方,如只能映射目錄,無法映射文件,我們常用的-v /nginx.conf:/nginx.conf就無法使用了。
多NFS服務器配置,無法從UI界面添加,只能從YML文件來處理。
集中存儲一定要考慮速度問題,畢竟網絡傳輸沒有本地傳輸速度快,盡量選擇公有云/私有云網絡是走光纖通道的。盡量不要跨地域傳輸,如深圳的使用上海的NFS服務器
盡可能使用可靠性有保障的存儲,畢竟服務器、容器這些可以丟棄,但數據是要絕對安全的。推薦阿里云的NFS服務,可以保障9個9的安全性。
作者簡介鄭偉漪,深圳永達電子技術總監,負責公司互聯網產品架構和研發管理。對于微服務架構開發有豐富經驗,對互聯網技術的發展有獨到見解。曾服務神州數碼(中國)、華為、銀聯商務等互聯網產品。
本文版權歸作者所有,轉載請后臺留言。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/27183.html
摘要:給出的這份預測,包括了對等等分析,包含上下兩篇。左耳朵耗子個的技巧,中文譯為代碼審查,是指對代碼進行系統性的審查,通常是和其他開發者來共同進行。 2016 年的最后幾個工作日,我們對 flow.ci Android & iOS 項目做了一些優化與修復: iOS 鏡像 cocoapods 版本更新; fir iOS上傳插件時間問題修復; Android 編譯時,gradlew文件權限問...
摘要:攜程容器云實踐這篇文章介紹了攜程技術團隊容器云的相關實踐,包括實踐在線旅游與彈性需求容器云定位容器部署基本原則容器編排選型取舍容器網絡選型遇到的問題容器監控方案。 這周一,我們迫不及待寫下了最新的 changelog —— 項目語言新增「Java」。創建 Java 項目工作流和其它語言項目配置很相似,flow.ci 提供了默認的 Java 項目構建流程模版,快去試試吧~showImg(...
摘要:在貓屎氤氳的霧氣里角仰望天花板,手機微信提醒這次構建成功或失敗,并附帶污言穢語。這時他可以開始往工位走,坐下時,微信又會提醒本次部署到成功或失敗。與企業微信的集成在決定使用之前,需要知道的是,是一個高度依賴社區的項目。 前言 相信我,一切事情的發生都是趕鴨子上架,沒有例外。人類所有偉大的變革都是迫不得已,可又是那么順其自然。比如容器(docker)技術的誕生,比如箭在弦上的創業,比如野...
摘要:以上是的所有技術分享,如有問題,請聯系我們圍繞軟件工程效率提升進行一系列技術內容分享,包括國內外持續集成持續交付,持續部署自動化測試等實踐教程工具與資源,以及一些工程師文化相關的程序員。 五月一來,夏天便悄然而至。flow.ci 也帶來了幾個新的變化,幫你進一步優化開發工作流。一起來看看這幾個重點功能: 支持 iOS 項目 Xcode8.3 構建 iOSer 們重點來了,flow....
摘要:圍繞軟件工程效率提升進行一系列技術內容分享,包括國內外持續集成持續交付,持續部署自動化測試等實踐教程工具與資源,以及一些工程師文化相關的程序員。劃分了數據庫日志安全監控配置管理云服務等個大類,個工具。 CI Weekly 圍繞『 軟件工程效率提升』 進行一系列技術內容分享,包括國內外持續集成、持續交付,持續部署、自動化測試、 DevOps 等實踐教程、工具與資源,以及一些工程師文化相關...
閱讀 3178·2023-04-25 17:19
閱讀 625·2021-11-23 09:51
閱讀 1351·2021-11-08 13:19
閱讀 786·2021-09-29 09:34
閱讀 1685·2021-09-28 09:36
閱讀 1501·2021-09-22 14:59
閱讀 2718·2019-08-29 16:38
閱讀 2061·2019-08-26 13:40