集中化管理平台Saltstack

2021-09-24 12:45:17 字數 3726 閱讀 9947

saltstack是乙個伺服器基礎架構集中化管理平台,開始於2023年的乙個專案,具備配置管理、遠端執行、監控等功能,一般可以理解成簡化版的puppet和加強版的func。slatstack基於python語言實現,結合輕量級訊息佇列(zeromq)與python第三方模組(pyzmq、pycrypto、pyjinja2、python-msgpack和pyyaml等)構建。

關於什麼是salt,請查閱官方說明:

saltstack 採用 c/s模式,server端就是salt的master,client端就是minion,minion與master之間通過zeromq訊息佇列通訊。

minion上線後先與master端聯絡,把自己的pub key發過去,這時master端通過salt-key -l命令就會看到minion的key,接受該minion-key後,也就是master與minion已經互信。

master可以傳送任何指令讓minion執行了,salt有很多可執行模組,比如說cmd模組,在安裝minion的時候已經自帶了,它們通常位於你的python庫中。這些模組是python寫成的檔案,裡面會有好多函式,如cmd.run,當我們執行salt '*'cmd.run 'uptime'的時候,master下發任務匹配到的minion上去,minion執行模組函式,並返回結果。

master監聽4505和4506埠,4505對應的是zmq的pub system,用來傳送訊息,4506對應的是rep system是來接受訊息的。

我們可以這樣理解:

salt stack的master與minion之間通過zeromq進行訊息傳遞,使用了zeromq的發布-訂閱模式,連線方式包括tcp,ipc。

1.傳送訊息:

salt命令,將cmd.run ls命令從salt.client.localclientnand_cli發布到master,獲取乙個jobid,根據jobid獲取命令執行結果。master接收到命令後,將要執行的命令傳送給客戶端minion。

2.執行命令:

minion從訊息匯流排上接收到要處理的命令,交給minion._handle_aes處理。minion._handle_aes發起乙個本地執行緒呼叫cmdmod執行ls命令。

3.執行結果處理:

執行緒執行完ls後,呼叫minion._return_pub方法,將執行結果通過訊息匯流排返回給master。master接收到客戶端返回的結果,呼叫master._handle_aes方法,將結果寫在檔案中。

4.返回執行結果:

salt.client.localclientnand_cli通過輪詢獲取job執行結果,將結果輸出到終端。

下面,我們來部署

saltstack的平台:

hostname     ip位址節點

saltstack01   10.62.83.211 salt-master

ctest01         10.62.83.11   salt-minion

節點服務埠號功能

salt-master    python2.6     4505     zeromq

的pubsystem

,傳送訊息

python2.6     4506     repsystem

是來接受訊息

salt-minion     python2.6     4505    zmq

的pubsystem

,傳送訊息

軟體版本號

os       centosrelease 6.7 (final)

python     python2.6.6

saltstack  2015.8.10 (beryllium)

我們採用yum的安裝方式

# rpm --import 源認證檔案

# vim/etc/yum.repos.d/saltstack.repo #yum源配置檔案

[saltstack-repo]

name=saltstack repo for rhel/centos $releasever

baseurl=

enabled=1

gpgcheck=1

gpgkey=

# yumrepolist #yum列表更新

# yuminstall salt-master
下圖是依賴包的安裝:

inte***ce:10.62.83.211 ##繫結master通訊ip。

auto_accept:true ##自動認證,避免手動執行salt-key來確認證書信任。

#pillar_opts:false ## 是否開啟pillar

#pillar_roots:  ##這裡3行是定義pillar的主目錄

#  base:

#    - /srv/pillar

file_roots:   ##指定saltstack檔案根目錄位置

base:

- /srv/salt

#service salt-master start

#chkconfig  salt-master  on #配置為開機服務自啟動
在主控端新增tcp 4505,tcp4506的防火牆規則,而在被控端無須配置防火牆,原理是被控端直接與主控端的zeromq建立長鏈結,接收廣播到的任務資訊並執行。

id:ctest01 ##修改被控端主機識別id,建議使用作業系統主機名來配置

注意:

如果環境中沒有網域名稱解析服務,我們可以配置

/etc/hosts檔案實現自解析網域名稱。

#service salt-minion start

#chkconfig  salt-minion  on ##配置為開機服務自啟動
# vim/etc/sysconfig/iptables

-iinput -m state --state new -m tcp -p tcp --dport 4505 -j accept

生產環境中,成千上萬臺

host,我們怎麼批量部署被控端呢?哈哈,salt-ssh可以解決。

集中化管理平台Ansible

什麼是ansible ansible是新出現的自動化運維工具,基於python開發,集合了眾多運維工具 puppet cfengine chef func fabric 的優點,實現了批量系統配置 批量程式部署 批量執行命令等功能。工作方式 ansible是基於模組工作的,本身沒有批量部署的能力。真...

集中化管理平台Ansible介紹與YAML介紹

一 中文社群 二 點睛 ansible 一種整合it系統的配置管理 應用部署 執行特定任務的開源平台,是ansibleworks公司名下的專案,該公司由cobbler及func的作者於2012年建立成立。ansible基於python語言實現,由paramiko和pyyaml兩個關鍵模組構建。ans...

集中化運維管理 Puppet管理之路

大資料時代高伸縮性 容錯性的特點給運維提出了更高的要求。系統管理不再是疲於安裝作業系統 對系統引數進行逐一配置與優化 打補丁 安裝軟體 配置軟體 新增某個服務的時代。為了提高效率 避免重複勞動 減少錯誤 積累知識,系統管理員都已開始做一些區域性的自動化工作。但這些還遠不夠,為了滿足運維需求,需要更徹...