0Pricing
Ansible Academy · レッスン

Load Balancer からの切り離しと再有効化

ノードを安全に切り離し、復帰させます。

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

稼働中のトラフィック更新にはリスクがあります

ユーザーがアクセスしているサーバーにパッチを適用すると、リクエストが失敗します。まずロードバランサーからノードをドレインするのが解決策です。🚦

ドレインとは何か

ノードをドレインするとは、新しいトラフィックの送信を停止し、処理中のリクエストが完了するのを待つことです。その後、安全に更新できます。

ドレイン、更新、再有効化のサイクル

安全なパターンは3段階です。ノードをドレインし、変更をデプロイしてから、ロードバランサーで再び有効にします。

HAProxy でノードを無効にする

community.general.haproxy モジュールはバックエンドノードを無効にし、HAProxyにそのノードへのトラフィックのルーティングを停止させます。

- name: Drain web node
  community.general.haproxy:
    state: disabled
    host: "{{ inventory_hostname }}"
    socket: /var/run/haproxy.sock

LBタスクをLB上で実行する

HAProxyのソケットはロードバランサー上にあるため、Webノードをドレインする対象として指定しつつ、delegate_to でLBホストに処理を委任します。

  delegate_to: lb01

接続がドレインされるまで待つ

アクティブなリクエストが完了する時間を確保します。wait_for または短い pause を使い、リクエストの途中でユーザーを切断しないようにします。

- name: Let traffic drain
  ansible.builtin.wait_for:
    timeout: 30
  delegate_to: localhost

安全にデプロイする

ノードをローテーションから外したら、更新タスクを実行します。パッケージのインストール、設定の反映、アプリの再起動を行っても、稼働中のトラフィックには影響しません。🔧

ノードを再び有効にする

更新後、ノードを有効に戻すと、HAProxyは新しくデプロイしたサーバーへのトラフィックのルーティングを再開します。

- name: Re-enable web node
  community.general.haproxy:
    state: enabled
    host: "{{ inventory_hostname }}"
    socket: /var/run/haproxy.sock
  delegate_to: lb01

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

ノードを戻す前に、アプリが実際に起動していることを確認します。ヘルスエンドポイントへの wait_for または uri チェックにより、壊れたノードがトラフィックを処理するのを防げます。

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

一度に1台ずつ処理する

このサイクルを serial と組み合わせ、一度にドレインするノードを1台または2台だけにします。残りのノードが処理を続けるため、ダウンタイムをゼロにできます。

- hosts: web
  serial: 1

失敗しても必ず再有効化する

デプロイを block と always で囲みます。更新に失敗しても、ノードが取り残されずローテーションに戻るようにするためです。

確認問題

安全なロールアウトのパターンを確認しましょう。

まとめ

ダウンタイムをゼロにするには、ドレイン、デプロイ、ヘルスチェック、再有効化の順に、serial と always ブロックを使って1台ずつ処理します。✅

よくある質問

「Load Balancer からの切り離しと再有効化」レッスンは無料ですか?

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

「Load Balancer からの切り離しと再有効化」で何を学びますか?

ノードを安全に切り離し、復帰させます。 ブラウザで直接実行するハンズオンコードでAnsible Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。

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

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

「Load Balancer からの切り離しと再有効化」レッスンにはどのくらい時間がかかりますか?

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

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

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

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

  1. cli_command によるネットワークデバイスの自動化
  2. オーケストレーションのための delegate_to と run_once
  3. Web・App・DB 層を連携させる
  4. Load Balancer からの切り離しと再有効化
← Ansible Academyに戻る