複数の RTE
一つの RTE が実行するプレイブックの数、ランナーまたはレプリカとしての RTE の追加、RTE が停止または異常終了したときに起きること
一つの RTE での複数のジョブ
一つの RTE は最大 RTE_MAX_JOBS 個のプレイブックを並べて実行します。既定は 10 ( 0 で無制限)です。満杯の RTE へのジョブは受け取られません。ソケットモードでは、RTE の最後のヘルスレポートに空きがない間はアプリがジョブを送らず、 満杯または停止中の RTE は busy として refused を返します。データベースモードでは RTE は 503 を返します。 どちらの場合も、アプリは出力に Waiting for a free slot on RTE <name> を一度書き込み、最大 RTE_QUEUE_MINUTES (既定は 60)の間、10 秒ごとにジョブを再提示します。その後、ジョブは the RTE ‘<name>’ stayed busy for 60 minutes (RTE_QUEUE_MINUTES) で失敗します。待機中に中止されたジョブは、 RTE に届くことなく aborted で終了します。
複数の RTE
アプリはジョブを自動でランナーに分散しません。すべてのジョブは一つのランナー、つまりフォームが指定したランナーか 既定のランナーに送られます。RTE のコンテナーを増やすことは、二つの点で役立ちます。
- 独自のランナーとして :各 RTE は独自の
RTE_NAMEを持ち、独自のランナーとして参加します。参加を申請して管理者が 承認するか、参加トークンを提示します( 登録 を参照)。フォームはrunner: <name>でその一つを選びます。 たとえば VMware のコレクションを持つ RTE や、別のネットワークゾーンにある RTE です。それ以外は既定の RTE で実行されます - 一つのアドレスの背後のレプリカとして (データベースモードのみ):Kubernetes の Service の背後にある Pod のように、同じ
RTE_URLと同じRTE_TOKENを持つ 複数の RTE コンテナーが一つのランナーを共有し、アドレスが呼び出しをそれらに分散します。満杯のレプリカは503を返し、次の試行は別のレプリカに届くことがあります。アプリはデータベースを通じてジョブを追跡するので、ステータスの呼び出しにどのレプリカが 応答しても問題ありません
ソケットモード( モード を参照)では、一つのランナーは一つの RTE へのソケットを一本持ち、同じ RTE_NAME でサインインした 2 つ目の RTE は 1 つ目からソケットを引き継ぎます。各 RTE に独自の名前とランナーを与え、フォームが runner: でそれらの中から選べるようにしてください。
データベースモードの RTE はそれぞれ 10 秒ごとにデータベースにハートビートを書き込み、自分自身を登録する RTE は 30 秒ごとに自分のランナーの行を 確認します。ソケットモードの RTE では、そのソケットを持つアプリノードが、ソケットが開いている間、20 秒ごとに代わりにハートビートを書き込みます。 ステータス ページには、すべての RTE がバージョンとともに表示されます。データベースモードの RTE が自分で登録したランナーは、 その RTE が 10 分間ハートビートを書き込まなかった時点でワーカーが削除します。既定のランナーがそうした行で、その RTE が停止していた場合は、 次に確認した RTE が既定を引き継ぎます。構成シードのランナー、手動で追加したランナー、ソケットで参加したランナーが、この方法で削除されることはありません。
RTE が停止または異常終了したとき
RTE が停止したとき。 SIGTERM ( docker stop 、ローリングアップデート、スケールダウン)を受けると、RTE はジョブの受け取りをやめます。 /ready は 503 を返し、 新しいジョブは busy として拒否される(データベースモードでは 503 )ので、アプリは待機します。データベースモードでは、アドレスが別の レプリカにジョブを送ります。実行中のプレイブックには、終わるまでの時間として RTE_DRAIN_SECONDS (既定は 25)が与えられ、 その後 RTE は終了します。
RTE が異常終了したとき。 強制終了されたコンテナー(メモリ不足、ノードの喪失、停止タイムアウトの終了)は、プレイブックを道連れにします。それらを 別の RTE に移すものも、再実行するものもありません。そのジョブは abandoned として終了します。終了させるのは RTE 自身、 再起動したコンテナーが保持する同じ ID( rte-<hostname>-<port> )で RTE が戻ってきたときのアプリ、または RTE のハートビートが 2 分経過した時点でのワーカーです。再び起動する前に、プレイブックが何をしたかを管理対象のホストで確認してください。
RTE が停止している間。 ソケットモードでは、その RTE への新しいジョブは、最大 RTE_QUEUE_MINUTES とさらに 1 分の間ソケットを待ち、その後 no app node holds a socket to RTE ‘<name>’ and it took no job for 60 minutes (RTE_QUEUE_MINUTES): is it connected? で失敗します。 データベースモードでは、別のレプリカがそのアドレスで応答しない限り、すぐに the RTE at … is unreachable で失敗します。