saltstack學習-1:saltstack介紹、部署、常見問題處理


salt介紹

  • salt是一個基礎平台管理工具,配置文件批量修改,文件同步
  • salt是一個分布式遠程執行系統,用來在遠程節點上執行命令和查詢數據

salt的核心功能

  • 是命令發送到遠程系統,而且是並行發送不是串行的
  • 使用安全加密協議
  • 對網絡要求比較低,使用最小最快的網絡載荷
  • 提供簡單的編程接口(salt使用python開發)

salt的優點

saltstack使用python語言編寫,相當輕量級。 http://www.python.org

saltstack通訊層采用ZeroMQ PUB-SUB pattern實現,使得它很快速。http://www.zearmq.org

saltstack是開源的,通過python可以自己編寫模塊。

salt端口說明

salt-master啟動時會啟動兩個端口

  • 4505:為salt的消息發布專用端口 
  • 4506:位客戶端與服務端通信的端口。  ---監控此端口可以監控哪些minion收到的消息,並回復了結果。

配置文件詳解  ---待整理

salt-master和salt-minion配置文件說明,待整理

官網

開發語言:python

工作方式:master/minion(ZeroMQ),Masterless,Salt-SSH(0.17+)

官網:www.saltstack.com

中文官網:www.saltstack.cn

GitHub:http://github.com/saltstack/salt

注意:

  • centos5/redhat5 版本總的zeromq版本默認是2.1.9,存在keepalive bug,需要升級到3以上的版本。
  • 配置文件語法要符合yaml語法,比如:冒號后面要有一個空格。
  • salt要求python最低為python2.6

SaltStack通訊原理概述

image

Salt的KEY管理

  • salt數據傳輸加密采用AES加密,同事master和minion端采用key管理;
  • minion只有先被master接受(accepted)key后,才能進行管理,同事master端的pub key也會傳遞到minions上,實現更安全的雙向認證;
  • keys默認保存在/etc/salt/pki目錄下;
  • 管理工具:salt-key

salt命令詳解   ---待整理

salt-key

 

一、環境准備

1,配置yum源,---salt使用的是epel源

使用阿里雲的源:rpm -ivh http://mirrors.yun-idc.com/epel//6/x86_64/epel-release-6-8.noarch.rpm

2,規划主機,配置主機名

IP 主機名 部署應用
10.80.0.161 salt-masterold salt-master
10.80.0.162 salt-masternew salt-master
10.80.0.163 dns01 salt-minion
10.80.0.164 dns02 salt-minion

二、在兩台master主機,安裝salt-master應用,並啟動程序

1,安裝master應用,添加開機自啟動

[root@localhost ~]#yum install –y salt-master
[root@localhost ~]#chkconfig salt-master on

2,修改配置文件

#log_level: warning
log_level: debug           #調試時將日志級別調整為debug級別

3,啟動master程序

[root@localhost ~]#/etc/init.d/salt-master start

4,常用命令和參數

  • salt-key  參數
-a 接受指定minion  
-A 接受所有minion  
-r 拒絕指定minion  
-R 拒絕所有minion  
-d 刪除指定minion  
-D 刪除所有minion  
-y 默認yes  

    

三、在兩台minion主機,安裝salt-minion應用,修改配置文件,並啟動程序

1,安裝minion應用,添加開機自啟動

[root@localhost ~]#yum install –y salt-minion
[root@localhost ~]#chkconfig salt-minion on

2,修改minion配置文件

[root@localhost ~]#vi /etc/salt/minion

#master: salt                  minion配置文件中,默認master配置的為salt,此處可以修改為master的IP地址,也可以在/etc/hosts中增加映射,此處我按照第二種方式修改
log_level: debug               調試過程日志級別修改為debug級別,生產系統可根據實際情況配置

[root@localhost ~]#vi /etc/hosts,在文件末尾增加一條記錄

10.80.0.162  salt

3,測試與master主機是否連通

[root@dns01 ~]# ping salt
PING salt (10.80.0.162) 56(84) bytes of data.
64 bytes from salt (10.80.0.161): icmp_seq=1 ttl=64 time=0.351 ms
64 bytes from salt (10.80.0.161): icmp_seq=2 ttl=64 time=0.231 ms

3,啟動minion程序

[root@localhost ~]#/etc/init.d/salt-minion start

四、常見案例

1,minion修改主機名(以dns01為例)

  • minion修改主機名  /etc/network
  • minion刪除緩存(包括榮主機名文件和key文件) rm –rf /etc/salt/minion_id;rm –rf /etc/salt/pki
  • master刪除dns01的key,salt-key –d dns01
  • 重啟minion程序,/etc/init.d/salt-minion restart

   ------結束

注:

  • 如果再master不刪除minion的key,有可能minion程序啟動后,會自動殺死自己。原因是:minion啟動后,會生成自己的key(主機名、IP地址和一些其它信息聯合生成的),當向master注冊后,會保存一個master的key。當主機名修改后自己的key會改變,如果master不刪除之前minion的key,不僅會注冊失敗,minion還會殺死自己的進程;
  • minion的主機名會緩存到/etc/salt/minion_id文件里面,修改主機名后需要刪除這個文件;

 

2,master更換主機,所有minion遷移至新的master

思路(原理):

  • 對minion而言只認master服務器上的的key與minion自己保存的master的key是否有沖突,沒有沖突就不會有問題
  • minion要執向新的master的地址

操作步驟:

第一步:將masterold上的所有key文件打包上傳到masternew服務器上,解壓,然后重啟master

[root@saltmasterold]# tar -zcvf pki.tar.gz /etc/salt/pki/
[root@saltmasterold]# scp pki.tar.gz 10.80.0.162:/etc/salt/pki/
[root@saltmasternew]# cd /etc/salt/;tar -zxvf pki.tar.gz
[root@saltmasternew]#/etc/init.d/salt-master restart
[root@saltmasternew]#salt-key -L
Accepted Keys:
dns01
dns02
Denied Keys:
Unaccepted Keys:
Rejected Keys:

第二步:修改所有minion配置文件,將master執向新的地址

[root@saltmaster salt]# salt '*' cmd.run "sed -i 's/162/161/g' /etc/hosts"
dns02:
dns01:

第三步:驗證是否修改成功

[root@saltmaster salt]# salt '*' cmd.run 'grep salt /etc/hosts'
dns02:
    10.80.0.161  salt
dns01:
    10.80.0.161  salt

第四步:重啟所有minion服務

[root@saltmaster salt]# salt '*' service.restart salt-minion
dns02:
    True
dns01:
    True

第五步:在masternew上驗證是否接管了所有minion

[root@masternew]# salt '*' test.ping
dns01:
    True
dns02:
    True

------遷移結束


免責聲明!

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



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