天天看點

DevOps之環境管理

什麼是環境管理?

環境是指應用程式運作所需要的所有資源和配置資訊。

比如下面的配置資訊:

  • 伺服器的硬體資訊,比如 CPU 的類型和數量、記憶體大小、硬碟和網卡資訊,以及伺服器之間互聯使用的交換機資訊。
  • 作業系統的資訊,作業系統的類型和版本,作業系統的優化配置,如檔案描述符的數量。
  • 應用程式運作所需要的中間件資訊,如消息中間件 Kafka 的版本及配置資訊。
  • 應用程式本身的版本、資料及配置資訊。

環境管理就是準備部署環境的過程以及部署之後對環境的管控。既能保證準備環境的快速和一緻性,又使得部署後的環境能夠有效利用。希望你學習完本課之後能夠達到這個目标。

為什麼需要環境管理?

在之前的開發過程中,環境部署基本都是 IT 人員手動完成的。手動部署環境就會導緻很多問題,比如:

  • 手動配置環境很容易出錯。由于環境的配置項較多,哪怕是改錯一個配置項,都會讓整個應用無法啟動,或者影響服務的性能。
  • 手動配置環境非常低效。通常以周為機關,拖慢了開發、測試的進度。
  • 手動配置環境不友善測試驗證。如果出現問題,很難複現,是以給測試驗證帶來了很大的困難。

是以,我們需要一種能夠完全自動化的建立環境的過程。這不僅降低了環境管理的成本和風險,能夠快速的傳遞環境,并且自動化的過程使得環境的部署是可重複的、時間是可預測的。

環境管理實踐

為了解決上面提到的問題,每個企業的實施方案并不完全一樣。這就要根據落地 DevOps 的過程,采用中因地制宜的方法。有的企業環境的數量、用途是固定的,SIT 測試環境就是用來做內建測試的;性能測試的環境就是用來做性能測試的。一般情況下,環境的實體伺服器、作業系統是不會經常發生變化的,變化的隻是上層應用程式以及依賴的中間件服務。

基于 Git 的配置管理方式來快速建立環境

DevOps之環境管理

這個方案主要包含三個内容,Git 倉庫、配置管理資料庫(CMDB)和部署平台。

  • Git 倉庫:用于存儲建立環境的部署腳本,并能夠實作版本控制。部署腳本中盡可能将變化的資訊抽取成變量,在部署的時候從 CMDB 中擷取。比如,在哪些伺服器上部署,部署哪些服務,用哪個作業系統鏡像等。是以,這裡的部署腳本可以了解為模闆。
  • CMDB:用于存儲每個環境相關的配置資訊。包含硬體資訊,如實體伺服器的資訊,CPU型号和數量,記憶體大小,以及硬碟、網卡等資訊;軟體資訊,如部署哪些應用服務以及服務本身的啟動參數和運作參數(資料庫連接配接池大小等)。為了實作子產品化部署,每個服務可以設定是否安裝等參數。
  • 部署平台:用于從 Git 倉庫克隆部署腳本模闆,從 CMDB 擷取指定環境的硬體配置資訊和軟體配置資訊,用 CMDB 中的資料填充部署腳本模闆中的變量。然後執行具體的部署任務,建立出符合要求的環境。

這種基于 Git 版本控制系統存儲腳本模闆,利用CMDB存儲個性化的配置項,最終通過部署平台進行組裝的方式,可以快速地、可重複地建立一緻性的環境。即通過這種方式,每次建立的環境 A 都是一樣的。如果這個環境的配置資訊發生改變,隻需要在 CMDB 中進行變更即可,再次部署時就會應用到新的環境中。