로드 밸런서에서 노드 제외 및 재활성화
노드를 안전하게 제외했다가 다시 추가합니다.
로드 밸런서에서 노드 제외 및 재활성화은(는) CoddyKit의 무료 DevOps Bootcamp 강의입니다. 이것은 4개 중 4번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 DevOps Bootcamp 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. DevOps Bootcamp 강의에는 총 4개의 강의가 포함되어 있습니다.
실시간 트래픽을 업데이트하는 일은 위험합니다
사용자가 서버에 접속하는 동안 서버를 패치하면 요청이 실패합니다. 먼저 로드 밸런서에서 해당 노드의 트래픽을 드레인하는 것이 해결책입니다. 🚦
드레인이란 무엇인가요
노드를 드레인한다는 것은 새로운 트래픽을 보내지 않으면서 처리 중인 요청은 완료하도록 기다리는 것입니다. 그러면 안전하게 업데이트할 수 있습니다.
드레인, 업데이트, 재활성화 주기
안전한 패턴은 세 단계로 이루어집니다. 노드를 드레인하고, 변경 사항을 배포한 다음, 로드 밸런서에서 노드를 다시 활성화합니다.
HAProxy에서 노드 비활성화하기
community.general.haproxy 모듈은 백엔드 노드를 비활성화 상태로 설정하여 HAProxy가 해당 노드로 트래픽을 라우팅하지 않도록 합니다.
- name: Drain web node
community.general.haproxy:
state: disabled
host: "{{ inventory_hostname }}"
socket: /var/run/haproxy.sockLB 작업은 LB에서 실행하기
HAProxy 소켓은 로드 밸런서에 있으므로, 드레인할 웹 노드의 이름은 계속 지정하면서 LB 호스트에 delegate_to를 사용합니다.
delegate_to: lb01연결이 드레인될 때까지 기다리기
활성 요청이 완료될 시간을 줍니다. wait_for나 짧은 일시 중지를 사용하여 요청 처리 중에 사용자의 연결을 끊지 않도록 합니다.
- 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한 번에 노드 하나씩 처리하기
이 주기를 serial과 함께 사용하여 한 번에 한두 개의 노드만 드레인합니다. 나머지 노드는 계속 서비스를 제공하므로 다운타임이 발생하지 않습니다.
- hosts: web
serial: 1오류가 발생해도 항상 다시 활성화하기
배포를 block과 always로 감싸면 업데이트가 실패하더라도 노드가 트래픽 순환에 다시 포함됩니다. 노드가 빠진 채로 남지 않습니다.
빠른 확인
안전한 배포 패턴을 확인해 보겠습니다.
복습
다운타임 없이 배포하려면 노드를 드레인하고, 배포한 뒤 상태를 확인하고 다시 활성화합니다. serial과 always 블록을 사용하여 한 번에 노드 하나씩 처리합니다. ✅
자주 묻는 질문
“로드 밸런서에서 노드 제외 및 재활성화” 강의는 무료인가요?
네 — “로드 밸런서에서 노드 제외 및 재활성화” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 DevOps Bootcamp 강의 전체를 잠금 해제할 수 있습니다. DevOps Bootcamp 강의에는 총 4개의 강의가 포함되어 있습니다.
“로드 밸런서에서 노드 제외 및 재활성화”에서 뭘 배우나요?
노드를 안전하게 제외했다가 다시 추가합니다. 브라우저에서 직접 실행하는 실습 코드로 DevOps Bootcamp을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.
DevOps Bootcamp을(를) 시작하는 데 경험이 필요한가요?
사전 경험은 필요하지 않습니다. CoddyKit의 DevOps Bootcamp은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 4번째 강의입니다.
“로드 밸런서에서 노드 제외 및 재활성화” 강의는 얼마나 걸리나요?
대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.
이 DevOps Bootcamp 강의에서 코드를 작성하고 실행할 수 있나요?
네. 모든 DevOps Bootcamp 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.
이 강의의 모든 강의
- cli_command로 네트워크 장치 자동화하기
- 오케스트레이션을 위한 delegate_to 및 run_once
- 웹, 앱 및 DB 계층 조정하기
- 로드 밸런서에서 노드 제외 및 재활성화