saltstack系統(tǒng)架構及原理_第1頁
saltstack系統(tǒng)架構及原理_第2頁
saltstack系統(tǒng)架構及原理_第3頁
已閱讀5頁,還剩3頁未讀 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、saltstack 系統(tǒng)架構及原理】V1.0錯誤!未找到引用源1. 系統(tǒng)介紹2. 系統(tǒng)架構2.1 系統(tǒng)架構圖2.2 基本術語3. 基本配置3.1 服務與配置3.2 分組配置4. 基礎用法與命令4.1 基本使用4.2 常用內建模塊用法命令介紹 5. Saltstack批量化部署與配置管理 6. Saltstack管理流程與業(yè)務問題管理 1. 系統(tǒng)介紹SaltStack 項目始于2011年2月,創(chuàng)始人是 Thomas S Hatch ,團隊成 員:Thomas S Hatch、Jeff Schroeder 、Seth house,是一個相對較新的項目, 是用Python寫成的開源異構平臺基礎設置輕

2、量級管理工具,遵守Apache2協(xié)議,有一個強大的遠程執(zhí)行命令引擎和大型分布式的配置管理系統(tǒng),容易搭建,能夠快 速管理成千上萬的服務器,不管是本地網(wǎng)絡,還是跨數(shù)據(jù)中心,保持秒級響應時間;架構采用C/S模式,在一個后臺程序中集成必要功能。默認不需要復雜的配置 就可以工作,同時可以定制用于特殊的需求。Salt采用了很多技術和技巧,網(wǎng)絡層采用優(yōu)秀的ZeroMQ庫,守護進程里面包含 AMQ代理,采用公鑰和主控通訊,同時使用更快的 AES加密通信,驗證和加密都已經(jīng) 集成在Salt里面,使用msgpack通訊,所以更快速和更輕量網(wǎng)絡交換。特點:簡單易用,模塊編寫方便,社區(qū)活躍,解決問題速度快可以執(zhí)行任意命

3、令,或者預定義的模塊(復雜)命令。針對單獨獨立服務器,或者同名一組服務器,或者相同角色,系統(tǒng)硬件信息,操作系統(tǒng),當前版本等等;通過寫簡單的命令列表和屬性,就可以將你的服務器配置為已知狀態(tài),而不需 要學習其他的語言(只需要掌握python語言即可);2. 系統(tǒng)架構2.1系統(tǒng)架構圖2.2基本術語Master -控制中心,salt命令運行和資源狀態(tài)管理端Minions -需要管理的客戶端機器,會主動去連接 Master端,并從Master端得到資 源狀態(tài)信息,同步資源管理信息States -配置管理的指令集Modules-包含命令行下運行的指令,和在配置文件里面使用的指令模塊可以的函 數(shù)可以在命令行

4、下運行3. 基本原理3.1服務端與客戶端認證機制服務端master配置(在以下配置中,需要注意的是,每個參數(shù)冒號后面都要帶一個空格如:)兩個端口 .如果想綁定某個具體的IP,需要對/etc/salt/master配置文件中"interface"選項做如下修改:in terface: 1注:是本機服務端的IP地址,現(xiàn)網(wǎng)采用默認參數(shù),in terface 注釋掉;修改auto_accept為True,自動接受客戶端的 KEY當然也可以這里不設置, 手動接受就行,現(xiàn)網(wǎng)部署模式 auto_accept為False狀態(tài),接受方式:salt-key - L查看未接受的key,salt

5、- A接 受所有 mi nio n 或者 salt-key -a key name(key name即為客戶端剛才設置的id標識)客戶端minion配置需要修改 minion的配置文件/etc/salt/minion中的master選項,進行如下操作:master:;注:是服務端的IP地址;id :xxx(現(xiàn)網(wǎng)該參數(shù)為注釋狀態(tài),默認為該節(jié)點的主機名)id :客戶端的標識,用服務端連接時,就是用此標識來連接客戶端,如:salt'xxx' test.p ing或者 salt 'host name' test.p ing。Master 與 Minion 認證minio

6、n在第一次啟動時,會在/etc/salt/pki/minion/(該路徑在/etc/salt/mi nio n里面設置)下自動生成 mi nio n.pem(private key) 和minion.pub(public key),會在 /etc/salt 生成一個 minion_id 值,如下圖:Salt Minion 在啟動時從配置文件中獲取 Master的地址,如果為域名,則進行 解析.解析完畢后,會連接Master的Ret接口(客戶端與服務端通信的端口 4506),通過 TCP協(xié)議將 minion.pub 和 minion id 發(fā)送給 master,master 在接收到 minio

