514 words
3 mins
로드밸런싱
로드밸런서란
- 트래픽 분산
- 장애 시 자동 우회

로드밸런서 구조
로드밸런서가 필요한 이유
- 한 대의 서버가 감당 못 하는 트래픽을 여러 대로 나눠준다.
- 한 대가 죽어도 서비스가 계속된다.
대표 알고리즘
- 라운드 로빈: 순서대로 하나씩 분배 (균등 분산)
- 최소 연결: 현재 연결이 가장 적은 서버로 보냄 (불균형 트래픽에 유리)
- 해시 기반: 특정 값(클라이언트 IP 등)을 해시해 고정 분배 (세션 유지에 유리)

로드밸런싱 알고리즘 예시
L4 vs L7
- L4: TCP/UDP 기반
- L7: HTTP 기반 (URL, 헤더 조건 가능)
L4 vs L7 차이
- L4는 포트/프로토콜 기준으로만 분배
- L7은 URL/헤더/쿠키 등 내용을 보고 분배 가능
실습: 로컬 로드밸런싱(Nginx)
구성
- VM2: 백엔드1 (8081)
- VM3: 백엔드2 (8082)
- VM1: 로드밸런서 (80)
VM2/VM3 서버 실행
vm2> python3 -m http.server 8081vm3> python3 -m http.server 8082VM1 Nginx 설치
vm1> sudo apt updatevm1> sudo apt install -y nginx/etc/nginx/nginx.conf 예시
upstream backend { server 10.0.2.20:8081; server 10.0.2.30:8082;}
server { listen 80; location / { proxy_pass http://backend; }}테스트
vm1> curl http://10.0.1.10예상 결과
- 요청이 백엔드로 번갈아 전달
세션 고정(Sticky Session)
- 특정 사용자를 항상 같은 백엔드로 보냄
- 상태 저장형 앱에 필요
실전 시나리오
상황: 로그인 세션이 자꾸 풀림
- 세션 고정 미사용
- 공유 세션 스토리지 필요
OS별 추가 실습: 헬스체크
Linux (curl)
lin> while true; do curl -s http://10.0.1.10 | head -n 1; sleep 1; done헬스체크 설계
헬스체크는 단순 포트 확인이 아니라 앱의 정상 응답을 확인해야 한다.
예시
/health엔드포인트- DB 연결 여부 확인
실전 사례
- 사례 1: 로그인 풀림 → 세션 고정 필요.
- 사례 2: 일부 서버만 과부하 → 알고리즘 문제.
- 사례 3: 헬스체크 실패 → 잘못된 엔드포인트.