5.6. 基于拉取的 REX 传输调整
Satellite 具有基于拉取的传输模式用于远程执行。此传输模式使用 MQTT 作为其消息传递协议,并包括在每个主机上运行的 MQTT 客户端。如需更多信息,请参阅 管理主机 中的 远程执行的传输模式。
5.6.1. 为基于 Pull REX 传输增加主机限制 复制链接链接已复制到粘贴板!
您可以调整 mosquitto
MQTT 服务器,并增加与之连接的主机数量。
流程
在 Satellite Server 或 Capsule Server 上启用基于拉取的远程执行:
satellite-installer --foreman-proxy-plugin-remote-execution-script-mode pull-mqtt
# satellite-installer --foreman-proxy-plugin-remote-execution-script-mode pull-mqtt
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 请注意,您的 Satellite 服务器或胶囊式服务器只能使用一个传输模式,可以是 SSH 或 MQTT。
创建配置文件以增加 MQTT 服务接受的默认主机数:
cat >/etc/systemd/system/mosquitto.service.d/limits.conf <<EOF [Service] LimitNOFILE=5000 EOF
cat >/etc/systemd/system/mosquitto.service.d/limits.conf <<EOF [Service] LimitNOFILE=5000 EOF
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 本例设置了限制,以允许
mosquitto
服务处理 5000 主机。运行以下命令以应用您的更改:
systemctl daemon-reload systemctl restart mosquitto.service
# systemctl daemon-reload # systemctl restart mosquitto.service
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
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
# 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
Capsule 服务器日志位于 /var/log/foreman-proxy/proxy.log
中。胶囊服务器使用 Webrick HTTP 服务器(不包括 httpd 或 Puma),因此无法简单地提高其容量。
根据工作负载,主机数量、可用资源和应用调整,您可能会达到 Bug 2244811,这会导致 Capsule 消耗太多内存并最终被终止,从而使其余作业失败。目前,没有通用的临时解决方案。