SaltStack Job Cache管理

本文翻译自SaltStack 2017.7版本官方英文资料。

Salt Master维护作业的缓存数据,可以通过job runner查询。 这个job cache被称为默认Job Cache。

1. 默认作业缓存

配置作业缓存时有许多选项可使用。 默认的缓存系统使用Salt Master上的本地存储,并且可以在作业缓存目录中找到(在Linux系统上,这通常是/var/cache /salt/master/jobs)。 默认缓存系统适用于大多数部署,因为它通常不需要任何进一步的配置或管理。
默认作业缓存是临时缓存,作业将被存储24小时。 如果默认缓存需要将作业存储更长时间,则可以通过更改Salt Master配置文件中的keep_jobs参数轻松调整时间。 传入的值通过小时测量:
keep_jobs: 24

减少默认作业缓存的大小
默认作业缓存有时可能成为大型部署(超过5000个小时)的负担。 禁用作业缓存将使先前执行的作业对作业系统不可用,并且通常不推荐使用。 通常它明智的做法是确保主机可以访问更快的IO系统,或者将tmpfs挂载到作业目录。
但是,您可以通过在Salt Master配置文件中将job_cache设置为False来禁用它。 将此值设置为False意味着Salt Master将不再缓存minion返回值,但每个作业的JID目录和jid文件仍将被创建。 这个JID目录是检查和防止JID冲突所必需的。
作业缓存的默认位置位于 /var/cache /salt/master/jobs目录中。
除了在Salt Master配置文件中将keep_jobs选项设置为较小的值(例如1)之外,将job_cache`设置为False将会减小默认作业缓存的大小,从而减少Salt Master的负担。
注意:更改keep_jobs选项可设置保留旧作业信息的小时数,默认值为24小时。 尝试更频繁地使缓存清理器运行时,不要将此值设置为0,因为这意味着缓存清理器将永远不会运行。

2. 其它的作业缓存配置选项

许多部署可能希望使用外部数据库来维护执行作业的长期登记管理。 Salt为此提供了两个主要机制来完成这个任务,即the master job cache和the external job cache。
详情参见下面一个章节:将作业结果存储在外部系统。

3. 将作业结果存储在外部系统

作业执行后,作业结果由每个Salt Minion返回给Salt Master。 这些结果存储在默认作业缓存中。
除了缺省作业缓存之外,Salt还提供了两种额外的机制将作业结果发送到其他系统(数据库,本地系统日志和其他系统):
  • External Job Cache
  • Master Job Cache
这两种机制之间的主要区别在于返回结果的位置(来自Salt Master或Salt Minion)。 配置这些选项中的任何一个都将使Jobs Runner功能自动查询远程存储以获取信息。

3.1 外部作业缓存——Minion侧运行Returner

当配置使用外部作业缓存时,数据将像往常一样返回到Salt Master上的默认作业缓存,然后使用Salt Minion上运行的Salt returner模块将结果也发送到外部作业缓存一份。
SaltStack Job Cache管理_第1张图片
  • 优点:数据存储不会给Salt Master带来额外的负担。
  • 缺点:每个Salt Minion连接到外部作业缓存,这可能导致大量连接。 还需要额外配置才能在所有Salt Minions上获得返回模块配置。

3.2 外部作业缓存——Master侧运行Returner

New in version 2014.7.0.
您可以配置为使用Master Job Cache从Salt Master发送作业结果,而不是配置每个Salt Minion上使用的外部作业缓存。 在这种配置中,Salt Minions像往常一样将数据发送到默认作业缓存,然后Salt Master使用运行在Salt Master上的Salt returner模块将数据发送到外部系统。
SaltStack Job Cache管理_第2张图片
  • 优点:外部缓存系统只需要维护单个连接。 这对数据库和类似系统是首选。
  • 缺点:在Salt Master上增加了额外的负载。

3.3 配置一个外部缓存系统的步骤

Step 1: 什么是Salt Returners
在配置作业缓存之前,了解Salt Returners模块(“returners”)至关重要。 Returners是可插拔的Salt模块,可以获取作业返回的数据,然后执行任何必要的步骤将数据发送到外部系统。 例如,Returners可能会建立连接,进行身份验证,然后格式化和传输数据。
Salt Returner系统提供了外部和Master作业缓存系统所使用的核心功能,并且两个系统可以使用相同的returners。
Salt目前提供了许多不同的returners,让您连接到各种各样的系统。一个完整的Salt Returners列表参见 RETURNER MODULES。 每个返回者的配置都不相同,因此请确保您阅读并遵循该页面链接的说明。
例如,MySQL Returner需要:
  • 使用提供的模式创建的数据库(结构可在MySQL returner处获得)
  • 创建一个对上一步创建的数据库有使用权限的用户
  • 可选的SSL配置
一个简单的returner,如Slack或HipChat,需要:
  • An API key/version
  • The target channel/room
  • The username that should be used to send the message
Step 2: 配置Returner
在了解配置并准备好外部系统后,必须声明配置要求。
External Job Cache
Returner配置设置可以在Salt Minion配置文件、Minion的pillar数据或Minion的grains中声明。
如果在多个位置指定external_job_cache配置设置,则按以下顺序检索选项。 找到的第一个配置位置是将要使用的位置。
  • Minion configuration file
  • Minion's grains
  • Minion's pillar data
Master Job Cache
Master作业缓存的returner配置设置应该在Salt Master的配置文件中声明。
配置文件示例
MySQL 配置需求:
mysql.host: 'salt'
mysql.user: 'salt'
mysql.pass: 'salt'
mysql.db: 'salt'
mysql.port: 3306
Slack配置需求:
slack.channel: 'channel'
slack.api_key: 'key'
slack.from_name: 'name'
在准备好returner并将需要的配置添加到配置文件后,即可以启用外部或Master作业缓存系统了。

Step 3: 启用 External or Master Job Cache功能
是一个单行的配置,用于指定已配置的returner,用于将所有作业数据发送到外部系统。
External Job Cache
要启用returner作为外部作业缓存(Minion侧),请将以下行添加到Salt Master配置文件中:
ext_job_cache:
例如:
ext_job_cache: mysql
需要注意的一点是:
当配置外部作业缓存(Minion侧)时,returner的设置是被添加到Minion配置文件,但外部作业缓存的设置是在Master的配置文件中配置。

Master Job Cache
要启用returner作为Master Job Cache(master侧),请将以下行添加到Salt Master配置文件中:
master_job_cache:
例如:
master_job_cache: mysql
验证returner配置的设置是否在Master配置文件中,并确保在进行配置更改后重新启动salt-master服务。

你可能感兴趣的:(SaltStack)