作为安装后过程的一部分,需要安装、配置和升级主节点插件。通过主节点插件,Salt 主节点能够与 SaltStack Config 进行通信。主节点插件包含各种可调整以提高性能的设置,这些设置对于大型或繁忙环境尤为有用。

通常,在环境中与 SaltStack Config 进行通信的每个 Salt 主节点上安装主节点插件。例如,如果使用具有多个 Salt 主节点的配置(有时称为多主节点设置),必须在每个 Salt 主节点上安装主节点插件。

注: 作为 VMware 移除有问题术语计划的一部分,Salt 主节点术语将在 SaltStack Config 以及相关产品和文档中替换为更贴切的术语。此术语更新可能需要几个发布周期才能完全完成。

开始前

安装并配置主节点插件是一系列步骤中的安装后步骤,这些步骤应按特定顺序执行。首先,完成其中一个安装方案,然后阅读安装许可证密钥安装后页面。

必须使用以下命令在 Salt 主节点上安装 PyJWT 库:
pip3 install pyjwt==2.3.0

何时需要安装主节点插件?

在全新安装 SaltStack Config 后,需要在所有 Salt 主节点上安装主节点插件。在不需要与 SaltStack Config 进行通信的 Salt 主节点上,不需要安装主节点插件。

如果使用的是在节点少于 1000 个的情况下安装 SaltStack Config 安装方案,则无需在安装了 SaltStack Config 及其相关架构的节点上安装主节点插件。安装程序会自动在 Salt 主节点安装主节点插件。但是,仅在运行安装程序的 Salt 主节点上安装主节点插件。如果具有多个主节点,仍需要在其他主节点上安装主节点插件。

如果手动安装 SaltStack Config(不建议),则应先完成以下操作,然后再安装主节点插件:

  • 安装并配置 PostgreSQL 数据库
  • 安装和配置 Redis 数据库
  • 启用 SSL(可选)

使用主插件工作区安装主插件

注: SaltStack Config 版本 8.11.2 或更高版本支持此功能。
注: Salt 主节点必须以 root 用户身份运行。

可以从 SaltStack Config 用户界面,导航到管理 > 主节点插件,下载并安装最新的主节点插件版本。从“主节点插件”选项卡,可以下载插件或下载客户端。

下载主节点插件后,必须配置主节点插件

使用 CLI 安装主节点插件

要在 Salt 主节点上安装主节点插件,请执行以下操作:

  1. 登录到 Salt 主节点。
  2. (如有必要)从 Customer Connect 下载主节点插件 wheel。

    主节点插件包含在自动安装程序 .tar.gz 文件中。下载并提取 .tar.gz 文件后,可以在 sse-installer/salt/sse/eapi_plugin/files 目录中找到主节点插件。

  3. 通过手动安装更新的 Python wheel 来安装主节点插件。使用以下示例命令,并替换为 wheel 文件的确切名称:

    RHEL/CentOS

    sudo pip3 install SSEAPE-file-name.whl --prefix /usr

    Ubuntu

    sudo pip3 install SSEAPE-file-name.whl
    注: 某些用户可能需要根据操作系统将语法更改为 pip3.6pip36

配置主插件

