您好,登錄后才能下訂單哦!
這篇文章將為大家詳細講解有關自動化運維工具SaltStack在云計算環境中的實踐是怎樣的,文章內容質量較高,因此小編分享給大家做個參考,希望大家閱讀完這篇文章后對相關知識有一定的了解。
隨著云計算技術的快速普及與發展,越來越多的企業開始學習和搭建自己的云平臺代替傳統的 IT 交付模式,企業的 IT 環境也隨之越來越復雜,常規的運維方法與技術已經無法滿足現在云環境中系統的配置與變更。基于云計算的發展,大數據、認知技術及容器技術也在企業中得到了越來越多的應用,大量的服務器管理操作、配置變更被頻繁的執行與部署,以應對多變的業務需求。按照常規的方式,運維人員需逐個服務器進行配置調整,手動管理大量的系統信息,難免有各種各樣的問題及事故發生。為了避免這樣的風險,本文的示例中,筆者將詳細介紹如何使用開源軟件 SaltStack 自動化運維工具對云環境中的服務器進行命令的遠程執行及配置管理,確保操作的安全性及高效性,降低管理員的操作風險。
下面介紹的架構,主要是在 CentOS6.5 上進行集中部署與測試。該架構主要涉及到三 個開源軟件,分別是 Python 軟件集,SaltStack 軟件集和 ZeroMQ 消息隊列軟件。
部署簡單、管理方便;
支持大部分的操作系統,如 Unix/Linux/Windows 環境;
架構上使用C/S管理模式,易于擴展;
配置簡單、功能覆蓋廣;
主控端(Master)與被控端(Minion)基于證書認證,確保安全可靠的通信;
支持 API 及自定義 Python 模塊,輕松實現功能擴展;
SaltStack 采用 C/S 結構來對云環境內的服務器操作管理及配置管理。為了更好的理解它的工作方式及管理模型,本章將通過圖形方式對其原理進行闡述。
SaltStack 客戶端(Minion)在啟動時,會自動生成一套密鑰,包含私鑰和公鑰。之后將公鑰發送給服務器端,服務器端驗證并接受公鑰,以此來建立可靠且加密的通信連接。同時通過消息隊列 ZeroMQ 在客戶端與服務端之間建立消息發布連接。具體通信原理圖,如圖 1 所示,命令執行如圖 2 所示:
Minion 是 SaltStack 需要管理的客戶端安裝組件,會主動去連接 Master 端,并從 Master 端得到資源狀態信息,同步資源管理信息。
Master 作為控制中心運行在主機服務器上,負責 Salt 命令運行和資源狀態的管理。
ZeroMQ 是一款開源的消息隊列軟件,用于在 Minion 端與 Master 端建立系統通信橋梁。
Daemon 是運行于每一個成員內的守護進程,承擔著發布消息及通信端口監聽的功能。
Minion 是 SaltStack 需要管理的客戶端安裝組件,會主動去連接 Master 端,并從 Master 端得到資源狀態信息,同步資源管理信息。
Master 作為控制中心運行在主機服務器上,負責 Salt 命令運行和資源狀態的管理。
Master 上執行某條指令通過隊列下發到各個 Minions 去執行,并返回結果。
下面讓大家了解了什么是 SaltStack 以及它的通信及執行原理,。
為了讓大家更好的理解 SaltStack 在云平臺集中化管理方面的優勢,因此,根據項目的實際情況繪制了部署架構圖,并在文中對架構圖進行了詳細說明。如圖 3 所示:
SaltStack 的所有被管理客戶端節點(如圖 3 所示 DB 和 Web),都是通過密鑰進行加密通信,使用端口為 4506。客戶端與服務器端的內容傳輸,是通過消息隊列完成,使用端口為 4505。Master 可以發送任何指令讓 Minion 執行,salt 有很多可執行模塊,比如說 CMD 模塊,在安裝 minion 的時候已經自帶了,它們通常位于你的 python 庫中,locate salt | grep /usr/ 可以看到 salt 自帶的所有東西。
為了更好的理解架構用意,以下將展示主要的命令發布過程:
軟件名 | 功能 |
Python 2.6軟件包 | Python主安裝文件 |
PyYAML軟件包 | SaltStack 配置解析定義語法 |
Msgpack-python | SaltStack 消息交換庫 |
Jinjia2 | SaltStack states 配置模版 |
MarkupSafe | python Unicode 轉換庫 |
Apache-libcloud | SaltStack 對云架構編排庫 |
ZeroMQ | SaltStack 消息系統 |
Pyzm | ZeroMQ python 庫 |
PyCryto | Python 密碼庫 |
M2Cryto | Openssl Python 包裝庫 |
Requests | HTTP Python 庫 |
為了方便依賴包的安裝,本章將采用 YUM 的方式進行安裝。
首先下載并安裝 epel 源,執行以下指令,將 epel.repo 存儲到/etc/yum.repos.d 目錄下。
wget –o /etc/yum.repos.d/epel.repohttp://mirrors.aliyun.com/repo/epel-6.repo
并通過 Yum list 命令來校驗安裝源是否生效,如出現圖 4 所示,則表明Yum源已經生效。
安裝完成后,輸入 chkconfig salt-master on 將 master 服務加入到開機啟動項,這樣每次系統啟動,都會自動加載 master 服務。輸入 service salt-master start 啟動 master 服務。之后通過 netstat –antp 查詢服務狀態,結果如圖 6 所示。
安裝完成后,輸入 chkconfig salt-minion on,將 minion 服務加入到開機啟動項,這樣每次系統啟動,都會自動加載 minion 服務。輸入 service salt-minion start,啟動 minion 服務。之后通過 netstat –antp 查詢服務狀態,結果如圖 8 所示。
到目前為止,SaltStack 的安裝工作已經完成,Master 和 Minion 主機服務都已經正確開啟,端口服務正常。下一章將主要介紹如何配置 SaltStack,使其可以正常的提供各種功能。
SaltStack 的配置主要集中在 Master 主機端,客戶端的配置較少,本章將通過以下兩部分詳細介紹。
SaltStack-Minion 是 SaltStack 安裝在客戶端的代理,負責接收服務器端發布的指令并執行,同時負責客戶端的狀態監控。客戶端要想被 master 管理,需要修改其配置文件,將服務器指向到 Master 的地址。其配置文件位于/etc/salt/目錄下,名為 minion,通過 vi 工具修改,如圖 9 所示。
配置完成后,保存并通過 service salt-minon restart 命令重啟 minion 服務。本次測試案例,并不需要其它高級功能的演示,所以客戶端到此配置結束,更多功能的配置,請參考SaltStack 官方手冊。
SaltStack-Master 是 SaltStack 組件的核心服務,負責發布指令及配置文件的分發與管理,及客戶端的管理功能。Master 要想正常提供服務,需要接受客戶端的證書認證請求。我們之前已經介紹過,SaltStack 是通過 SSL 證書認證的方式進行通信的。如圖 10 所示操作,輸入 salt-key –l 來查詢客戶端證書狀態,并如圖 11 所示操作,輸入 salt-key –A 接受客戶端認證。
從圖中可以看到客戶端被發現,但是處于未被接受狀態,需要管理員執行圖 11 所示指令,進行接受。
至此我們已經完成 SaltStack 的全部配置。
通過本章節中的兩個測試案例,可以驗證 SaltStack 是否運行正常,是否可以完成預定的功能。我們可以通過 salt '*' test.ping 來測試客戶端是否在線,并被 master 管理,如圖 12 所示,如果返回 True,則說明客戶端已經被 master 管理,并處于在線狀態。
接下來,我們將通過批量執行命令和批量安裝軟件,來測試 SaltStack 的部分功能。
在日常運維中,同時對多臺服務器進行操作,是一個很平常的需求。比如批量執行 ping 操作,驗證服務器是否在線,批量執行查詢命令,看服務器的負載及利用率。如圖 13 所示的指令為批量查詢服務器操作系統的版本。
*代表對所有的被管理客戶端進行操作,cmd.run 是命令調用模塊,ifconfig 是具體的執行命令。
批量安裝軟件也是日常運維中的家常便飯,我們可以通過 SaltStack 的軟件推送功能,對所管理的服務器進行進行相關軟件的批量安裝。如圖 14 所示的指令為批量安裝軟件 lrzsz 在客戶端服務器中。
如上圖所示,lrzsz 軟件被順利的安裝到了客戶端服務器。 通過以上兩個測試,可以驗證 SaltStack 可以正常的為云平臺提供集中化的管理與配置功能。
關于自動化運維工具SaltStack在云計算環境中的實踐是怎樣的就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。