saltstack學習之一:服務架構以及相關配置安裝運行


概要

    saltstack是基於Python開發的C/S架構的一款批量管理工具,底層采用動態的連接總線(ZeroMQ消息隊列pub/sub方式通信),使用ssl證書簽發的方式進行認證管理,使其可以用於編配, 遠程執行, 配置管理等等。

部署輕松,在幾分鍾內可運行起來,擴展性好,很容易管理上萬台服務器,速度夠快,服務器之間秒級通訊。號稱世界上最快的消息隊列ZeroMQ使得saltstack非常快速的管理大量服務器,采用RSA Key方式確認身份,傳輸采用AES加密,安全性也非常有保障。

 


服務架構

saltstack是基於C/S服務模式,在該架構中,服務器端Master,客戶端Minion。在saltstack架構中,不僅有傳統的C/S服務模式,而且有消息隊列中的發布與訂閱(pub/sub)服務模式。目前我們一般用其C/S架構做批量管理。

minion與master通信模式如下圖:

 

Master與Minion的連接

在master和minion端都是以守護進程的模式運行。SaltStack master啟動后默認監聽4505和4506兩個端口。4505(publish_port)為saltstack的消息發布系統,4506(ret_port)為saltstack客戶端與服務端通信的端口。如果使用lsof 查看4505端口,會發現所有的minion在4505端口持續保持在ESTABLISHED狀態。整個通信過程可以用debug查看。

master:

    salt-master –l debug

    ss –a | grep '4505|4506'

minion:

    salt-minion –l debug

 

 

安裝

首先安裝epel源,

RHEL/CentOS 6:

rpm -ivh https://dl.fedoraproject.org/pub/epel/epel-release-latest-6.noarch.rpm

 

RHEL/CentOS 7:

rpm -ivh https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm

 

Master端安裝:

yum -y install salt-master

Minon端安裝:

yum -y install salt-minion

saltstack配置文件

下面給出master和minion所以配置文件的分類解釋以及在我們實驗環境下所需要設置的配置參數。


master配置文件

 

在大規模使用saltstack的時候會經常遇到的問題參數

max_open_files:可根據master和minion數量進行適當調整

timeout:根據master和minion網絡狀況適當調整

auto_accpet和autosign_file:大規模部署的時候可以設置自動簽證

master_tops和所有以external開頭的參數:saltstack與外部系統進行整合的相關配置參數

 

主要配置

 


安全配置

 


salt-ssh配置


state系統配置


文件服務配置


pillar系統配置


syndic架構配置


日志配置

 

 

minion配置文件

 

主要配置


模塊管理配置


state系統配置


文件目錄配置


安全配置


日志配置

 


長連接配置

 

 

 

 

 

在我們實驗環境下我們使用如下的配置:

 

master:

 

minion:


saltstack的證書管理

要理解證書管理首先要了解master與minion認證的原理:

Master與Minion認證

  1. minion在第一次啟動時,會在/etc/salt/pki/minion/(該路徑在/etc/salt/minion里面設置)下自動生成minion.pem(private key)和 minion.pub(public key),然后將 minion.pub發送給master。
  2. master在接收到minion的public key后,通過salt-key命令accept minion public key,這樣在master的/etc/salt/pki/master/minions下的將會存放以minion id命名的 public key,然后master就能對minion發送指令了。

 

那么一些證書管理的指令可通過salt-key -h查看,下面為常見命令:

小寫字母針對的單一對象,大寫都是針對全體。

salt-key -L        #查詢所有接收到的證書

salt-key -a <證書名>   #接收單個證書

salt-key -A        #接受所有證書

salt-key -d <證書名>   #刪除單個證書

salt-key -D       #刪除所有證書

salt-key -P                #打印所有的public key

salt-key -p PRINT            #打印指定的public key

salt-key -r REJECT        #拒絕指等待認證的key

salt-key -R                 #拒絕所有等待認證的key

salt-key -f FINGER        #顯示指定key的指紋信息

salt-key -F                #顯示所有key的指紋信息

 

日常命令參數:

master:

/usr/bin/salt            #salt核心操作命令

/usr/bin/salt-cp        #salt文件傳輸命令

/usr/bin/salt-key        #salt證書管理命令

/usr/bin/salt-master    #salt master服務命令

/usr/bin/salt-run        #salt master runner命令

/usr/bin/salt-unity     #salt統一的調用包裝器,圍繞其他的Salt CLI腳本

 

1.salt-cp 分發文件到minion上,不支持目錄分發,通常在master運行

salt-cp [options] '<target>' SOURCE DEST

salt-cp '*' testfile.html /tmp

salt-cp 'test*' index.html /tmp/a.html

 

2.alt-master master運行命令

salt-master [options]

salt-master          #前台運行master

salt-master -d        #后台運行master

salt-master -l debug    #前台debug輸出

 

3.salt-run 該命令執行runner(salt帶的或者自定義的,runner以后會講),通常在master端執行,比如經常用到的manage

salt-run [options] [runner.func]

salt-run manage.status    #查看所有minion狀態

salt-run manage.down     #查看所有沒在線minion

salt-run manged.up       #查看所有在線minion

 

 

minion:

/usr/bin/salt-call        #拉取命令

/usr/bin/salt-minion        #服務命令

 

 

1.salt-call(定時同步)該命令通常在minion上執行,minion自己執行可執行模塊,不是通過master下發job

salt-call [options] <function> [arguments]

salt-call test.ping         #自己執行test.ping命令

salt-call cmd.run 'ifconfig'   #自己執行cmd.run函數

可以把salt-call state.highstate命令放在minion端的定時任務中,來進行自動請求同步。

也可以把salt '*' state.highstate放在master端的定時任務中,來進行自動推送到所有機器。

也可以在/etc/salt/minion配置文件中加入如下內容,如下是每隔5分鍾同步,效果一樣。

 schedule:

          highstate:

              function:state.highstate

              seconds:300

2.salt-minion  minion端運行的命令

salt-minion [options]

salt-minion         #前台運行

salt-minion -d       #后台運行

salt-minion -l debug   #前台debug輸出

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM