[IT 웹 기술] 대규모 트래픽 분산을 위한 로드 밸런싱(Load Balancing) 알고리즘 기초
갑작스러운 트래픽 폭주로 인한 서버 다운을 막기 위해, 대다수의 서비스는 여러 대의 서버를 두고 요청을 분산하는 로드 밸런싱(Load Balancing) 환경을 구축합니다. 단순히 트래픽을 나누는 것을 넘어, 네트워크 환경과 서비스 목적에 따라 각기 다른 배분 알고리즘을 적용하게 됩니다.
라운드 로빈과 가중치(Weighted RR) 적용
가장 직관적인 방식은 대기 중인 서버에 순서대로 트래픽을 할당하는 라운드 로빈(Round Robin)입니다. 세팅이 간편하지만 연결된 서버들의 스펙이 모두 동일해야 100% 효율이 나옵니다. 하지만 실무에서는 구형 서버와 신규 장비가 섞여 있는 경우가 흔하죠.
이럴 때는 고성능 장비에 더 많은 트래픽을 몰아주도록 설정하는 가중 라운드 로빈(Weighted RR)을 병행하여 하드웨어 성능 편차로 인한 병목을 해결합니다.
세션 기반의 분산: 최소 연결 & IP 해시
접속자들의 페이지 체류 시간이 제각각이거나 무거운 작업이 섞여 있다면 최소 연결(Least Connection) 알고리즘을 사용합니다. 현재 활성화된 세션 수가 가장 적은, 즉 덜 바쁜 서버부터 우선적으로 트래픽을 꽂아주는 원리입니다.
반면, 쇼핑몰 장바구니나 로그인 상태처럼 특정 유저가 한 번 접속했던 서버를 계속 물고 있어야 하는(Sticky Session) 환경도 있습니다. 이 경우에는 접속자의 IP 주소를 수학적으로 변환해 특정 서버로만 지속 배분하는 IP 해시(IP Hash) 방식을 적용해야 세션 이탈을 막을 수 있습니다.
헬스 체크(Health Check)
이러한 분산 처리의 밑바탕에는 헬스 체크 기능이 필수적으로 깔려야 합니다. 로드 밸런서가 주기적으로 각 서버의 응답 상태를 찔러보고, 통신이 끊긴 장비는 즉각 트래픽 분산 풀(Pool)에서 제외시켜 전체 서비스 중단을 방지하는 안전장치 역할을 합니다.
