5.5. 基于拉取的 REX 传输调整


Satellite 具有用于远程执行的基于拉取的传输模式。此传输模式使用 MQTT 作为其消息传递协议,包括在每个主机上运行的 MQTT 客户端。如需更多信息, 请参阅管理主机中的远程执行的传输模式

5.5.1. 增加基于拉取的 REX 传输的主机限制

您可以调整 mosquitto MQTT 服务器,并增加与之连接的主机数量。

流程

  1. 在 Satellite 服务器或 Capsule 服务器上启用基于拉取的远程执行:

    # satellite-installer --foreman-proxy-plugin-remote-execution-script-mode pull-mqtt

    请注意,您的 Satellite 服务器或胶囊服务器只能使用一个传输模式,可以是 SSH 或 MQTT。

  2. 创建配置文件以增加 MQTT 服务接受的默认主机数量:

    cat >/etc/systemd/system/mosquitto.service.d/limits.conf <<EOF
    [Service]
    LimitNOFILE=5000
    EOF

    这个示例将限制设置为允许 mosquitto 服务处理 5000 主机。

  3. 运行以下命令以应用您的更改:

    # systemctl daemon-reload
    # systemctl restart mosquitto.service

5.5.2. 降低基于拉取的 REX 传输的性能影响

当使用脚本提供程序为远程执行作业配置基于拉取的传输模式时,胶囊服务器会通过 MQTT 向客户端发送有关新作业的通知。此通知不包括客户端应该执行的实际工作负载。客户端收到有关新远程执行作业的通知后,它会查询胶囊服务器以获取实际工作负载。在作业期间,客户端定期将作业输出发送到胶囊服务器,进一步增加对胶囊服务器的请求数量。

这些对胶囊服务器的请求与 MQTT 协议允许的高并发性一起可能会导致胶囊服务器上的可用连接耗尽。有些请求可能会失败,导致远程执行作业的一些子任务没有响应。这还取决于实际的作业工作负载,因为某些作业会给 Satellite 服务器造成额外的负载,因此当客户端注册到 Satellite 服务器中时,资源也会竞争资源。

要避免这种情况,请使用以下参数配置 Satellite 服务器和 Capsule 服务器:

  • MQTT Time To Live - 在考虑作业未发布前,主机获取作业的时间间隔(以秒为单位)
  • MQTT Resend Interval - 通知应重新发送到主机的时间间隔(以秒为单位),直到作业被获取或取消
  • MQTT Rate Limit - 允许同时运行的作业数量。您可以通过调整速率限制来限制远程执行的并发性,这意味着您要在 Satellite 上放入更多负载。

流程

  • 调优 Satellite 服务器上的 MQTT 参数:
# satellite-installer \
--foreman-proxy-plugin-remote-execution-script-mqtt-rate-limit My_MQTT_Rate_Limit \
--foreman-proxy-plugin-remote-execution-script-mqtt-resend-interval My_MQTT_Resend_Interval \
--foreman-proxy-plugin-remote-execution-script-mqtt-ttl My_MQTT_Time_To_Live

胶囊服务器日志位于 /var/log/foreman-proxy/proxy.log 中。胶囊服务器使用 Webrick HTTP 服务器(不包括 httpd 或 Puma),因此无法简单的方法来增加其容量。

注意

根据工作负载、主机数量、可用资源和应用调整,您可能达到 Bug 2244811,这会导致 Capsule 消耗太多内存,最终被终止,从而导致剩余的作业失败。目前还没有通用可用的临时解决方案。

Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2026 Red Hat
返回顶部