一 saltstack 簡介:
saltstack 是基於python開發的一套C/S架構配置管理工具,底層使用zeroMQ消息隊列pub/sub方式通信,使用SSL證書籤發的方式進行認證管理
ZeroMQ 使得saltstack能快速在成千上萬臺機器上進行各種操作,而且採用RSAkey 方式確認身份,傳輸採用AES加密。
saltstack中服務端叫做master,客戶端叫做minion,
在master和minion端都是以守護進程的模式運行,一直監聽配置文件裏面的ret_port(接受minion請求)和publish_port(發佈消息)的端口。
當minion運行時會自動連接到配置文件裏面定義的master地址ret_port端口進行連接認證,默認客戶端請求id 是 socket.getfqdn()取到的值,也可以在minion啓動之前修改minion的id值。
二 服務的安裝及基本說明
1 server 1 上安裝客戶端和服務器端
軟件和相關文檔:
鏈接:https://pan.baidu.com/s/1wBVFXI8qYf-Z0YTDnjchYg
密碼:mofl
2 server 2 和 server3 端安裝客戶端
3 服務端安裝樹並查看其狀態
4 其密鑰的存放路徑
5 將從節點指向主節點
6 指向前查看其密鑰爲空
7 啓動slave服務
8 查看從節點密鑰,當服務啓動後,會自動使用md5校驗生成密鑰
9 服務器master端查看並啓動服務
10 查看節點slave情況
11 允許所有未註冊的節點註冊,並查看是否註冊成功
12 查看master 端生成的公鑰
13 查看slave 及 minion端由master發送的公鑰
14 查看master端由minion端發送的公鑰
由此可知,其驗證是雙向驗證,及master端將其公鑰發送到minion端,minion也將公鑰發送到master端。
其中4505 負責發送數據到客戶端,
4506 負責接收客戶端的數據到服務器
三 基礎應用
1 部署遠端httpd 服務
1 master環境準備
開啓工作目錄並重啓進程加載
2 瞭解YAML
1 默認的sls文件的renderer 是YAML renderer ,YAML是一個有很多強大特性的標記性語言,salt 使用了一個YAML的小型子集,映射非常常規的數據結構,向列表和字典,YAML renderer 的工作是將YAML數據格式的結構編譯成python數據結構給salt使用
規則一 :
縮進: YAML 使用一個固定的縮進風格表示數據層結構關係,salt需要每一個縮進級別都有兩個空格組成,不要使用tab
規則二:
冒號:python 的字典當然是簡單的鍵值對
規則三:
短橫槓:想要表示列表項,使用一個短橫槓加一個空格,多項使用同樣的縮進級別作爲同一列表的一部分。
3 部署:
其中apache-install只是一個名字
pkg.installed中pkg是數據包處理的類,是一個大的方式,installed 表示其是對數據包進行安裝處理
-pkgs 用於指定安裝多個數據包
4 查看安裝結果
5 設置部署並啓動
其中service 也是一個大的類,而running是其中的方法
其有reload 、restart、enable 等常用方法
6 實施
7 查看
8 配置httpd配置文件並推送
9 配置
其中使用到了file.managed模塊
--name:表示目標目錄,及客戶端對應的目錄
--source:表示配置文件的來源路徑,其是相對於/srv/salt的路徑
10 部署
11 查看 :
12 另一種配置方式:
2 nginx 源碼包編譯配置
1 配置並認證通過server3
2 創建相關文件夾,並查看,用於存放不同的文件和數據包
3 安裝配置相關依賴包
4 安裝配置nginx用戶名
5 配置nginx的推送和解壓
6 部署
查看是否編譯成功
7 創建nginx配置文件
8 創建啓動和觸發機制
9 部署
10 查看
3 安裝haproxy實現負載均衡:
1 另一個節點安裝以獲取到期配置文件
2 複製配置文件主節點
3創建haproxy 目錄
4 修改配置文件
5 配置客戶端服務
6 配置認證key
7 查看總的目錄結構
8 查看haproxy 目錄結構
9 配置haproxy安裝配置文件
10 設置其分配給不同的主機
11 進行一鍵配置
12 配置網頁查看其負載均衡
13 測試其負載均衡
客戶端通過服務端數據發送到客戶端指定的目錄,並有客戶端進行安裝和配置,其配置文件目錄如下
四 擴展模塊
1 grains
1 常用命令
2 設置標籤
3 其他用法
2 pillar 模板使用
1 配置pillar模塊目錄
2 創建目錄並創建文件
3 測試
3 mysql 應用於記錄數據
1 安裝數據庫並導入相應的數據
2 客戶端安裝服務:
3 客戶端配置mysql相關數據
、
4 mysql數據庫進行授權
5 測試並查看結果
4 master端用於將數據提交給mysql
此處的客戶端即需要將數據傳送到master 端也需要將數據發送給mysql。難度大,如果直接在master端配置mysql-python則只需mater將數據寫入數據庫即可
1 客戶端關閉mysql鏈接配置
2 重啓服務
3 服務端安裝mysql-python
4 服務端配置mysql相關配置
5 重啓服務
6 mysql授權:
7 測試:
配置相關模塊
1 關閉mysql及配置,此處是實驗,以防mysql影響正常性能:
其他擴展模板的基本使用
可以通過此格式編寫其他的服務
5 jinja 模板的使用
1 方式一 :
2 方式二:通過模板進行修改
3 方式三 通過grains進行修改IP
通過定義配置文件進行修改其端口或IP地址