要在安装主节点插件后配置 Salt 主节点,请执行以下操作:

  1. 登录到 Salt 主节点并验证 /etc/salt/master.d 目录是否存在,如果不存在,则创建该目录。
  2. 生成主配置设置。
    小心: 如果要在升级安装时保留设置,请备份现有的主节点插件配置文件,然后再运行此步骤。之后,将相关设置从现有配置复制到新生成的文件中。
    sudo sseapi-config --all > /etc/salt/master.d/raas.conf

    如果运行此命令导致错误,则可能与最初安装 Salt 时所使用的方法相关。如果通过 SaltStack Config 安装程序安装 Salt,则安装可能包括一个称为 Salt Crystal 的脱机软件包,这需要特殊的升级说明。有关详细信息,请参见故障排除页面。

  3. 编辑生成的 raas.conf 文件并按如下所示更新值,以验证 API (RaaS) 使用的证书并设置其 IP 地址。
    说明

    sseapi_ssl_validate_cert

    验证 API (RaaS) 使用的证书。默认值为 True

    如果使用自己 CA 颁发的证书,请将此值设置为 True 并配置 sseapi_ssl_casseapi_ssl_certsseapi_ssl_cert: 设置。

    否则,请将此值设置为 False,不验证证书。

    sseapi_ssl_validate_cert:False

    sseapi_server

    RaaS 节点的 HTTP IP 地址,例如,http://example.comhttps://example.com(如果启用了 SSL)。

    sseapi_command_age_limit

    设置跳过可能失效的旧作业的期限(以秒为单位)。例如,要跳过一天前的作业,请设置为:

    sseapi_command_age_limit:86400

    跳过的作业将继续存在于数据库中,并在 SaltStack Config 用户界面中显示状态 Completed

    某些环境可能需要 Salt 主节点长时间脱机,并且需要 Salt 主节点在重新联机后运行排队的任何作业。如果此情况适用于您的环境,请将期限设置为 0

    sseapi_windows_minion_deploy_delay 设置延迟以允许所有必需的 Windows 服务变为活动状态。默认值为 180 秒。
    sseapi_linux_minion_deploy_delay 设置延迟以允许所有必需的 Linux 服务变为活动状态。默认值为 90 秒。
    sseapi_local_cache 设置某些数据在每个 Salt 主节点上本地缓存的时长。默认值为 300 秒(5 分钟)。
  4. 可选:仅手动安装需要执行此步骤。要验证是否可以在连接主节点插件之前连接到 SSL,请编辑生成的 raas.conf 文件,更新以下值。如果不更新这些值,则主节点插件将使用默认生成的证书。
    说明
    sseapi_ssl_ca CA 文件的路径。
    sseapi_ssl_cert 证书的路径。默认值为 /etc/pki/raas/certs/localhost.crt
    sseapi_ssl_key 证书私钥的路径。默认值为 /etc/pki/raas/certs/localhost.key
    id 在开头添加 #,注释掉此行。不需要此项。
  5. 可选:更新与性能相关的设置。对于大型或繁忙环境,可以通过调整以下设置提高 Salt 主节点与 SaltStack Config 之间通信的性能。
    • 启用事件队列(在 salt 2019.2.2 及更高版本中提供)。事件可以在 Salt 主节点上排队,并针对多个事件使用单个事务以批处理方式发送到事件返回程序。默认情况下,禁用此队列机制。要启用事件队列,请在 Salt 主节点插件配置文件中进行以下设置:
      event_return_queue:2500
      event_return_queue_max_seconds:5

      建议的最大事件队列大小为 2500,如上所示。当队列已满时,将刷新队列,将事件转发到事件返回程序。较低的值可能更适合小型或不太繁忙的环境。

      在某些情况下,Salt 事件总线可能不太繁忙,致使队列定期达不到其最大大小。如果队列中的最早事件早于配置的值,则无论队列中有多少个事件,设置 event_return_queue_max_seconds 都会使队列刷新。

    • 启用并配置 eventqueuerpcqueue 引擎:

      这些引擎会将与 SaltStack Config 的某些通信从性能关键型代码路径卸载到专用进程。当这些引擎正在等待与 SaltStack Config 通信时,负载会存储在 Salt 主节点的本地文件系统中,以便数据可以在 Salt 主节点重新启动后持久保留。

      要启用引擎,请取消注释 Salt 主节点插件配置文件 (raas.conf) 中的以下设置:

      engines:
        - sseapi: {}
        - eventqueue: {}
        - rpcqueue: {}
        - jobcompletion: {}
        - keyauth: {}

      要配置 eventqueue 引擎,请取消注释并更新以下设置:

      sseapi_event_queue:
        name: sseapi-events
        strategy: always
        push_interval: 5
        batch_limit: 2000
        age_limit: 86400
        size_limit: 35000000
        vacuum_interval: 86400
        vacuum_limit: 350000
        forward: []

      可以根据队列参数的协同工作方式调整这些队列参数。例如,假设 Salt 事件总线上每秒平均 400 个事件,上述设置允许在 Salt 主节点上收集约 24 小时的已排队事件流量,之后由于大小或期限限制而放弃最早的事件。

      要配置 rpcqueue 引擎,请取消注释并更新以下设置:

      sseapi_rpc_queue:
          name: sseapi-rpc
          strategy: always
          push_interval: 5
          batch_limit: 500
          age_limit: 3600
          size_limit: 360000
          vacuum_interval: 86400
          vacuum_limit: 100000
    • 启用负载缓存:
      sseapi_local_cache:
          load:3600
      注: 如果启用了 rpcqueue 引擎,还必须启用负载缓存,Salt 主节点才能正确处理作业。
    • 限制工作节点颗粒负载大小:
      sseapi_max_minion_grains_payload:2000
    • 启用跳过早于定义时间(以秒为单位)的作业。例如,使用 86400 会将其设置为跳过一天前的作业。如果设置为 0,将禁用此功能:
      sseapi_command_age_limit:0
      注:

      此功能在升级期间非常有用,可防止数据库中存储的旧命令意外运行。

    Salt 中的事件队列以及 Salt 主节点插件中的队列引擎、负载缓存、颗粒负载大小限制和命令期限限制协同工作,不仅增加了吞吐量,而且减少了在对性能最敏感的代码路径中 Salt 主节点与 SaltStack Config 之间的通信延迟。

  6. 重新启动主服务。
    sudo systemctl restart salt-master
  7. 可选:可能希望运行测试作业以确保主节点插件现在支持在主节点与 RaaS 节点之间进行通信。
    salt -v '*' test.ping

