forks と並列実行のチューニング
同時に実行するホスト数を拡張します。
「forks と並列実行のチューニング」はCoddyKit上の無料Ansible Academyレッスンです。 これはレッスン1/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはAnsible Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Ansible Academyコースには全4レッスンが含まれています。
1台ずつでは遅い
デフォルトでは、Ansibleが一度に処理するホストはごく少数です。数百台のサーバーを対象にすると、この逐次的なペースによって、すぐ終わるはずのplayが長い待ち時間に変わってしまいます。⏳
forks設定を知る
forksの値は、各タスクでAnsibleが並列に処理するホスト数を設定します。forksを増やすと、同じタイミングで作業するマシンが増えます。
デフォルトはわずか5
初期状態ではforksはわずか5です。200台のホストがある場合、Ansibleは5台ずつのバッチを40回処理し、1つのバッチが完了してから次のバッチを開始します。
ansible.cfgで引き上げる
ansible.cfgでより高いデフォルト値を設定すると、すべての実行でその値が使われます。プロジェクトの並列性を調整するには、ここで設定するのが最も適切です。
[defaults]
forks = 50コマンドラインで上書きする
1回限りの実行には--forksフラグ(または-f)を使います。ファイルを編集しなくても、設定ファイルの値を上書きできます。
ansible-playbook site.yml --forks 50タスクは足並みをそろえて実行される
forksは1つのタスクを複数のホストで並列化しますが、Ansibleは次のタスクを開始する前に、すべてのホストで現在のタスクが完了するのを待ちます。
制御ノードに負荷がかかる
各forkはcontrol node上のプロセスです。forkを数百にすると、CPU、メモリ、開いているSSH接続を大量に消費するため、マシン自体が制限要因になります。
最適な値を見つける
完璧な数値はありません。25、50、100などいくつかの値をベンチマークし、control nodeに過大な負荷をかけずに最も速く実行できる値を選びます。
最も遅いホストに注意する
forksを大きくしても、バッチ内の最も遅いホストが応答するまでタスクは先に進みません。1台の遅延したホストが、バッチ全体を止めることがあります。
forksが戦略の上限を決める
forksは同時実行数の上限を設定します。そのうえでstrategyプラグインが、ホストをその実行枠の中でどのように進めるかを決めます。2つの設定は連携して動作します。
SSHの集中に注意する
forkの数を大きくすると、多数のSSHセッションを同時に開きます。高いforks値をpipeliningや接続の再利用と組み合わせて、このオーバーヘッドを抑えます。
クイックチェック
playが300台のホストで非常に遅く、もっと速くしたいとします。
まとめ
ansible.cfgまたは--forksでforksを増やすと、より多くのホストを同時に実行できます。デフォルトの5は少ない値ですが、実際の上限を決めるのはcontrol nodeです。🚀
よくある質問
「forks と並列実行のチューニング」レッスンは無料ですか?
はい。「forks と並列実行のチューニング」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Ansible Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Ansible Academyコースには全4レッスンが含まれています。
「forks と並列実行のチューニング」で何を学びますか?
同時に実行するホスト数を拡張します。 ブラウザで直接実行するハンズオンコードでAnsible Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
Ansible Academyを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのAnsible Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン1/4です。
「forks と並列実行のチューニング」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このAnsible Academyレッスンでコードを書いて実行できますか?
はい。すべてのAnsible Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- forks と並列実行のチューニング
- Strategy:linear、free、host_pinned
- SSH Pipelining と接続の再利用
- serial とローリングバッチ実行