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.sockLBタスクを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フィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- cli_command によるネットワークデバイスの自動化
- オーケストレーションのための delegate_to と run_once
- Web・App・DB 層を連携させる
- Load Balancer からの切り離しと再有効化