即使没有显示任何活动(例如未连接任何工作节点),也可能表示配置正确。

配置设置参考

配置文件中的这些设置使每个 Salt 主节点都能够连接到 API (RaaS)。可以在 /etc/salt/master.d/raas.conf 配置文件中找到这些设置。

重要说明:

raas.conf 文件中的 Salt 主节点设置优先于 /etc/salt/master 中的现有设置。如果在 /etc/salt/master 中对 fileserver_backendext_pillar 设置进行了自定义,则需要手动合并这些设置,以便它们只显示在一个文件中。可以选择对后端重新排序以更改优先级。

下表介绍了常规配置设置:

选项 说明
id Salt 主节点 ID,如果未设置,则自动生成
sseapi_server SSEAPI 服务器的 URL,例如 https://sse.example.com:443
engines 要启用的 Salt 引擎,建议使用 sseapieventqueuerpcqueuejobcompletionkeyauth
master_job_cache 建议使用 sseapi,以使用 SaltStack Config 主节点作业缓存
event_return Salt 事件返回程序,建议使用 sseapi,以使用 SaltStack Config 事件返回程序
ext_pillar 外部 pillar 源,建议使用 sseapi
fileserver_backend 文件服务器后端,建议使用 sseapiroots
sseapi_update_interval 从文件服务器更新的频率(以秒为单位,默认为 60)
sseapi_poll_interval SaltStack Config 中轮询新数据的频率(以秒为单位,默认为 30)
sseapi_jce_poll_interval jobcompletion 引擎中的迭代之间增加了延迟,因此,每天每个 Salt 主节点最多发送 5760 个 find_job 命令(以秒为单位,默认为 15)
sseapi_timeout API (RaaS) 调用超时(以秒为单位,默认为 200)
sseapi_pubkey_path 用于向 SaltStack Config 验证 Salt 主节点身份的公钥文件的路径
sseapi_key_rotation Salt 主节点 SaltStack Config 身份验证密钥轮换时间间隔(以秒为单位,默认为 86400)
sseapi_cache_pillar 是否在 SaltStack Config 中缓存 pillar 数据(True 或 False,默认为 False)
sseapi_cluster_id (可选)Salt 主节点集群名称,用于在 SaltStack Config 中将 Salt 主节点分组到集群
sseapi_failover_master 此 Salt 主节点是否为故障切换 Salt 主节点(True 或 False,默认为 False)
sseapi_command_age_limit 是否跳过早于定义时间的 API (RaaS) 命令(以秒为单位,0 表示禁用,默认为 0)

