自動化運維工具 SaltStack (四) (Job概念+將job存儲在數據庫中的兩種方式)

Job的概念

1.master在下發指令任務時,會附帶上產生的jid。

Jid: job id 格式爲%Y%m%d%H%M%S%f

2.minion在接收到指令開始執行時,會在本地的/var/cache/salt/minion/proc目錄下產生該jid命名的文件,用於在執行過程中master查看當前任務的執行情況。指令執行完畢將結果傳送給master後,刪除該臨時文件。

3.Job緩存默認保存24小時:

# vim /etc/salt/master
keep_jobs: 24

master端Job緩存目錄:

/var/cache/salt/master/jobs

job管理中的基本命令

saltutil模塊中的job管理方法

saltutil.running        #查看minion當前正在運行的jobs

saltutil.find_job <jid>    #查看指定jid的job(minion正在運行的jobs)

saltutil.signal_job <jid>  <single>  #給指定的jid進程發送信號

saltutil.term_job <jid>  #終止指定的jid進程(信號爲15)

saltutil.kill_job  <jid>   #終止指定的jid進程(信號爲9

salt runner中的job管理方法

salt-run  jobs.active  #查看所有minion當前正在運行的jobs(在所有minion上運行saltutil.running)

salt-run jobs.lookup_jid <jid#從master jobs cache中查詢指定的jid的運行結果

salt-run jobs.list_jobs  #列出當前master jobs cache中的所有job

將job存儲到數據庫

除了默認作業緩存之外,Salt還提供了兩種額外的機制來將作業結果發送到其他系統(數據庫,本地系統日誌和其他系統):

External Job Cache
Master Job Cache

這兩種機制之間的主要區別在於返回結果是來自Salt Master還是Salt Minion

官方文檔:

http://docs.saltstack.cn/ref/returners/all/salt.returners.mysql.html#module-salt.returners.mysql

External Job Cache

配置外部作業緩存後,數據會像往常一樣返回Salt Master上的默認
作業緩存,然後使用Salt Minion上運行的Salt返回器模塊將結果發送到外部作業緩存

在這裏插入圖片描述

優點:存儲數據時不會在Salt Master上增加額外負載。
缺點:每個Salt Minion都連接到外部作業緩存,這可能會導致大量連接。 還需要額外的配置才能在所有Salt Minions上獲得返回者模塊設置。

在這裏插入圖片描述實驗背景:

172.25.2.3 ser2 salt-master
172.25.2.4 ser3 salt-minion
172.25.2.5 ser4 salt-minion

實驗步驟:

1.在ser2上安裝數據庫:

yum install -y mariadb-server
systemctl start mariadb

在這裏插入圖片描述在這裏插入圖片描述2.創建數據庫

CREATE DATABASE  `salt`
  DEFAULT CHARACTER SET utf8
  DEFAULT COLLATE utf8_general_ci;

USE `salt`;

--
-- Table structure for table `jids`
--

DROP TABLE IF EXISTS `jids`;
CREATE TABLE `jids` (
  `jid` varchar(255) NOT NULL,
  `load` mediumtext NOT NULL,
  UNIQUE KEY `jid` (`jid`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

--
-- Table structure for table `salt_returns`
--

DROP TABLE IF EXISTS `salt_returns`;
CREATE TABLE `salt_returns` (
  `fun` varchar(50) NOT NULL,
  `jid` varchar(255) NOT NULL,
  `return` mediumtext NOT NULL,
  `id` varchar(255) NOT NULL,
  `success` varchar(10) NOT NULL,
  `full_ret` mediumtext NOT NULL,
  `alter_time` TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
  KEY `id` (`id`),
  KEY `jid` (`jid`),
  KEY `fun` (`fun`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

--
-- Table structure for table `salt_events`
--

DROP TABLE IF EXISTS `salt_events`;
CREATE TABLE `salt_events` (
`id` BIGINT NOT NULL AUTO_INCREMENT,
`tag` varchar(255) NOT NULL,
`data` mediumtext NOT NULL,
`alter_time` TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
`master_id` varchar(255) NOT NULL,
PRIMARY KEY (`id`),
KEY `tag` (`tag`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

在這裏插入圖片描述在這裏插入圖片描述在這裏插入圖片描述在這裏插入圖片描述在這裏插入圖片描述3.將數據庫導入到mariadb,並且進行授權。

[root@ser2 ~]#mysql -uroot -pwestos< add.sql
[root@ser2 ~]# mysql
MariaDB [(none)]> use salt;
MariaDB [salt]> show tables;
+----------------+
| Tables_in_salt |
+----------------+
| jids           |
| salt_events    |
| salt_returns   |
+----------------+
3 rows in set (0.00 sec)
MariaDB [salt]> grant all on salt.* to salt@'%' identified by 'salt'; # 授權所有主機可登陸
Query OK, 0 rows affected (0.00 sec)
MariaDB [salt]> grant all on salt.* to salt@'localhost' identified by 'salt';

在這裏插入圖片描述在這裏插入圖片描述在這裏插入圖片描述在這裏插入圖片描述在這裏插入圖片描述在這裏插入圖片描述在這裏插入圖片描述4.minion端安裝python的mysql模塊,才能使得 salt能夠連接mysql

[root@ser3 ~]# yum install -y MySQL-python.x86_64 # 安裝mysql的接口
[root@ser3 ~]# vim /etc/salt/minion
return: mysql
mysql.host: '172.25.2.3'
mysql.user: 'salt'
mysql.pass: 'salt'
mysql.db: 'salt'
mysql.port: 3306

[root@server3 ~]# yum install -y mysql
[root@server3 ~]# mysql -h 172.25.3.3 -usalt -p  # 可以登陸並查看數據庫
MariaDB [(none)]> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| salt               |
| test               |
+--------------------+
3 rows in set (0.00 sec)

[root@server3 ~]# systemctl restart salt-minion
測試:
[root@server2 ~]# salt server3 test.ping --return mysql
server3:
    True

在這裏插入圖片描述在這裏插入圖片描述在這裏插入圖片描述在這裏插入圖片描述在這裏插入圖片描述在這裏插入圖片描述在這裏插入圖片描述在這裏插入圖片描述5.在master端進行測試
(1)
在這裏插入圖片描述在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述在這裏插入圖片描述(2)
在這裏插入圖片描述在這裏插入圖片描述在這裏插入圖片描述在這裏插入圖片描述在這裏插入圖片描述

Master Job Cache

配置主作業緩存以從Salt Master發送作業結果,而不是在每個Salt Minion上配置外部作業緩存。
在此配置中,Salt Minions像往常一樣將數據發送到默認作業緩存,然後Salt Master使用在Salt Master上運行的Salt返回器模塊將數據發送到外部系統

在這裏插入圖片描述
1.優點:外部系統需要單個連接。 這對於數據庫和類似系統來說是首選。
2.缺點:在Salt Master上增加額外負載

實驗步驟:

[root@ser2 ~]# yum install -y MySQL-python.x86_64

[root@ser2 ~]# vim /etc/salt/master
master_job_cache: mysql
mysql.host: 'localhost'
mysql.user: 'salt'
mysql.pass: 'salt'
mysql.db: 'salt'
mysql.port: 3306

[root@ser2 ~]# systemctl restart salt-master

1.在這裏插入圖片描述在這裏插入圖片描述在這裏插入圖片描述在這裏插入圖片描述在這裏插入圖片描述2.測試
在這裏插入圖片描述
在這裏插入圖片描述在這裏插入圖片描述在這裏插入圖片描述在這裏插入圖片描述在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章