热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

SaltStack返回值存储

文章目录1.概述2.return组件2.1return工作流程2.2return重定向至mysql3.jobcache组件3.1jobcache重定向至mysql3.2job管理1

文章目录

  • 1. 概述
  • 2. return组件
    • 2.1 return工作流程
    • 2.2 return重定向至mysql
  • 3. job cache组件
    • 3.1 job cache重定向至mysql
    • 3.2 job管理


1. 概述



默认情况下,发送给 minions 的命令的返回值将返回给 master。

通过使用salt定向器,可以将结果数据重定向到外部数据存储区,以便进行分析和归档。

returner接口允许返回数据被发送到任何可以接收数据的系统。这意味着返回的数据可以发送到Redis服务器,MongoDB服务器,MySQL服务器,或任何系统。

重定向返回值的组件:



  • return

  • job_cache


2. return组件



return组件支持minion端执行命令后将执行结果返回给某应用程序进行保存

return组件支持的对结果进行的存储方式有多种,如syslog, mysql, redis, mongodb等

可通过如下指令查看returners支持的存储方式:

[root@node01 ~]# salt '*' sys.list_returners
node02:- carbon- couchdb- elasticsearch- etcd- highstate- local- local_cache- mattermost- multi_returner- pushover- rawfile_json- slack- slack_webhook- smtp- splunk- sqlite3- syslog- telegram

2.1 return工作流程

return是在Master端触发任务,然后Minion接受处理任务后直接与return存储服务器建立连接,然后把数据return存到存储服务器。

关于这点一定要注意,因为此过程都是Minion端操作存储服务器,所以要确保Minion端的配置跟依赖包是正确的,这意味着我们将必须在每个Minion上安装指定的return方式依赖包,假如使用Mysql作为return存储方式,那么我们将在每台Minion上安装 MySQL-python 模块。


2.2 return重定向至mysql

环境:


























主机名IP
masternode01172.16.78.125
minionnode02172.16.78.128
mysqlnode03172.16.78.129

在minion上安装MySQL-python模块

[root@node01 ~]# salt '*' pkg.install MySQL-python
node02:----------MySQL-python:----------new:1.2.5-1.el7old:

部署一台mysql服务器用作存储服务器:

[root@node03 ~]# yum -y install mariadb-server
[root@node03 ~]# systemctl enable --now mariadb//创建数据库和表结构
[root@node03 ~]# mysql
MariaDB [(none)]> CREATE DATABASE `salt`DEFAULT CHARACTER SET utf8DEFAULT COLLATE utf8_general_ci;
Query OK, 1 row affected (0.00 sec)MariaDB [(none)]> USE `salt`;
Database changedMariaDB [salt]> CREATE TABLE `jids` (`jid` varchar(255) NOT NULL,`load` mediumtext NOT NULL,UNIQUE KEY `jid` (`jid`)) ENGINE=InnoDB DEFAULT CHARSET=utf8;
Query OK, 0 rows affected (0.01 sec)MariaDB [salt]> 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;
Query OK, 0 rows affected (0.00 sec)MariaDB [salt]> 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;
Query OK, 0 rows affected (0.01 sec)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]> flush privileges;
Query OK, 0 rows affected (0.00 sec)

配置minion:

[root@node02 ~]# vim /etc/salt/minion
mysql.host: '172.16.78.129'
mysql.user: 'salt'
mysql.pass: 'salt'
mysql.db: 'salt'
mysql.port: 3306
[root@node02 ~]# systemctl restart salt-minion

在master上测试存储到mysql中,并在数据库中查看

[root@node01 ~]# salt '*' test.ping --return mysql
node02:TrueMariaDB [salt]> select * from salt_returns\G
*************************** 1. row ***************************fun: test.pingjid: 20200822090413404092return: trueid: node02success: 1full_ret: {"fun_args": [], "jid": "20200822090413404092", "return": true, "retcode": 0, "success": true, "fun": "test.ping", "id": "node02"}
alter_time: 2020-08-23 01:02:28

3. job cache组件



return时是由Minion直接与存储服务器进行交互,因此需要在每台Minion上安装指定的存储方式的模块,
当Minion很多的时候,部署起来就特别麻烦

那么我们能否直接在Master上就把返回的结果给存储到存储服务器呢?

job cache解决了这个问题 。job cache是当Minion将结果返回给Master后,由Master将结果给缓存在本地,然后将缓存的结果给存储到指定的存储服务器


3.1 job cache重定向至mysql

环境:


























主机名IP
masternode01172.16.78.125
minionnode02172.16.78.128
mysqlnode03172.16.78.129

开启master端的master_job_cache:

[root@node01 ~]# vim /etc/salt/master
master_job_cache: mysql
mysql.host: '172.16.78.129'
mysql.user: 'salt'
mysql.pass: 'salt'
mysql.db: 'salt'
mysql.port: 3306
[root@node01 ~]# systemctl restart salt-master

在数据库服务器中清空表内容:

