日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

一步步实施 DevOps (三)

發布時間:2025/3/21 编程问答 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 一步步实施 DevOps (三) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

2019獨角獸企業重金招聘Python工程師標準>>>

Netkiller Management 手札

Mr.?Neo?Chan,?陳景峯(BG7NYT)

中國廣東省深圳市望海路半島城邦三期
518067
+86?13113668890

<netkiller@msn.com>

Copyright ? 2010-2018 netkiller

版權聲明

轉載請與作者聯系,轉載時請務必標明文章原始出處和作者信息及本聲明。

?
http://www.netkiller.cn
http://netkiller.github.io
http://netkiller.sourceforge.net
?
微信訂閱號 netkiller-ebook (微信掃描二維碼)
QQ:13721218 請注明“讀者”
QQ群:128659835 請注明“讀者”

請首先閱讀:

  • 一步步實施 DevOps (一)
  • 一步步實施 DevOps (二)
  • ?

    Jenkins 不是 DevOps

    持續集成是一種軟件開發實踐,即團隊開發成員經常集成他們的工作,通常每個成員每天至少集成一次,也就意味著每天可能會發生多次集成。每次集成都通過自動化的構建(包括編譯,發布,自動化測試)來驗證,從而盡快地發現集成錯誤。

    持續集成可以解決什么問題:

  • 能驗證代碼是否可以正常編譯
  • 驗證組建或模塊是否能夠集成
  • 驗證自動化測試用例是否正常運行
  • 測試環境的部署
  • 持續集成不能解決什么問題:

  • 生產環境的發布
  • 部署失敗后回撤
  • 不能構建環境,雖然支持 Docker
  • 持續集成智能單向操作,代碼->構建->測試->部署 等等。持續集成中我們遇到很多問題

    例如就是通過 git hook 觸發 Jenkins 實現持續集成,自動構建項目。問題來了,任何提交都會觸發一次 pipeline 腳本,當項目頻繁提交時,第一個構建過程還未運行完畢,第二個進程便啟動。導致構建排隊,阻塞,同時 pipeline 可能會爭奪資源(多個進程讀寫同一個文件),產生沖突,輕則稍等片刻,重則測試環境崩潰。

    另外通過CI 持續集成部署代碼也不靠譜,會出現和上面相同問題,例如第一個進程用 scp 復制 jar 包到遠程主機,還未傳輸完成,第二個進程便做同樣的操作。

    還有 第一個進程重啟 tomcat ,tomcat 還未停止退出,第二個請求便發出。最終導致 tomcat 崩潰。

    以上的特性,你敢在生產環境上使用嗎?一旦發布失敗,或者需要回撤,持續集成并沒有很好的解決方案。

    我認為,持續集成尚不完善,測試環境玩玩可以,生產環境還是不要了。

    問題收集

  • 產品線都多少條?
  • 同時進行并行開發的多少條?
  • 怎么進行項目管理?
  • 產品團隊的情況,怎樣管理需求文檔,多個產品人員怎樣協作
  • 開發團隊的情況,使用什么語言,什么框架,開發人員數量,采用哪種版本控制,急需解決的問題?
  • 測試團隊的情況,測試工具,測試的方法,測試用例怎樣管理,人員數量,急需解決的問題?
  • 運維團隊的清況,服務器數量,云的使用情況,docker使用情況,運維工具,運維人員,急需解決的問題?
  • 目前最迫切解決的問題是什么?
  • 你的企業目前還面臨哪些問題(非技術)?
  • 例如來自運維的需求,?運維團隊需要什么呢?

  • 合同管理
  • 成本管理
  • 續費管理
  • 問題管理
  • 突發事件管理
  • 環境配置
  • 設備管理
  • 配置管理
  • 自動化部署
  • 監控和報警
  • 備份和恢復
  • 大部分可以用Issue/Ticket 湊合,我們只撿重點的,環境配置,自動化部署,監控/報警,備份/恢復。

    我們就先從監控說起把,你很發現很多 DevOps 的文章中,不會涉及到監控,但是這是運維的重中之重。

    每個企業都意識到監控工作的重要性,但80%企業的監控工作仍然處在監控的初級階段。

    什么是初級階段呢?

  • 被動監控,故障發生運維人員永遠不是第一個發現故障的人
  • 監控IP地址與TCP端口,很多時候HTTP 80端口正常接受請求,但WEB服務器不能正常工作。
  • 人肉監控(人肉運維),采用人海戰術,桌面擺放很多顯示器,甚至投影儀,要求監控者盯著各種儀表板界面,制定各種工作流程以及KPI考核監控人員。
  • 人肉測試,要求監控人員每間隔幾分鐘人工操作一次,以確認系統正常工作,例如(沒15分鐘登陸一次,下一筆頂單,做一次支付等等)。
  • 萬能的重啟,定其重啟所有的服務器。
  • 什么是中級階段呢?

  • 報警:手機短信更靠譜,因為手機隨身攜帶(郵件不算,郵件到達速度慢,各種因素不穩定)
  • 監控服務:探測服務的可用性,而不是僅僅監控端口,注意我是指私有協議的監控(HTTP,SMTP,FTP,MySQL 不算在內)
  • 故障分析:通過日志與調試工具分析軟件BUG,指導開發人員改善軟件質量,使其故障不會再次發生,達到不用restart重啟方式解決故障
  • 半自動化測試
  • 什么是高級階段呢?

  • 我認為高級階段是監控與災備系統打通融合一體。
  • 除此之外監控與開發密切相關,在開發階段需要為監控數據采集做鋪墊,每開發一個新功能就要想到未來這個功能是否需要監控,怎樣監控。
  • 數據前期采集與數據挖掘非常重要,監控不僅能做軟件與硬件的性能分析,還能提供決策支持,這里又涉及了BI。
  • 除了監控,另一個息息相關的是自動故障轉移,有興趣可以看看我的其他文章?http://netkiller.github.io/journal/
  • 監控從初級向中繼再到高級,是轉被動到主動,從人工到自動化。

    監控不應該局限在硬件與服務,還應該延伸到業務領域。

    你在百度上搜索監控多半是一些開源或商業軟件的安裝配置指南。這些文章中會告訴你怎樣監控CPU、內存、硬盤空間以及網絡IP地址與端口號碼。

    開源軟件無非是 Nagios, Cacti, Mrtg, Zibbix ..... 這些軟件在我的電子出書《Netkiller Monitoring 手札》中都有詳細說明安裝與配置方法。

    商業軟件也有很多如 SolarWinds, Whit's Up,PRTG ......

    所有的服務器,網絡設備,監控你都做了,那么按照我上面的監控分級,你處于監控的那個階段?

    怎樣監控

    監控都有哪些手段跟方式呢?

    衛星監測

    中心衛星站為中心站點向外放射,通常是通過IP地址訪問遠程主機,實施監控,常用方法是SNMP,SSH,以及各種Agent(代理),方式是請求然后接收返回結果,通過結果判斷主機狀態。

    Monitor Server| -------------------------------| | | [Web] [Mail] [Database]

    以監控服務器為中心,星型散射連接其他監控節點,沒有什么優點,缺點是Web跟Mail節點的通信沒有監控

    逐級診斷

    一級一級的向下探測,尋找故障點,需要在各個節點埋探針。

    Monitor Server| ------------------------------- | | |V V V| | | [Web] ---> [Cache] ---> [Database]\ ^`------------------------|

    首先監控服務器跟星型拓撲一樣監控,再讓Web節點去訪問Cache節點然后返回監控結果,以此類推,讓Cache節點訪問Database, 讓Web訪問Database節點。

    將所有業務邏輯都逐一模擬一次,任何一個環節出現問題,立即發出警告。

    模擬人工

    這里主要監控服務是否可用,可以檢查軟件的工作情況,涉及測試環節。

    通過自動化測試工具輔助監控,例如模擬鼠標點擊,鍵盤輸入,可以監控圖形界面程序與網頁程序。

    Windows 監控可以通過 Windows Automation API實現,通過程序控制,能夠模擬人工操作軟件,實現操作匹配返回結果實現自動化監控

    Web頁面監控的方案就太多了,比較經典的是Webdriver衍生出的各種工具Selenium - Web Browser Automation最為出名。我通過這個工具模擬用戶操作,例如用戶注冊,登陸,發帖,下單等等,然后匹配返回結果實現自動化監控與報警

    數據分析

    通過數據分析,將故障消滅在故障發生前。舉一個例子,開發人員忘記設置redis 時間,雖然程序一直完好工作,但redis內存不斷增長,總一天會出現故障。

    我們通過采集redis狀態信息,分析一段時間內數據變化發現了這個問題。

    監控與開發

    談到監控很多人認為這是運維的事情,實則不然,不懂運維的測試不是好開發。

    開發過程中需要考慮到監控,例如Nginx的status模塊, MySQL的show status命令, Redis的info命令,都是為監控預留的。那么你開發的程序是否考慮到了監控這塊呢?

    你可以通過日志形式或者管道,再或者Socket將程序的運行狀態提供給監控采集程序。

    總結

    好的監控的能讓你對系統了如指掌,做到心里有數。有數據才好說話。

    ?

    ?

    ?

    轉載于:https://my.oschina.net/neochen/blog/2994462

    總結

    以上是生活随笔為你收集整理的一步步实施 DevOps (三)的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。