作为安装后过程的一部分,需要安装、配置和升级主节点插件。通过主节点插件,Salt 主节点能够与 Automation Config 进行通信。主节点插件包含各种可调整以提高性能的设置,这些设置对于大型或繁忙环境尤为有用。
通常,在环境中与 Automation Config 进行通信的每个 Salt 主节点上安装主节点插件。例如,如果使用具有多个 Salt 主节点的配置(有时称为多主节点设置),必须在每个 Salt 主节点上安装主节点插件。
开始前
安装并配置主节点插件是一系列步骤中的安装后步骤,这些步骤应按特定顺序执行。首先,完成其中一个安装方案,然后阅读安装许可证密钥安装后页面。
如果您位于非气隙环境中,则依赖项会随主节点插件一起自动安装。对于气隙环境,请参阅知识库文章在气隙系统上安装 Salt 主节点插件。
何时需要安装主节点插件?
在将所有 Salt 主节点连接到 Automation Config Cloud 之前,需要在所有 Salt 主节点上安装主节点插件。在不需要与 Automation Config 进行通信的 Salt 主节点上,不需要安装主节点插件。
在全新安装 Automation Config 后,需要在所有 Salt 主节点上安装主节点插件。在不需要与 Automation Config 进行通信的 Salt 主节点上,不需要安装主节点插件。
如果使用的是在节点少于 1000 个的情况下安装 SaltStack Config 安装方案,则无需在安装了 Automation Config 及其相关架构的节点上安装主节点插件。安装程序会自动在 Salt 主节点安装主节点插件。但是,仅在运行安装程序的 Salt 主节点上安装主节点插件。如果具有多个主节点,仍需要在其他主节点上安装主节点插件。
如果已具有 Salt 主节点,则应升级主节点插件。有关升级和安装主节点插件的完整说明,请参见如何升级主节点插件。
如果手动安装 Automation Config(不建议),则应先完成以下操作,然后再安装主节点插件:
- 安装并配置 PostgreSQL 数据库
- 安装和配置 Redis 数据库
- 启用 SSL(可选)
# sseapi-config --default >/tmp/raas.conf # cd /etc/salt/master.d # vim -d raas.conf /tmp/raas.conf ...
如果使用 onedir 安装的 Salt,则此可执行文件的路径为 /opt/saltstack/salt/extras-3.10/bin/sseapi-config。
使用主插件工作区安装主插件
可以从 Automation Config 用户界面,导航到 ,下载并安装最新的主节点插件版本。从“主节点插件”选项卡,可以下载插件或下载客户端。
下载主节点插件后,必须配置主节点插件。
使用 CLI 安装主节点插件
要在 Salt 主节点上安装主节点插件,请执行以下操作:
从 8.13.0 版本开始,主节点插件包括一个 tgtmatch 引擎,该引擎现在可将目标组匹配从 RaaS 服务器卸载到 Salt 主节点。建议启用并配置 tgtmatch 引擎,以使目标组匹配响应更快,尤其是在具有以下条件的环境中:
- 大量目标组(100 个或更多)
- 大量工作节点(3000 个或更多)
- 频繁更改工作节点 Grain(每日或更频繁)
- 频繁创建和删除工作节点(每日或更频繁)
target_groups_from_master_only: true
- 登录到 Salt 主节点。
- (如有必要)从 Customer Connect 下载主节点插件 wheel。
主节点插件包含在自动安装程序 .tar.gz 文件中。下载并提取 .tar.gz 文件后,可以在
sse-installer/salt/sse/eapi_plugin/files
目录中找到主节点插件。 - 通过手动卸载并重新安装更新的 Python wheel 来升级主节点插件。使用以下示例命令,并替换为 wheel 文件的确切名称:
注: 必须卸载现有插件,以防止 sseapi-config 的多个实例。
pip3 uninstall SSEAPE-8.12.1.3-py3-none-any.whl mv /etc/salt/master.d/raas.conf /tmp salt-call pip.install SSEAPE-8.12.1.3-py3-none-any.whl cp /tmp/raas.conf /etc/salt/master.d/raas.conf systemctl restart salt-master
配置主插件
要在安装主节点插件后配置 Salt 主节点,请执行以下操作:
- 登录到 Salt 主节点并验证
/etc/salt/master.d
目录是否存在,如果不存在,则创建该目录。 - 生成主配置设置。
小心: 如果要在升级安装时保留设置,请备份现有的主节点插件配置文件,然后再运行此步骤。之后,将相关设置从现有配置复制到新生成的文件中。注: 如果要保留配置设置,请备份现有的主节点插件配置文件,然后再运行此步骤。之后,将相关设置从现有配置复制到新生成的文件中。
sudo sseapi-config --all > /etc/salt/master.d/raas.conf
重要说明: 如果使用 onedir 安装的 Salt,则此可执行文件的路径为 /opt/saltstack/salt/extras-3.10/bin/sseapi-config。 - 编辑生成的
raas.conf
文件,并按以下方式更新值:值 说明 sseapi_ssl_validate_cert
验证 API (RaaS) 使用的证书。默认值为
True
。如果使用自己 CA 颁发的证书,请将此值设置为
True
并配置sseapi_ssl_ca
、sseapi_ssl_cert
和sseapi_ssl_cert:
设置。否则,请将此值设置为
False
,不验证证书。sseapi_ssl_validate_cert:False
sseapi_server
RaaS 节点的 HTTP IP 地址,例如,
http://example.com
或https://example.com
(如果启用了 SSL)。sseapi_command_age_limit
设置跳过可能失效的旧作业的期限(以秒为单位)。例如,要跳过一天前的作业,请设置为:
sseapi_command_age_limit:86400
跳过的作业将继续存在于数据库中,并在 Automation Config 用户界面中显示状态
Completed
。某些环境可能需要 Salt 主节点长时间脱机,并且需要 Salt 主节点在重新联机后运行排队的任何作业。如果此情况适用于您的环境,请将期限设置为
0
。sseapi_windows_minion_deploy_delay
设置延迟以允许所有必需的 Windows 服务变为活动状态。默认值为 180 秒。 sseapi_linux_minion_deploy_delay
设置延迟以允许所有必需的 Linux 服务变为活动状态。默认值为 90 秒。 sseapi_local_cache load: 3600 tgt: 86400 pillar: 3600 exprmatch: 86400 tgtmatch: 86400
设置某些数据在每个 Salt 主节点上本地缓存的时长。值以秒为单位。示例值是建议的值。
-
load- salt save_load() 负载
-
tgt- SSE 目标组
-
pillar - SSE pillar 数据(已加密)
-
exprmatch - SSE 目标表达式匹配数据
-
tgtmatch- SSE 目标组匹配数据
-
- 可选:仅手动安装需要执行此步骤。要验证是否可以在连接主节点插件之前连接到 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
在开头添加 #
,注释掉此行。不需要此项。 - 可选:更新与性能相关的设置。对于大型或繁忙环境,可以通过调整以下设置提高 Salt 主节点与 Automation Config 之间通信的性能。
- 配置主插件引擎:
主节点插件
eventqueue
和rpcqueue
引擎会将与 Automation Config 的某些通信从性能关键型代码路径卸载到专用进程。当这些引擎正在等待与 Automation Config 通信时,负载会存储在 Salt 主节点的本地文件系统中,以便数据可以在 Salt 主节点重新启动后持久保留。tgtmatch
引擎会将工作节点目标组匹配的计算从 RaaS 服务器移至 Salt 主节点。要启用引擎,请确保 Salt 主节点插件配置文件 (raas.conf) 中存在以下设置:
engines: - sseapi: {} - eventqueue: {} - rpcqueue: {} - jobcompletion: {} - tgtmatch: {}
要配置
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
可以根据队列参数的协同工作方式调整这些队列参数。例如,假设 Salt 事件总线上每秒平均 400 个事件,上述设置允许在 Salt 主节点上收集约 24 小时的已排队事件流量,之后由于大小或期限限制而放弃最早的事件。
要配置
rpcqueue
引擎,请验证 raas.conf 中的以下设置: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
要配置 tgtmatch 引擎,请确保主节点插件配置文件 (/etc/salt/master.d/raas.conf) 中存在以下设置:engines: - sseapi: {} - eventqueue: {} - rpcqueue: {} - jobcompletion: {} - tgtmatch: {} sseapi_local_cache: load: 3600 tgt: 86400 pillar: 3600 exprmatch: 86400 tgtmatch: 86400 sseapi_tgt_match: poll_interval: 60 workers: 0 nice: 19
注: 要在 Salt 主节点上利用目标匹配,RaaS 配置中还必须存在以下配置设置:target_groups_from_master_only: true
。 - 限制工作节点颗粒负载大小:
sseapi_max_minion_grains_payload: 2000
- 启用跳过早于定义时间(以秒为单位)的作业。例如,使用
86400
会将其设置为跳过一天前的作业。如果设置为0
,将禁用此功能:sseapi_command_age_limit:0
注:在系统升级过程中,启用此设置有助于防止数据库中存储的旧命令意外运行。
Salt 中的事件队列以及 Salt 主节点插件中的队列引擎、Salt 主节点目标匹配、Grain 负载大小限制和命令期限限制协同工作,不仅增加了吞吐量,而且减少了在对性能最敏感的代码路径中 Salt 主节点与 Automation Config 之间的通信延迟。
- 配置主插件引擎:
- 重新启动主服务。
sudo systemctl restart salt-master
- 可选:可能希望运行测试作业以确保主节点插件现在支持在主节点与 RaaS 节点之间进行通信。
salt -v '*' test.ping
即使没有显示任何活动(例如未连接任何工作节点),也可能表示配置正确。
配置设置参考
配置文件中的这些设置使每个 Salt 主节点都能够连接到 API (RaaS)。可以在 /etc/salt/master.d/raas.conf
配置文件中找到这些设置。
raas.conf 文件中的 Salt 主节点设置优先于 /etc/salt/master
中的现有设置。如果在 /etc/salt/master
中对 fileserver_backend
或 ext_pillar
设置进行了自定义,则需要手动合并这些设置,以便它们只显示在一个文件中。可以选择对后端重新排序以更改优先级。
下表介绍了常规配置设置:
选项 | 说明 |
---|---|
id |
Salt 主节点 ID,如果未设置,则自动生成 |
sseapi_server |
SSEAPI 服务器的 URL,例如 https://sse.example.com:443 |
engines |
要启用的 Salt 引擎,建议使用 sseapi 、eventqueue 、rpcqueue 、jobcompletion 。 |
master_job_cache |
建议使用 sseapi ,以使用 Automation Config 主节点作业缓存 |
event_return |
Salt 事件返回程序,建议使用 sseapi ,以使用 Automation Config 事件返回程序 |
ext_pillar |
外部 pillar 源,建议使用 sseapi |
fileserver_backend |
文件服务器后端,建议使用 sseapi 和 roots |
sseapi_update_interval |
从文件服务器更新的频率(以秒为单位,默认为 60) |
sseapi_poll_interval |
在 Automation Config 中轮询新数据的频率(以秒为单位,默认为 30) |
sseapi_jce_poll_interval |
在 jobcompletion 引擎中的迭代之间增加了延迟,因此,每天每个 Salt 主节点最多发送 5760 个 find_job 命令(以秒为单位,默认为 15) |
sseapi_timeout |
API (RaaS) 调用超时(以秒为单位,默认为 200) |
sseapi_key_rotation |
Salt 主节点 Automation Config 身份验证密钥轮换时间间隔(以秒为单位,默认为 86400) |
sseapi_cache_pillar |
是否在 Automation Config 中缓存 pillar 数据(True 或 False,默认为 False) |
sseapi_cluster_id |
(可选)Salt 主节点集群名称,用于在 Automation 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 |
是否验证 Automation Config SSL 证书(True 或 False,默认为 True) |
下表介绍了事件队列引擎设置,这些设置显示在 sseapi_event_queue
标题下:
选项 | 说明 |
---|---|
name |
事件队列名称(默认为 sseapi-events ,无需更改) |
strategy |
何时对事件进行排队(always 、on_failure 或 never ,默认为 never ) |
push_interval |
将事件推送到 Automation Config 的频率(以秒为单位,默认为 5) |
batch_limit |
每时间间隔要推送到 Automation Config 的最大事件数量(默认为 2000) |
age_limit |
最长排队事件期限;丢弃最早的事件(以秒为单位,默认为 86400) |
size_limit |
最大队列大小;丢弃最早的事件(事件数,默认为 35000000) |
vacuum_interval |
对队列数据库进行 vacuum 操作的频繁(以秒为单位,默认为 86400) |
vacuum_limit |
对队列数据库进行 vacuum 操作时的最大队列大小(事件数,默认为 350000) |
下表介绍了 RPC 队列引擎设置,这些设置显示在 sseapi_rpc_queue
标题下:
选项 | 说明 |
---|---|
name |
事件队列名称(默认为 sseapi-rpc ,无需更改) |
strategy |
何时对事件进行排队(always 、on_failure 或 never ,默认为 never ) |
push_interval |
将调用发送到 Automation Config 的频率(以秒为单位,默认为 5) |
batch_limit |
每时间间隔要推送到 Automation Config 的最大调用数量(默认为 500) |
age_limit |
最长排队调用期限;丢弃最早的条目(以秒为单位,默认为 3600) |
size_limit |
最大队列大小;丢弃最早的条目(事件数,默认为 360000) |
vacuum_interval |
对队列数据库进行 vacuum 操作的频繁(以秒为单位,默认为 86400) |
vacuum_limit |
对队列数据库进行 vacuum 操作时的最大队列大小(条目数,默认为 100000) |
sseapi_tgt_match
标题下:
选项 | 说明 |
---|---|
poll_interval | 引擎从 RaaS 请求更新的目标组信息的频率(以秒为单位)(默认为 60) |
workers | 应创建多少个工作线程进程才能执行目标组匹配计算。默认值 (0) 为每个 CPU 内核创建一个进程,上限为 8。 |
nice | 目标组匹配工作线程的优先级。默认值 (19) 为 Worker 提供最低调度优先级,以防止干扰 salt 主节点上运行的其他进程。 |
下表介绍了路径设置。生成初始配置后,请谨慎更改这些设置。模块将在安装过程中复制到这些目录。但是,添加额外路径不会造成不利影响。
选项 | 说明 |
---|---|
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 配置文件。
安装并配置主节点插件后,可以在 VMware Cloud Services 平台 (CSP) 中请求对 Automation Config Cloud 服务的访问权限。