웹서버 이중화와 로드밸런서에 대해

웹서버 구성에서 앞에 로드밸런서를 두고 서버를 여러 대 운영하는 구조를 자주 볼 수 있습니다. 하나의 서버로는 트래픽을 원활하게 처리하지 못할 것으로 예상될 때 하는 구성입니다. 이중화와 로드밸런서 개념은 현장에서도 자주 보는 형태이기 때문에 간단하게 정리해 보겠습니다.

이중화와 로드밸런서

이중화(또는 다중화)는 한 대의 서버에 문제가 생길 경우 다른 서버에서 사용자 요청을 처리하는 방식입니다. 동일한 환경의 서버를 두 대 이상 구성하고 다운 타임 없이 서비스를 제공하기 위한 목적을 가지고 있습니다. 또 트래픽을 나눠서 처리함으로써 서버의 부하를 줄이는 효과도 있습니다.

 

로드밸런서는 서버 앞단에서 들어오는 트래픽을 여러 서버에 분산시키는 역할을 합니다. 사용자 요청 > 로드밸런서 > AP1 or AP2 식의 흐름입니다.

 

예시)

  • AP1의 IP 주소 : 192.168.1.10
  • AP2의 IP 주소 : 192.168.1.11
  • 로드밸런서의 IP 주소 : 192.168.1.5

 

1. 사용자가 웹 브라우저를 통해 애플리케이션에 접속하려고 합니다. 사용자는 DNS 또는 직접 IP를 통해 로드밸런서(192.168.1.5)에 요청을 보냅니다.

 

2. 로드밸런서는 내부 알고리즘에 따라 요청을 AP1 또는 AP2 중 하나의 서버로 전달합니다. 예를 들어, 첫 번째 요청이 AP1으로 전달되었다면, 다음 요청은 AP2로 전달하는 식입니다(라운드 로빈 방식).

 

3. 선택된 서버는 요청을 처리한 후 응답을 로드밸런서로 다시 보냅니다.

 

4. 로드밸런서는 해당 응답을 원래의 사용자에게 전달합니다.

 

이 과정에서 만약 AP1이 장애가 발생한다면, 로드밸런서는 AP2에만 요청을 전달하게 되며, 이렇게 하여 서비스 중단 시간 없이 사용자 요청을 계속 처리할 수 있습니다.

 

로드밸런서 없이 요청

서버를 여러 대 운영한다고 해도 반드시 로드밸런서가 있어야 통신할 수 있는 건 아닙니다. 사용자가 특정 AP에만 요청을 날릴 수 있습니다. hosts 파일에 IP와 도메인을 수동으로 매핑하면 됩니다. 예를 들어, AP1로 특정하려면 http://192.168.1.10:[포트] 처럼 url을 요청하거나, DNS에 등록된 도메인을 hosts 파일에 192.168.1.10 example.com 처럼 매핑하는 식입니다. 다만 이 방식은 임시적인 조치의 성격이 강하기 때문에 실제 서비스 환경에선 로드밸런서를 통해 트래픽을 자동으로 분산하게 됩니다.

반응형

댓글

Designed by JB FACTORY