作为安装后过程的一部分,需要安装、配置和升级主节点插件。通过主节点插件,Salt 主节点能够与 SaltStack Config 进行通信。主节点插件包含各种可调整以提高性能的设置,这些设置对于大型或繁忙环境尤为有用。
通常,在环境中与 SaltStack Config 进行通信的每个 Salt 主节点上安装主节点插件。例如,如果使用具有多个 Salt 主节点的配置(有时称为多主节点设置),则每个主节点都需要安装主节点插件。
有关更新性能相关设置的详细信息,请参见 SaltStack Config 产品文档中的“主节点插件”页面。
开始前
安装并配置主节点插件是一系列步骤中的安装后步骤,这些步骤应按特定顺序执行。首先,完成其中一个安装方案,然后阅读安装许可证密钥安装后页面。
何时需要安装主节点插件?
在全新安装 SaltStack Config 后,需要在所有主节点上安装主节点插件。在不需要与 SaltStack Config 进行通信的主节点上,不需要安装主节点插件。
如果使用的是单节点安装安装方案,则无需在安装了 SaltStack Config 及其相关架构的节点上安装主节点插件。安装程序会自动在 Salt 主节点安装主节点插件。但是,仅在运行安装程序的 Salt 主节点上安装主节点插件。如果具有多个主节点,仍需要在其他主节点上安装主节点插件。
如果近期升级到更高版本的 SaltStack Config,还应重新安装主节点插件。有关升级后升级和安装主节点插件的完整说明,请参见从先前版本升级。
如果手动安装 SaltStack Config(不建议),则应先完成以下操作,然后再安装主节点插件:
- 安装并配置 PostgreSQL 数据库
- 安装和配置 Redis 数据库
- 启用 SSL(可选)
安装主插件
要在 Salt 主节点上安装主节点插件,请执行以下操作:
- 登录到主节点。
- (如有必要)从 Customer Connect 下载主节点插件 wheel。
- 通过手动安装更新的 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
。
配置主插件
要在安装主节点插件后配置主节点,请执行以下操作:
- 登录到主节点并确认
/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
。 - 可选:仅手动安装需要执行此步骤。要验证是否可以在连接主节点插件之前连接到 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 主节点与 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: {}
要配置
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 、jobcompletion 、eventqueue 和 jobcompletion |
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_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 |
状态外部模块路径 |
后续操作
安装并配置主节点插件后,必须完成其他安装后步骤。下一步是配置 RaaS 节点。要继续执行安装后过程,请参见检查 RaaS 配置文件。