中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

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

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

saltstack詳解+部署apache服務

發布時間:2020-03-02 05:31:10 來源:網絡 閱讀:166 作者:wx5d3a7feeb53cc 欄目:云計算

saltstack介紹

1、 saltstack是使用python語言開發的;
2、 輕量級的管理工具,批量執行命令;
3、常用模塊:pkg(包)、file(文件)、cmd(執行命令或腳本)、user、 service、cron
4、saltstack數據系統
Grains (靜態數據)
pillar (動態數據)

saltstack三大功能,遠程執行,配置管理,云管理

SaltStack是一個服務器基礎架構集中化管理平臺,具備配置管理、遠程執行、監控等功能,基于Python語言實現,結合輕量級消息隊列(ZeroMQ)與Python第三方模塊(Pyzmq、PyCrypto、Pyjinjia2、python-msgpack和PyYAML等)構建。

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

saltstack基本原理

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庫中,locate salt | grep /usr/可以看到salt自帶的所有東西。

這些模塊是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
salt命令,將cmd.run ls命令從salt.client.LocalClient.cmd_cli發布到master,獲取一個Jodid,根據jobid獲取命令執行結果。
master接收到命令后,將要執行的命令發送給客戶端minion。
minion從消息總線上接收到要處理的命令,交給minion._handle_aes處理
minion._handle_aes發起一個本地線程調用cmdmod執行ls命令。線程執行完ls后,調用minion._return_pub方法,將執行結果通過消息總線返回給master
master接收到客戶端返回的結果,調用master._handle_aes方法,將結果寫的文件中
salt.client.LocalClient.cmd_cli通過輪詢獲取Job執行結果,將結果輸出到終端。

saltstack詳解+部署apache服務

優點:

首先,他速度快,基于消息隊列+線程,跑完多臺設備,都是毫秒級別的
其次,非常靈活,源碼是python,方便理解和自定義模塊(python 語言相對于其他的perl、ruby等還是很好理解的)
命令簡單,功能強大

缺點:部署minion端較為不便

saltstack幾個重要的組件
grains grains 是在 minion(客戶端)啟動時收集到的一些信息,比如操作系統類型、網卡ip等靜態信息。
grains的信息并不是動態的,并不會時時變更,它只是在 minion 啟動時收集到的

pillar pillar 和 grains 不一樣,是在 master 上定義的,并且是針對 minion 定義的一些信息。像一些比較重要的數據(密碼)可以存在 pillar 里,還可以定義變量等。

State
他是saltstack的最核心功能,通過預先指定好的sls文件對被控主機進行管理:包/文件/網絡配置/系統服務/系統用戶等。

Saltstack 批量部署apache

實驗環境:
master:192.168.136.167
web01:192.168.136.168
web02:192.168.136.185

#添加主機名,三臺機器都要添加,并且主機要改成相應的名稱
[root@master ~]# vim /etc/hosts
192.168.136.167 master.saltstack.com
192.168.136.168 web01.saltstack.com
192.168.136.185 web02.saltstack.com

#每臺都需要關閉防火墻
[root@master ~]# vim /etc/hostname 
master.saltstack.com

[root@web01 ~]# vim /etc/hostname 
web01.saltstack.com

[root@web02 ~]# vim /etc/hostname 
web02.saltstack.com

#安裝epel源(三臺都要裝)
[root@master ~]# yum install -y epel-release
[root@master ~]# yum -y install salt-master

[root@master ~]# vim /etc/salt/master 
15行 interface: 192.168.175.132   //監聽地址
215行 auto_accept: True        //避免要運行salt-key來確認證書認證
416行 file_roots:
base:
- /srv/salt           //saltstack文件根目錄位置,目錄需要創建
710行組分類:
nodegroups:
group1: 'web01.saltstack.com'
group2: 'web02.saltstack.com'

552行 pillar_opts: True        //開啟pillar功能,同步文件功能
529行 
pillar_roots:
base:
- /srv/pillar         //pillar的主目錄,需要創建

創建salt與pillar文件根目錄:
mkdir /srv/salt
mkdir /srv/pillar

啟動服務器:
systemctl start salt-master
systemctl enable salt-master

netstat -anpt | egrep '4505|4506'

創建salt與pillar文件根目錄:
mkdir /srv/salt
mkdir /srv/pillar

--------------------以下在被控端上操作-------------------

在兩臺上分別配置:
yum -y install salt-minion

vi /etc/salt/minion
修改配置如下:
16行 master: 192.168.175.132     //指定主控端IP
78行 id: web01.saltstack.com     //指定被控端主機名

啟動被控端服務
systemctl start salt-minion

在主控端測試與被控端的通信狀態!
salt '*' test.ping

web01.saltstack.com:
True
web02.saltstack.com:
True

salt '*' cmd.run 'df -h'   //遠程執行命令

salt-key   //查看在 master 上已經被接受過的客戶端

查看被控主機上grains所有值:(每次minion在啟動是都會獲取客戶端信息)
salt 'web01.saltstack.com' grains.items (靜態數據)
salt 'web01.saltstack.com' pillar.items  (動態數據)

配置管理安裝Apache
下面進行的演示是遠程通過 yum 方式安裝 Apache。步驟如下:
修改配置文件
vi /etc/salt/master     // 打開如下內容的注釋
file_roots:
base:
- /srv/salt/
注意:環境: base、dev(開發環境)、test(測試環境)、prod(生產環境)。

mkdir /srv/salt
vi /srv/salt/top.sls
base:
'*':
- apache
注意:'*',則表示在所有的客戶端執行 apache 模塊。

vi /srv/salt/apache.sls
apache-service:
pkg.installed:
- names:                // 如果只有一個服務,那么就可以寫成 –name: httpd 不用再換一行
- httpd
- httpd-devel
service.running:
- name: httpd
- enable: True
注意:apache-service 是自定義的 id 名。pkg.installed 為包安裝函數,下面是要安裝的包的名字。service.running 也是一個函數,來保證指定的服務啟動,enable 表示開機啟動。

重啟服務
#systemctl restart salt-master
執行命令
#salt '*' state.highstate 
向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

甘肃省| 柘城县| 万盛区| 临湘市| 财经| 灌云县| 卓尼县| 白沙| 浮山县| 屏南县| 泰兴市| 江安县| 琼中| 油尖旺区| SHOW| 行唐县| 新竹市| 茶陵县| 新巴尔虎右旗| 辉南县| 兴安盟| 灵寿县| 湘潭县| 宁夏| 黎城县| 兴文县| 乐东| 桂阳县| 建阳市| 荣昌县| 同江市| 安徽省| 台安县| 翼城县| 武邑县| 葵青区| 额敏县| 晋州市| 合水县| 红河县| 治县。|