作为安装后过程的一部分,需要安装、配置和升级主节点插件。通过主节点插件,Salt 主节点能够与 SaltStack Config 进行通信。主节点插件包含各种可调整以提高性能的设置,这些设置对于大型或繁忙环境尤为有用。
通常,在环境中与 SaltStack Config 进行通信的每个 Salt 主节点上安装主节点插件。例如,如果使用具有多个 Salt 主节点的配置(有时称为多主节点设置),必须在每个 Salt 主节点上安装主节点插件。
何时需要安装主节点插件?
在将所有 Salt 主节点连接到 SaltStack Config Cloud 之前,需要在所有 Salt 主节点上安装主节点插件。在不需要与 SaltStack Config 进行通信的 Salt 主节点上,不需要安装主节点插件。
如果已具有 Salt 主节点,则应升级主节点插件。有关升级和安装主节点插件的完整说明,请参见如何升级主节点插件。
安装主插件
要在 Salt 主节点上安装主节点插件,请执行以下操作:
- 登录到 Salt 主节点。
- (如有必要)从 Customer Connect 下载主节点插件 wheel。
主节点插件包含在自动安装程序 .tar.gz 文件中。下载并提取 .tar.gz 文件后,可以在
sse-installer/salt/sse/eapi_plugin/files
目录中找到主节点插件。 - 通过手动安装更新的 Python wheel 来安装主节点插件。使用以下示例命令,并替换为 wheel 文件的确切名称:
RHEL/CentOS
sudo pip3 install SSEAPE-file-name.whl --prefix /usr
Ubuntu
sudo pip3 install SSEAPE-file-name.whl
注: 某些用户可能需要根据操作系统将语法更改为pip3.6
或pip36
。
配置主插件
要在安装主节点插件后配置 Salt 主节点,请执行以下操作:
- 登录到 Salt 主节点并验证
/etc/salt/master.d
目录是否存在,如果不存在,则创建该目录。 - 生成主配置设置。
注: 如果要保留配置设置,请备份现有的主节点插件配置文件,然后再运行此步骤。之后,将相关设置从现有配置复制到新生成的文件中。
sudo sseapi-config --all > /etc/salt/master.d/raas.conf
如果运行此命令导致错误,则可能与最初安装 Salt 时所使用的方法相关。如果通过 SaltStack Config 安装程序安装 Salt,则安装可能包括一个称为 Salt Crystal 的脱机软件包,这需要特殊的升级说明。有关详细信息,请参见故障排除页面。
- 编辑生成的
raas.conf
文件并按如下所示更新值,以验证 API (RaaS) 使用的证书并设置其 IP 地址。值 说明 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
跳过的作业将继续存在于数据库中,并在 SaltStack Config 用户界面中显示状态
Completed
。某些环境可能需要 Salt 主节点长时间脱机,并且需要 Salt 主节点在重新联机后运行排队的任何作业。如果此情况适用于您的环境,请将期限设置为
0
。sseapi_windows_minion_deploy_delay
设置延迟以允许所有必需的 Windows 服务变为活动状态。默认值为 180 秒。 sseapi_linux_minion_deploy_delay
设置延迟以允许所有必需的 Linux 服务变为活动状态。默认值为 90 秒。 - 可选:更新与性能相关的设置。对于大型或繁忙环境,可以通过调整以下设置提高 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
都会使队列刷新。 - 启用并配置
eventqueue
和rpcqueue
引擎:这些引擎会将与 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 之间的通信延迟。
- 启用事件队列(在 salt 2019.2.2 及更高版本中提供)。事件可以在 Salt 主节点上排队,并针对多个事件使用单个事务以批处理方式发送到事件返回程序。默认情况下,禁用此队列机制。要启用事件队列,请在 Salt 主节点插件配置文件中进行以下设置:
- 重新启动主服务。
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 和 keyauth 。 |
master_job_cache |
建议使用 sseapi ,以使用 SaltStack Config 主节点作业缓存 |
event_return |
Salt 事件返回程序,建议使用 sseapi ,以使用 SaltStack Config 事件返回程序 |
ext_pillar |
外部 pillar 源,建议使用 sseapi |
fileserver_backend |
文件服务器后端,建议使用 sseapi 和 roots |
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 |
何时对事件进行排队(always 、on_failure 或 never ,默认为 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 返回程序(默认为无)
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 |
何时对事件进行排队(always 、on_failure 或 never ,默认为 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 |
状态外部模块路径 |
后续操作
安装并配置主节点插件后,可以在 VMware Cloud Services 平台 (CSP) 中请求对 SaltStack Config Cloud 服务的访问权限。