溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

集中化管理平臺Saltstack

發(fā)布時間:2020-08-06 00:45:17 來源:網(wǎng)絡(luò) 閱讀:992 作者:zkhylt 欄目:開發(fā)技術(shù)

集中化管理平臺Saltstack

  Saltstack是一個服務(wù)器基礎(chǔ)架構(gòu)集中化管理平臺,開始于2011年的一個項(xiàng)目,具備配置管理、遠(yuǎn)程執(zhí)行、監(jiān)控等功能,一般可以理解成簡化版的puppet和加強(qiáng)版的func。Slatstack基于Python語言實(shí)現(xiàn),結(jié)合輕量級消息隊(duì)列(ZeroMQ)與Python第三方模塊(Pyzmq、PyCrypto、Pyjinja2、python-msgpack和PyYAML等)構(gòu)建。

  關(guān)于什么是Salt,請查閱官方說明:http://docs.saltstack.cn/topics/index.html

基本原理

  SaltStack 采用 C/S模式,server端就是salt的master,client端就是minion,minion與master之間通過ZeroMQ消息隊(duì)列通信。

  minion上線后先與master端聯(lián)系,把自己的pub key發(fā)過去,這時master端通過salt-key -L命令就會看到minion的key,接受該minion-key后,也就是master與minion已經(jīng)互信。

  master可以發(fā)送任何指令讓minion執(zhí)行了,salt有很多可執(zhí)行模塊,比如說cmd模塊,在安裝minion的時候已經(jīng)自帶了,它們通常位于你的python庫中。這些模塊是python寫成的文件,里面會有好多函數(shù),如cmd.run,當(dāng)我們執(zhí)行salt '*'cmd.run 'uptime'的時候,master下發(fā)任務(wù)匹配到的minion上去,minion執(zhí)行模塊函數(shù),并返回結(jié)果。

  master監(jiān)聽4505和4506端口,4505對應(yīng)的是ZMQ的PUB system,用來發(fā)送消息,4506對應(yīng)的是REP system是來接受消息的。

我們可以這樣理解:

  Salt stack的Master與Minion之間通過ZeroMq進(jìn)行消息傳遞,使用了ZeroMq的發(fā)布-訂閱模式,連接方式包括tcp,ipc。

1.發(fā)送消息:

  salt命令,將cmd.run ls命令從salt.client.LocalClientNaNd_cli發(fā)布到master,獲取一個jobid,根據(jù)jobid獲取命令執(zhí)行結(jié)果。master接收到命令后,將要執(zhí)行的命令發(fā)送給客戶端minion。

2.執(zhí)行命令:

  minion從消息總線上接收到要處理的命令,交給minion._handle_aes處理。minion._handle_aes發(fā)起一個本地線程調(diào)用cmdmod執(zhí)行l(wèi)s命令。

3.執(zhí)行結(jié)果處理:

  線程執(zhí)行完ls后,調(diào)用minion._return_pub方法,將執(zhí)行結(jié)果通過消息總線返回給master。master接收到客戶端返回的結(jié)果,調(diào)用master._handle_aes方法,將結(jié)果寫在文件中。

4.返回執(zhí)行結(jié)果:

  salt.client.LocalClientNaNd_cli通過輪詢獲取Job執(zhí)行結(jié)果,將結(jié)果輸出到終端。

下面,我們來部署Saltstack的平臺:

一,環(huán)境配置說明

1.IP地址分配

Hostname     IP地址     節(jié)點(diǎn)

saltstack01   10.62.83.211 salt-master

Ctest01         10.62.83.11   salt-minion

2.協(xié)議和端口

節(jié)點(diǎn)                 服務(wù)                端口號            功能

Salt-master    python2.6     4505     ZeroMQPUBsystem,發(fā)送消息

                      Python2.6     4506     REPsystem是來接受消息

Salt-minion     python2.6     4505    ZMQPUBsystem,發(fā)送消息

3.軟件版本

軟件                 版本號

OS       CentOSrelease 6.7 (Final)

Python     python2.6.6

saltstack  2015.8.10 (Beryllium)                  

二,YUM源配置

 我們采用yum的安裝方式

# rpm --import https://repo.saltstack.com/yum/redhat/6/x86_64/latest/SALTSTACK-GPG-KEY.pub#yum源認(rèn)證文件
# vim/etc/yum.repos.d/saltstack.repo #yum源配置文件
[saltstack-repo]
name=SaltStack repo for RHEL/CentOS $releasever
baseurl=https://repo.saltstack.com/yum/redhat/$releasever/$basearch/latest
enabled=1
gpgcheck=1
gpgkey=
# yumrepolist #yum列表更新

三,安裝配置主控端master

1.安裝salt-master

# yuminstall salt-master

下圖是依賴包的安裝:

集中化管理平臺Saltstack

2.主控端主文件配置

# vim/etc/salt/master
interface:10.62.83.211 ##綁定Master通信IP。
auto_accept:True ##自動認(rèn)證,避免手動運(yùn)行salt-key來確認(rèn)證書信任。
#pillar_opts:False ## 是否開啟pillar
#pillar_roots:  ##這里3行是定義pillar的主目錄
#  base:
#    - /srv/pillar
file_roots:   ##指定saltstack文件根目錄位置
  base:
- /srv/salt

3.啟動主控端服務(wù)

#service salt-master start

集中化管理平臺Saltstack

#chkconfig  salt-master  on #配置為開機(jī)服務(wù)自啟動

4.主控端防火墻配置

  在主控端添加TCP 4505,TCP4506的防火墻規(guī)則,而在被控端無須配置防火墻,原理是被控端直接與主控端的zeromq建立長鏈接,接收廣播到的任務(wù)信息并執(zhí)行。

# vim/etc/sysconfig/iptables
-IINPUT -m state --state new -m tcp -p tcp --dport 4505 -j ACCEPT
-IINPUT -m state --state new -m tcp -p tcp --dport 4506 -j ACCEPT

集中化管理平臺Saltstack

四,安裝被控端minion

1.安裝salt-minion

# yuminstall salt-minion –y

2.被控端主文件配置

# vim/etc/salt/minion
master:10.62.83.211
id:Ctest01 ##修改被控端主機(jī)識別id,建議使用操作系統(tǒng)主機(jī)名來配置

  注意:

  如果環(huán)境中沒有域名解析服務(wù),我們可以配置/etc/hosts文件實(shí)現(xiàn)自解析域名。

3.啟動被控端服務(wù)

#service salt-minion start

集中化管理平臺Saltstack

#chkconfig  salt-minion  on ##配置為開機(jī)服務(wù)自啟動

4. 開放被控端防火墻端口

# vim/etc/sysconfig/iptables
-IINPUT -m state --state new -m tcp -p tcp --dport 4505 -j ACCEPT

五,結(jié)果測試驗(yàn)證

測試結(jié)果

集中化管理平臺Saltstack

思考:    

生產(chǎn)環(huán)境中,成千上萬臺host,我們怎么批量部署被控端呢?哈哈,salt-ssh可以解決。


參考資料:http://docs.saltstack.cn/topics/installation/index.html

參考博文:http://www.cnblogs.com/wjoyxt/p/5083319.html

參考書籍:《Python自動化運(yùn)維技術(shù)與最佳實(shí)踐》


向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI