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


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

5.6.1. 为基于 Pull REX 传输增加主机限制

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

流程

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

    # satellite-installer --foreman-proxy-plugin-remote-execution-script-mode pull-mqtt
    Copy to Clipboard Toggle word wrap

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

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

    cat >/etc/systemd/system/mosquitto.service.d/limits.conf <<EOF
    [Service]
    LimitNOFILE=5000
    EOF
    Copy to Clipboard Toggle word wrap

    本例设置了限制,以允许 mosquitto 服务处理 5000 主机。

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

    # systemctl daemon-reload
    # systemctl restart mosquitto.service
    Copy to Clipboard Toggle word wrap

5.6.2. 降低基于 Pull REX 传输的性能影响

当使用 Script provider 为远程执行作业配置 Satellite 服务器时,胶囊服务器通过 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
Copy to Clipboard Toggle word wrap

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

注意

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

返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

Theme

© 2025 Red Hat