[root@node03 ~]# mysql
MariaDB [salt]> delete from salt.salt_returns;
Query OK, 2 rows affected (0.00 sec)
MariaDB [salt]> select * from salt.salt_returns\G
Empty set (0.00 sec)

在master上再次测试能否存储至数据库:

[root@node01 ~]# salt '*' test.ping
node02:TrueMariaDB [salt]> select * from salt_returns\G
*************************** 1. row ***************************fun: test.pingjid: 20200822090413404092return: trueid: node02success: 1full_ret: {"fun_args": [], "jid": "20200822090413404092", "return": true, "retcode": 0, "success": true, "fun": "test.ping", "id": "node02"}
alter_time: 2020-08-23 01:02:28

3.2 job管理

获取任务的jid

[root@node01 ~]# salt '*' test.ping -v
Executing job with jid 20200822131258343023
-------------------------------------------node02:True

通过jid获取此任务的返回结果

[root@node01 ~]# salt-run jobs.lookup_jid 20200822131258343023
node02:True

推荐阅读
  • 深入解析Pytest Fixture与Conftest的高级应用
    本文详细探讨了Pytest中的Fixture机制及其在conftest.py文件中的全局配置应用,涵盖Fixture的基本概念、定义、多种使用场景以及作用域等内容,适合希望深入了解Pytest测试框架的开发者。 ... [详细]
  • 手把手教你构建简易JSON解析器
    本文将带你深入了解JSON解析器的构建过程,通过实践掌握JSON解析的基本原理。适合所有对数据解析感兴趣的开发者。 ... [详细]
  • 使用 NDB 提升 Node.js 应用调试体验
    本文介绍了由 Google Chrome 实验室推出的新一代 Node.js 调试工具 NDB,旨在为开发者提供更加高效和便捷的调试解决方案。 ... [详细]
  • CentOS 7.4 KVM虚拟化平台搭建指南
    本文详细介绍了如何在CentOS 7.4系统上搭建KVM虚拟化平台,包括环境准备、网络配置、KVM安装与管理等步骤,适用于希望利用KVM进行虚拟化部署的技术人员。 ... [详细]
  • 本文介绍了如何利用高德地图API实现一个高效的地点选择组件,适用于需要用户选择具体位置的应用场景,如活动邀请函填写等。该组件支持从地图中选择地点,并自动将地点信息回填至表单中。 ... [详细]
  • 本文介绍了如何在 Linux 系统上构建网络路由器,特别关注于使用 Zebra 软件实现动态路由功能。通过具体的案例,展示了如何配置 RIP 和 OSPF 协议,以及如何利用多路由器查看工具(MRLG)监控网络状态。 ... [详细]
  • 本文介绍了使用Node.js开发超市管理系统的经验分享,重点讨论了项目中使用的技术栈及其实现细节,包括前端Bootstrap和后端Express框架的应用,以及MongoDB数据库的操作。 ... [详细]
  • 本文将详细介绍如何使用ViewPager实现多页面滑动切换,并探讨如何去掉其默认的左右切换动画效果。ViewPager是Android开发中常用的组件之一,用于实现屏幕间的内容切换。 ... [详细]
  • Iris 开发环境配置指南 (最新 Go & IntelliJ IDEA & Iris V12)
    本指南详细介绍了如何在最新的 Go 语言环境及 IntelliJ IDEA 中配置 Iris V12 框架,适合初学者和有经验的开发者。文章提供了详细的步骤说明和示例代码,帮助读者快速搭建开发环境。 ... [详细]
  • VSCode中使用Clang-Format进行C/C++代码格式化配置
    本文介绍了如何在VSCode中配置Clang-Format以实现C/C++代码的自动格式化,包括安装必要的扩展、配置文件的创建以及常用设置的解释。建议阅读官方文档以获取更多详细信息。 ... [详细]
  • 本文档详细规划了从基础到高级的软件测试学习路径,包括但不限于测试基础、Linux和数据库、功能测试、Python编程、接口测试、性能测试、金融项目实战、UI自动化测试等内容,旨在为初学者和进阶者提供全面的学习指导。 ... [详细]
  • [TOC]Process的几个用法和守护进程一、Process的join用法话不多说,直接上代码二、Process的pid和ppid用法需要先导入os模块站在当前进程的角度:os. ... [详细]
  • 本文旨在探讨Linux系统中两种重要的进程间通信(IPC)机制——System V和POSIX的标准及其特性,为开发者提供深入的理解。 ... [详细]
  • Windows 系统中 Flutter 与 IntelliJ IDEA 的环境配置指南
    本指南详细介绍了如何在 Windows 操作系统上设置 Flutter 开发环境,并集成至 IntelliJ IDEA 中,适合初学者及专业人士参考。 ... [详细]
  • 实践指南:利用Jenkins与JMeter实现自动化测试报告通知
    本文详细介绍了如何结合Jenkins和JMeter工具,通过自定义脚本向用户发送测试报告的通知。这不仅提高了开发团队的工作效率,也确保了信息的及时传递。 ... [详细]
author-avatar
陈苏女士
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有