CS

[Network] Load Balancing, Clustering (로드밸런싱, 클러스터링)

KJihun 2024. 1. 30. 16:33
728x90

 

로드밸런싱

서버에 들어오는 요청을 여러 대의 서버로 분산하여 부하를 고르게 분담하는 것을 말한다.

이를 통해 단일 서버에 부하가 집중되는 것을 방지하고, 전체 시스템의 안정성과 성능을 향상시킬 수 있다.

로드 밸런서를 통해 요청을 전달할 서버를 선택하는 여러 가지 알고리즘을 사용할 수 있으며, 균등하게 분산하는 것이 일반적인 방식이다.(로드밸런서는 소프트웨어로도 구현이 가능하다.)

이외에도 한 서버가 다운되더라도 다른 서버에서 서비스를 지속하여, 사용자들은 불편함 없이 서비스를 이용할 수 있다.


오픈소스 로드밸런서 중 많이 사용되고 있는 것은 HAProxy이다.

 

하지만 클라이언트의 연결 정보를 저장하는 세션이 로드밸런싱을 통해 하나의 서버 장비에 저장이 되는 경우,
추후 다른 서버로 접속하게 되면, 해당 클라이언트의 세션이 유지되지 않는다.

 

클러스터링

여러 대의 컴퓨터를 병렬로 연결한 시스템.

여러 대의 컴퓨터를 가상의 하나의 컴퓨터처럼 사용하게 해주는 것을 클러스터링 이라고 한다.
클러스터링 환경에서는 특정 장비에 문제가 생기거나 애플리케이션에 문제가 생기더라도, 전체적인 서비스에는 영향을 주지 않게 제어할 수 있다.

 

예를 들어, Web application의 경우, 클러스터링된 서버들 중 한쪽의 서버가 죽더라도, 기존의 연결 세션이 끊어지지 않고 failover 가 된다.

 

클러스터링은 virtual IP 기반으로 구현되는데, 서비스를 제공하는 실제 장비는 physical IP를 가지고, 데이터의 처리는 virtual IP를 통해 처리한다. 이렇게 내부의 시스템은 철저하게 가려 추상화하는 것이 원칙이다.

 

 

특징

로드밸런싱과 클러스터링 모두 scale out 방식이라는 특징이 있다. scale out은 수평 방향으로 노드를 추가하는 것으로, 값싼 노드를 여러 대 묶어 성능을 높이며, scale up 방식에 비해 비용을 줄일 수 있고, 보다 유연한 구성이 가능하다.

'CS' 카테고리의 다른 글

[Network] 실시간 통신 - webSocket  (0) 2024.01.31
[Network] 실시간 통신 - AJAX(polling, long polling, streaming)  (0) 2024.01.31
메시지 큐(MQ; Message Queue)  (0) 2024.01.30
[Spring] Batch  (0) 2023.12.07
[DB] Transactional 전파단계  (0) 2023.12.04