天天看點

自動化運維之SaltStack(概述及簡單配置執行個體)

在生産環境中,伺服器往往不止一台,有可能是成千上萬台。對于運維人員來說,如果單獨對每台伺服器進行管理,工作難度實在是太大了。SaltStack是一個伺服器基礎設施管理工具,它具有配置管理、遠端執行、監控等功能。SaltStack由Python語言編寫,是非常簡單易用和輕量級的管理工具。 通過部署SaltStack環境,可以在成千上萬台伺服器上批量執行指令。對于不同的業務進行集中管理、分發檔案、采集資料、軟體包管理等,有利于運維人員提高工作效率,規範業務配置和操作。
SaltStack由Master和Minion構成,Master是服務端,表示一台伺服器;Minion是客戶服務端,表示多台伺服器。在Master上發送指令給符合條件的Minion,Minion就會執行相應的指令,Master和Minion之間是通過ZeroMQ(消息隊列)進行通信的。 SaltStack的Master端監聽4505與4506端口,4505為MAster和Minion認證通信端口,4506為Master用來發送指令或者接收Minion的指令執行傳回資訊。 當用戶端啟動後,會主動連接配接Master端注冊,然後一直保持該TCP連接配接,而Master通過這條TCP連接配接對用戶端進行控制。如果連接配接斷開,Master對用戶端将不能進行控制。但是,當用戶端檢查到連接配接斷開後,會定期向Master端請求注冊連接配接。

SaltStack提供了非常多的功能子產品,以便于對作業系統的基礎功能和常用工具的操作。

(1)pkg子產品

pkg子產品的作用是包管理,包括增删更新。

(2)file子產品

file子產品的作用是管理檔案操作,包括同步檔案、設定檔案權限和所屬使用者組、删除檔案等操作。

(3)cmd子產品

cmd子產品的作用是在Minion上執行指令或者腳本。

(4)user子產品

user子產品的作用是管理系統賬戶操作。

(5)service子產品

service子產品的作用是管理系統服務操作。

(6)cron子產品

cron子產品的作用是管理cron服務操作。

在生産環境中,經常需要根據不同的業務需求來分組部署和配置Nginx伺服器。本案例使用了三台伺服器,均采用CentOS7.4系統版本,要求能連接配接網際網路,SELinux和防火牆均已關閉。 需要注意的是,三台伺服器一定要設定完整的FQDN,和域名一樣的形式,不然在主要端執行遠端執行指令或者配置的時候,等待的時間會非常長,甚至還會出現其他不可控的問題。

角色

主機名

IP位址

組名

master

master.saltstack.com

192.168.88.13

——

minion

web01.saltstack.com

192.168.88.14

group1

web02.saltstack.com

192.168.88.15

group2

1.1首先安裝epel源,因為後面需要安裝SaltStack服務端和用戶端,也包括後面的Apache

1.2主要端(master)安裝salt-master,被控端(minion)安裝salt-minion

1.3配置主要端配置檔案/etc/salt/master,注意預設master檔案全部是注釋的。主要端修改内容如下:

1.4建立salt檔案根目錄及pillar目錄

1.5啟動salt-master服務并檢查端口

1.6配置兩台被監控端配置檔案/etc/salt/minion(注意預設的minion檔案全部也是注釋的)

1.7分别啟動兩台被控端服務,并在主要端上簡單測試一下主要端和被控端的通信狀态,如果傳回都是True,則說明正常。

2.1 在主要端上建立入口檔案top.sls

2.2定義被控機執行狀态,安裝apache軟體,配置檔案并啟動

2.3重新開機服務後,在主要端執行重新整理state指令,讓兩台被控端去執行安裝apache并配置

2.4去被控端檢視apache是否成功安裝,并檢視端口

這樣就完成了通過SaltStack批量部署配置Apache!