0Pricing
Ansible Academy · レッスン

Load Balancer 配下でのローリングデプロイ

serial でダウンタイムなくリリースします。

「Load Balancer 配下でのローリングデプロイ」はCoddyKit上の無料Ansible Academyレッスンです。 これはレッスン3/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはAnsible Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Ansible Academyコースには全4レッスンが含まれています。

ダウンタイムゼロが目標です

1つのリクエストも失敗させずに、すべてのWebノードを更新します。コツはローリングデプロイです。数台ずつ変更していきます。🔄

serial でバッチを制御する

プレイに serial を追加すると、Ansibleはすべてのホストを一度に処理せず、小さな波に分けて順番に処理します。

- hosts: web
  serial: 1
  tasks:
    - import_role:
        name: webapp

割合も使用できます

serial には割合やサイズのリストを指定できます。まずカナリアを実行し、その後より大きなバッチへ段階的に増やせます。

serial:
  - 1
  - 25%
  - 50%

触れる前にドレインする

ノードを更新する前に、ローテーションから外します。delegate_to を使ってロードバランサーに指示し、そのノードへのトラフィックを停止させます。

- name: Drain node
  community.general.haproxy:
    state: disabled
    host: "{{ inventory_hostname }}"
  delegate_to: lb1

LBに delegate_to する理由

Webホスト自身がロードバランサー上で自分を無効にすることはできません。無効にするのはロードバランサーです。delegate_to により、各Webホストについて lb1 上でそのタスクを実行します。

新しいバージョンをデプロイする

ノードをドレインしたら、コードをデプロイし、設定を生成して、handler にそのホストだけのアプリサービスを再読み込みさせます。

- name: Pull release
  ansible.builtin.git:
    repo: "{{ app_repo }}"
    version: "{{ app_version }}"
    dest: /srv/app
  notify: Reload app

再有効化する前にヘルスチェックする

uri を使ってノードが正常であることを確認してから、ユーザーを戻します。壊れたホストをプールに再追加してはいけません。

- name: Wait for health
  ansible.builtin.uri:
    url: http://localhost:8080/health
    status_code: 200
  retries: 5
  delay: 3

ロードバランサーで再有効化する

正常であることを確認したら、再び delegate_to でロードバランサーを介してノードをローテーションに戻します。新しいバージョンにトラフィックが流れます。

- name: Enable node
  community.general.haproxy:
    state: enabled
    host: "{{ inventory_hostname }}"
  delegate_to: lb1

max_fail_percentage で保護する

max_fail_percentage を設定すると、失敗するホストが多すぎる場合にロールアウトを停止できます。問題のあるリリースがさらに広がるのを防ぎます。

- hosts: web
  serial: 1
  max_fail_percentage: 20

共有ステップには run_once を使う

1回限りのDBマイグレーションなど、一度だけ実行すべきステップがあります。run_once を使い、1台のホストだけが実行するようにします。

- name: Migrate db
  ansible.builtin.command: /srv/app/migrate
  run_once: true

一連の流れ

ホストごとに、ドレイン、デプロイ、ヘルスチェック、再有効化を行います。serial はこのループを安全な波に分けて繰り返し、すべてのホストを更新します。✅

確認問題

LBのステップを機能させるキーワードを1つ確認しましょう。

まとめ

serial によるバッチ処理、delegate_to によるドレインと再有効化、ヘルスチェック、失敗時の停止処理を備えたローリングデプロイを構築しました。ダウンタイムはゼロです。🟢

よくある質問

「Load Balancer 配下でのローリングデプロイ」レッスンは無料ですか?

はい。「Load Balancer 配下でのローリングデプロイ」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Ansible Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Ansible Academyコースには全4レッスンが含まれています。

「Load Balancer 配下でのローリングデプロイ」で何を学びますか?

serial でダウンタイムなくリリースします。 ブラウザで直接実行するハンズオンコードでAnsible Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。

Ansible Academyを始めるのに経験は必要ですか?

事前経験は必要ありません。CoddyKitのAnsible Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン3/4です。

「Load Balancer 配下でのローリングデプロイ」レッスンにはどのくらい時間がかかりますか?

ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。

このAnsible Academyレッスンでコードを書いて実行できますか?

はい。すべてのAnsible Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。

このコースのすべてのレッスン

  1. プロジェクトを設計する:Role と Inventory
  2. ホストのプロビジョニング・堅牢化・初期設定
  3. Load Balancer 配下でのローリングデプロイ
  4. Smoke Test、ロールバック、通知
← Ansible Academyに戻る