7、n 的 publickey 后,通過 salt-key 命令 accept minion public key,認證完畢后, master 會將minion 端發(fā)送來的,以ID值命名的公鑰存放在/etc/salt/pki/master/minions目錄中(無擴展名),master認證完畢后,會將自身的公鑰發(fā)送給minion,并存儲為/etc/salt/pki/minion/minion_master.pub.然后 master 就能對 minion 發(fā)送指令了。Master與Minion的連接Saltstack master啟動后默認監(jiān)聽 4505和 4506 兩個端口。4505(publi

8、sh_port)為salt的消息發(fā)布系統(tǒng),4506(ret_port)為salt客戶端與服務端通信的端口。如果使 用lsof查看4505端口,會發(fā)現(xiàn)所有的 Minion在4505端口持續(xù)保持在ESTABLISHED 如下圖:salt有很多可執(zhí)行模塊,比如說cmd模塊,在安裝minion的時候已經(jīng)自帶了, 它們通常位于你的python庫中l(wèi)ocate salt | grep /usr/可以看到salt自帶的所有東西,如下圖:這些模塊是python寫成的文件,里面會有好多函數(shù),如test.ping ,當我們執(zhí)行salt '*' test.ping 的時候,master下發(fā)任務匹配到

9、的 minion上去,minion執(zhí)行模塊 函數(shù),并返回結果。master監(jiān)聽4505和4506端口,4505對應的是ZMQ的 PUB system,用來發(fā)送消息,4506對應的是REP system是來接受消息的。Master與Minion建立了對應的連接,那么當一個遠程執(zhí)行指令下發(fā)下去,其數(shù) 據(jù)流向是怎么一個流程呢?以執(zhí)行test.ping 為例:1、用戶執(zhí)行test.ping 命令后,首先調用模塊發(fā)布命令到master,模塊run_job將操作指令封裝成命令詳細信息后,將發(fā)送到本地master的Ret接口,Master Ret接口接收到發(fā)送的數(shù)據(jù)后,會通過chminions.check_

10、minions 獲取本次需要 哪些mi nio ns執(zhí)行,并產(chǎn)生jid, 然后在master eve nt接口上進行fire_eve nt 操作, 之后對數(shù)據(jù)使用 master私鑰(master.pem)進行簽名模塊進行如下操作發(fā)布命令master:1) 確認執(zhí)行的命令是有效的命令;2) 確認發(fā)送命令的詳細信息,(包括類型、任務ID、時間點、執(zhí)行賬戶、命令模塊、minion );3)test.ping命令這個jobid任務準備使用指定的賬戶發(fā)布到 master,4)再次確認發(fā)布命令的詳細信息;5)確認認證要求minion ID為執(zhí)行命令是寫的ID;6)核實minion ID認證已經(jīng)認可;7)準

11、備調用master pub公鑰與minion端公鑰進行核對;8) 模塊run_job將操作指令封裝成命令詳細信息后,將發(fā)送到本地master的 Ret 接口,以下為發(fā)布命令到 master的具體日志:2、 Master Pull接口接收到數(shù)據(jù)命令后,會迅速的在Master Pub (消息發(fā)布系 統(tǒng))接口上發(fā)布命令到 mi nio n,同時監(jiān)聽Master端的Eve nt bus (通信庫),過濾出 本次任務jid所對應的eve nt,用來獲取執(zhí)行結果master做如下操作發(fā)送執(zhí)行命令到 minion :1) 匯總發(fā)送命令的詳細信息,(包括類型、任務ID、時間點、執(zhí)行賬戶);2)閱讀配置文件,再

12、次確認 minion id 在/etc/salt/mi nino 是否存在;3) 通過ZeroMO議,將發(fā)送命令的詳細信息發(fā)往 minion ;以下為發(fā)送命令到 minion的具體日志:3、此時 Minion 通過 PUB/SUB(ZeroMC采用的是 PUB/SUBg型,Pub/Sub 模型定 義了如何向一個內容節(jié)點發(fā)布和訂閱消息),即可接收到來自于Master Pub接口的消 息.Minion 接收到消息后,會首先通過本地的 master pub_key(minion_master.pub) 進 行解密,已確保消息來自于Master.解密完成后,本地進行target匹配,如果匹配上, 表示需要執(zhí)行,表示需要執(zhí)行,發(fā)起一個本地線程調用test.py模塊執(zhí)行

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論