1. 程式人生 > 實用技巧 >集中化管理平臺saltstack--原理及部署(1)

集中化管理平臺saltstack--原理及部署(1)

簡介

SaltStack是一個伺服器基礎架構集中化管理平臺,具備配置管理、遠端執行、監控等功能,一般可以理解為簡化版的puppet和加強版的func。SaltStack基於Python語言實現,結合輕量級訊息佇列(ZeroMQ)與Python第三方模組(Pyzmq、PyCrypto、Pyjinjia2、python-msgpack和PyYAML等)構建。有如下特性:

(1)、部署簡單、方便;

(2)、支援大部分UNIX/Linux及Windows環境;

(3)、主從集中化管理;

(4)、配置簡單、功能強大、擴充套件性強;

(5)、主控端(master)和被控端(minion)基於證書認證,安全可靠;

(6)、支援API及自定義模組,可通過Python輕鬆擴充套件。

通過部署SaltStack環境,我們可以在成千上萬臺伺服器上做到批量執行命令,根據不同業務特性進行配置集中化管理、分發檔案、採集伺服器資料、作業系統基礎及軟體包管理等,SaltStack是運維人員提高工作效率、規範業務配置與操作的利器。

SaltStack master啟動後預設監聽4505和4506兩個埠。4505(publish_port)為saltstack的訊息釋出系統,4506(ret_port)為saltstack被控端與服務端通訊的埠。如果使用lsof 檢視4505埠,會發現所有的minion在4505埠持續保持在ESTABLISHED狀態。minion與master之間的通訊模式如下:

907596-20170206114449947-986103670.png

被控端直接於主控端的zeromq建立長連線,接收廣播到的任務訊息並執行。即在主控端配置iptables規則:

iptables -I INPUT -m state --state new -m tcp -p tcp --dport 4505 -j ACCEPT

iptables -I INPUT -m state --state new -m tcp -p tcp --dport 4506 -j ACCEPT

saltstack認證原理:

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傳送指令了。

依賴情況:

wKioL1itOF2iqkhpAALCLmaaP5g536.png-wh_50

SaltStack的通訊模式分為2種模式:ZeroMQ、REAT,鑑於REAT目前還不是太穩定,選擇ZeroMQ模式。


安裝

本例採用centos6。5預設的Python2。6。6。。若更改Python版本,同時要修改# vim /usr/bin/yum。

此處僅介紹通過yum安裝saltstack。

預設的yum 源沒有saltstack包,需要改為epel 源。

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

若安裝時出現報錯:

Error: Package: salt-2015.5.10-2.el6.noarch (epel)

Requires: python-requests

Error: Package: salt-2015.5.10-2.el6.noarch (epel)

Requires: PyYAML

You could try using --skip-broken to work around the problem

You could try running: rpm -Va --nofiles --nodigest

需要在/etc/yum.repos.d/加上centos自帶的yum源--CentOS-Base.repo。

master端安裝:yum -y install salt-master

chkconfig salt-master on

minion端安裝:yum -y install salt-minion

chkconfig salt-minion on

調整salt配置並檢驗

注:saltstack的配置檔案格式都是YAML 的,配置的時候需要注意語法

master端:

vi /etc/salt/master

interface: masterIP #繫結master通訊IP。

auto_accept: True #設為自動認證,避免繁瑣的手動執行salt-key確認證書信任。

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

base:

- /srv/salt

更改完成後啟動該服務

minion端:

vi /etc/salt/minion

master: masterIP #繫結master主機IP地址。

id: JYD-test-2 #更改被控端主機識別id,建議用主機名來配置

更改完成後啟動該服務


應用

salt-key -L # 顯示當前所有被控端id

-D 刪除所有認證id

-d id 刪除某個id證書

-A 接受所有id證書請求

-a id 接受某個id證書請求

salt '*' test.ping # 測試所有主機的連通性(此處*為萬用字元)

salt -E '^JYD-test.*' cmd.run 'free -m' # -E使用正則,cmd.run執行遠端命令

-L 以主機id名列表的形式操作部分主機

-G 根據被控主機的grains過濾(後續詳細介紹)

-I 根據被控主機的pillar過濾 (後續詳細介紹)

-N 根據分組名稱過濾(分組在/etc/salt/master裡定義)

-C 根據條件符not and or 匹配

-S 根據被控主機的IP或子網匹配


轉載於:https://blog.51cto.com/jinyudong/1900247