下表介绍了 SSL 设置:

选项 说明
sseapi_ssl_key 证书私钥的路径
sseapi_ssl_cert 证书的路径
sseapi_ssl_validate_cert 是否验证 SaltStack Config SSL 证书(True 或 False,默认为 True)

下表介绍了事件队列引擎设置,这些设置显示在 sseapi_event_queue 标题下:

选项 说明
name 事件队列名称(默认为 sseapi-events,无需更改)
strategy 何时对事件进行排队(alwayson_failurenever,默认为 never
push_interval 将事件推送到 SaltStack Config 的频率(以秒为单位,默认为 5)
batch_limit 每时间间隔要推送到 SaltStack Config 的最大事件数量(默认为 2000)
age_limit 最长排队事件期限;丢弃最早的事件(以秒为单位,默认为 86400)
size_limit 最大队列大小;丢弃最早的事件(事件数,默认为 35000000)
vacuum_interval 对队列数据库进行 vacuum 操作的频繁(以秒为单位,默认为 86400)
vacuum_limit 对队列数据库进行 vacuum 操作时的最大队列大小(事件数,默认为 350000)
forward 刷新队列时向其发送事件的额外 salt 返回程序(默认为无)

forward 配置项可以指定包含一个或多个 Salt 返回程序名称的列表。每次刷新事件队列时,排队的事件都会发送到 SaltStack Config 以及此列表的每个返回程序。这样,eventqueue 引擎的队列和持久性功能可以添加到任何标准的 Salt 返回程序中。下面是一个配置摘录,使事件每次发送到 SaltStack Config 时都写入本地文件:

sseapi_event_queue:
  # ...other queue settings...
  forward:
    - rawfile_json

# rawfile_json returner configuration
rawfile_json.filename: /var/log/salt/events.json

下表介绍了 RPC 队列引擎设置,这些设置显示在 sseapi_rpc_queue 标题下:

选项 说明
name 事件队列名称(默认为 sseapi-rpc,无需更改)
strategy 何时对事件进行排队(alwayson_failurenever,默认为 never
push_interval 将调用发送到 SaltStack Config 的频率(以秒为单位,默认为 5)
batch_limit 每时间间隔要推送到 SaltStack Config 的最大调用数量(默认为 500)
age_limit 最长排队调用期限;丢弃最早的条目(以秒为单位,默认为 3600)
size_limit 最大队列大小;丢弃最早的条目(事件数,默认为 360000)
vacuum_interval 对队列数据库进行 vacuum 操作的频繁(以秒为单位,默认为 86400)
vacuum_limit 对队列数据库进行 vacuum 操作时的最大队列大小(条目数,默认为 100000)

下表介绍了路径设置。生成初始配置后,请谨慎更改这些设置。模块将在安装过程中复制到这些目录。但是,添加额外路径不会造成不利影响。

选项 说明
beacons_dirs 信标外部模块路径
engines_dirs 引擎外部模块路径
fileserver_dirs 文件服务器外部模块路径
pillar_dirs pillar 外部模块路径
returner_dirs 返回程序外部模块路径
roster_dirs 名单外部模块路径
runner_dirs 运行程序外部模块路径
module_dirs Salt 外部模块路径
proxy_dirs 代理外部模块路径
metaproxy_dirs 元代理外部模块路径
states_dirs 状态外部模块路径

后续操作

安装并配置主节点插件后,必须完成其他安装后步骤。下一步是配置 RaaS 节点。要继续执行安装后过程,请参见检查 RaaS 配置文件