5.6. プルベースの REX トランスポート調整
Satellite には、リモート実行用のプルベースのトランスポートモードがあります。このトランスポートモードは、メッセージングプロトコルとして MQTT を使用し、各ホストで実行される MQTT クライアントを含みます。詳細は、ホストの管理 の リモート実行のトランスポートモード を参照してください。
5.6.1. プルベースの 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 Server または Capsule Server が使用できる転送モードは、SSH または MQTT のいずれか 1 つのみであることに注意してください。
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. プルベースの REX トランスポートのパフォーマンスへの影響の軽減 リンクのコピーリンクがクリップボードにコピーされました!
Satellite Server が Script プロバイダーを使用してリモート実行ジョブのプルベースのトランスポートモードで設定されている場合、Capsule Server は新しいジョブに関する通知を MQTT 経由でクライアントに送信します。この通知には、クライアントが実行するはずの実際のワークロードは含まれません。クライアントは、新しいリモート実行ジョブに関する通知を受け取ると、実際のワークロードについて Capsule Server に問い合わせます。ジョブ中、クライアントは定期的にジョブの出力を Capsule Server に送信するため、Capsule Server へのリクエストの数がさらに増加します。
Capsule Server へのこれらのリクエストと、MQTT プロトコルによって許可される高い同時実行性により、Capsule Server で使用可能な接続が枯渇する可能性があります。一部のリクエストが失敗し、リモート実行ジョブの一部の子タスクが応答しなくなる場合があります。これは、実際のジョブのワークロードにも依存します。これは、一部のジョブが Satellite Server に追加の負荷を発生させ、クライアントが Satellite Server に登録されている場合にリソースに対して競合するためです。
これを回避するには、Satellite Server と Capsule Server を次のパラメーターで設定します。
- MQTT Time To Live – ジョブが配信されていないとみなされる前にホストにジョブを取得するために与えられる時間間隔 (秒単位)
- MQTT 再送信間隔 – ジョブが選択されるかキャンセルされるまで、ホストに通知を再送信する時間間隔 (秒)
- MQTT レート制限 – 同時に実行できるジョブの数。レート制限を調整することでリモート実行の同時実行性を制限できます。これは、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 Server のログは /var/log/foreman-proxy/proxy.log
にあります。Capsule Server は Webrick HTTP サーバー (httpd や Puma は関与しません) を使用するため、その容量を増やす簡単な方法はありません。
ワークロード、ホストの数、利用可能なリソース、および適用されたチューニングによっては、Bug 2244811 が発生する可能性があります。これにより、Capsule が大量のメモリーを消費し、最終的に強制終了となり、残りのジョブが失敗します。現時点では、普遍的に適用できる回避策はありません。