본문 바로가기
Network Study

로드밸런싱과 클러스터링

by xogns93 2024. 10. 8.

로드밸런싱클러스터링은 대규모 웹 애플리케이션에서 고가용성확장성을 보장하기 위해 자주 사용되는 중요한 기술입니다. 이 두 개념은 시스템의 성능을 향상시키고, 트래픽이 증가해도 원활하게 서비스를 제공할 수 있도록 설계된 환경을 의미합니다.

💡 로드밸런싱 (Load Balancing)

로드밸런싱은 여러 서버에 트래픽(요청)을 분산하여 한 서버에 과부하가 걸리지 않도록 관리하는 기술입니다. 즉, 다수의 서버가 동일한 작업을 수행할 수 있게 설정하고, 클라이언트의 요청을 여러 서버로 균등하게 분배하는 역할을 합니다.

로드밸런싱의 역할

  • 트래픽 분산: 사용자로부터 들어오는 요청을 여러 서버에 골고루 분배하여 한 서버에만 과부하가 걸리지 않게 합니다.
  • 고가용성: 한 서버가 다운되거나 문제가 발생해도 다른 서버들이 요청을 처리할 수 있어 서비스가 중단되지 않도록 보장합니다.
  • 확장성: 트래픽이 증가할 때, 추가 서버를 쉽게 연결하여 서비스 용량을 확장할 수 있습니다.

로드밸런싱 방식

  1. 라운드 로빈 (Round Robin): 들어오는 요청을 순차적으로 각 서버에 분배하는 방식입니다.
  2. 가중치 기반 (Weighted Round Robin): 각 서버의 처리 능력에 따라 가중치를 부여해 더 강력한 서버에 더 많은 요청을 할당하는 방식입니다.
  3. IP 해시 (IP Hash): 클라이언트의 IP 주소를 기반으로 특정 서버에 요청을 고정적으로 할당하는 방식입니다.
  4. 최소 연결 방식 (Least Connection): 현재 가장 적은 연결을 가진 서버에 요청을 보내는 방식입니다.

로드밸런싱 예시

  • HAProxy, Nginx, AWS Elastic Load Balancer(ELB) 등은 대표적인 로드밸런서 솔루션입니다.

💡 클러스터링 (Clustering)

클러스터링은 여러 서버(또는 노드)가 하나의 시스템처럼 동작하도록 구성하는 방식입니다. 각 서버는 독립적으로 동작하지만, 마치 하나의 서버처럼 데이터를 공유하고, 함께 작업을 수행할 수 있습니다. 클러스터링을 통해 서버의 장애에도 서비스가 중단되지 않도록 할 수 있습니다.

클러스터링의 역할

  • 고가용성: 서버 중 하나가 장애가 발생하더라도, 클러스터 내 다른 서버가 그 역할을 대신할 수 있어 서비스가 중단되지 않습니다.
  • 부하 분산: 클러스터링된 서버들은 동시에 작업을 수행하므로, 전체적으로 더 많은 요청을 처리할 수 있습니다.
  • 데이터 일관성: 클러스터링된 서버들이 데이터를 공유하거나 일관성 있게 동기화하여 처리할 수 있습니다.

클러스터링 방식

  1. 세션 클러스터링: 사용자 세션을 클러스터에 있는 여러 서버에 공유하여, 한 서버가 다운되더라도 다른 서버에서 세션을 유지하고 처리가 가능합니다.
  2. 데이터 클러스터링: 데이터베이스 또는 파일 시스템을 여러 서버에 걸쳐 공유하거나 분산하여 처리합니다.
  3. 애플리케이션 클러스터링: 애플리케이션이 클러스터 전체에 분산되어 실행되며, 서버 장애 시에도 다른 서버에서 작업이 이어집니다.

클러스터링 예시

  • Apache Tomcat세션 클러스터링 기능을 사용하면, 여러 Tomcat 서버가 세션 정보를 공유할 수 있습니다.
  • Kubernetes와 같은 컨테이너 오케스트레이션 도구는 클러스터링 환경을 쉽게 구성할 수 있습니다.

💡 로드밸런싱과 클러스터링의 차이점

특징 로드밸런싱 클러스터링
목적 트래픽을 여러 서버에 분산 여러 서버를 하나의 시스템처럼 동작하도록 구성
서버 간의 관계 각 서버는 독립적 서버들이 서로 협력하여 동작
가용성 트래픽 과부하 시 새로운 서버로 분산 서버 장애 시 다른 서버가 대체 처리
데이터 공유 일반적으로 데이터 공유 없음 서버 간의 데이터나 상태 공유 가능
기술 예시 Nginx, HAProxy, AWS ELB Kubernetes, Tomcat 클러스터링, Oracle RAC

💡 로드밸런싱과 클러스터링을 함께 사용하는 이유

로드밸런싱과 클러스터링은 함께 사용되기도 하며, 이를 통해 확장성고가용성을 극대화할 수 있습니다. 로드밸런서는 트래픽을 클러스터링된 서버로 분산하고, 클러스터는 서버 간에 데이터를 공유하거나 장애 시 대체 작업을 수행하여 시스템의 신뢰성을 높입니다.

예시

  • 웹 애플리케이션에서 로드밸런서를 사용해 다수의 서버로 트래픽을 분산시키고, 클러스터링된 데이터베이스를 통해 여러 서버 간에 데이터 일관성을 유지하며 작업을 처리할 수 있습니다.

결론

  • 로드밸런싱은 트래픽을 여러 서버에 균등하게 분배하여 성능과 가용성을 높이는 데 중점을 둡니다.
  • 클러스터링은 서버들을 하나의 시스템처럼 동작하게 만들어 서버 간 협업을 가능하게 하고, 장애 발생 시에도 서비스가 중단되지 않도록 합니다.
  • 이 두 기술을 함께 사용하면 대규모 트래픽을 효과적으로 처리하고, 시스템의 안정성을 극대화할 수 있습니다.

'Network Study' 카테고리의 다른 글

RESTful API (OPEN API)  (0) 2024.10.08
URL(Uniform Resource Locator)  (0) 2024.10.08
정적, 동적 서버  (2) 2024.10.07
쿠키, 세션, JSON 웹 토큰(JWT)  (1) 2024.09.30
HTTP, HTTP/2, HTTP/3의 차이점  (1) 2024.09.30