728x90
반응형

로드밸런싱이란?

로드(Load)=서버가 받는 트레픽(또는 부하)를 잘 밸런싱해서

우리의 서버들한테 골고루 분산 시켜 주는 모듈을 로드 밸런서라고 부릅니다

 

트래픽이 늘어났을 때 선택할 수 있는 방법은 두 가지가 있습니다.

 

첫 번째는 Vertical Scale-Up(버티컬 스케일 업)입니다. 우리가 가지고 있는 서버 자체의 성능을 늘리는 방법입니다.

예를 들어, 서버의 램이 4기가였다면 32기가로 늘린다든지, 서버의 CPU를 업그레이드하는 방법입니다. 이 경우, 하나의 머신 성능을 올리는 것으로는 한계에 부딪힐 수밖에 없습니다.

 

두번째는 Horuzontal Scale-Out(수평적 확장) = 하나의 서버가 아닌 여러개의 서버로 분산시스템은 구축하는 방법입니다.

분산 시스템을 구축한다고 했을 때 중요해지는 개념이 바로 로드 밸런싱 입니다

트래픽을 각 서버로 잘 분산해주는 역할을 하는 것이 로드 밸런서이고, 이 행위를 우리는 로드 밸런싱이라고 부릅니다.


로드밸런싱 알고리즘

로드밸런싱에 대해 감을 잡았다면 이제 로드뱅런싱을 하기 위한 전략을 알아야 합니다.

 

Round Robin ( 라운드 로빈 )

첫번째로 가장 많이 사용되는 방법으로 라운드 로빈 알고리즘은
우리가 가지고있는 각 서버에 순차적으로 돌아가며 트레픽을 분배하는 방법으로

각 서버에 공평하게 요청을 배분하기 때문에 서버간 균형을 맞추기 쉽습니다.

 

Random Select ( 랜덤 셀렉트 )

말 그대로 우리가 가지고 있는 서버중에 아무 서버에 요청을 전달하는 방법입니다.

운이 안좋으면 한서버에 계속 트레픽이 몰릴수도 있지만 실제로 구현을 하면 라운드 로빈과 마찬가지로
꽤나 공평하게 트레픽이 서버에 전달 되는 결과를 볼수있기 때문에 좋을 알고리즘 중에 하나라고 볼 수 있을 것 같습니다.

 

지금부터는 조금 복잡할 수 있지만 조금더 스마트한 알고리즘을 알아보겠습니다.

 

Least Connection ( 리스트 커넥션 )

리스트 커넥션 알고리즘은 서버가 로드 밸런서에게 얼마나 많은 트래픽을 처리하고 있는지를 알려줍니다. 이를 통해 로드 밸런서는 가장 적게 일하는 서버로 트래픽을 전달합니다.

서버의 부하 상태를 실시간으로 모니터링하여 트래픽을 조절하기 때문에, 비동기 요청이나 긴 연결을 많이 사용하는 애플리케이션에서 유리합니다.

또한, 여러 서버 중에서 성능이 좋은 서버는 트래픽을 빠르게 처리하고, 성능이 좋지 않은 서버는 트래픽 처리 속도가 느리기 때문에, 성능이 좋은 서버에 더 많은 트래픽을 할당하여 효율성을 높일 수 있습니다.


로드밸런싱 헬스체크

로드밸런싱에서 헬스체크(Health Check)는 로드 밸런서가 서버의 상태를 주기적으로 확인하여, 장애가 발생한 서버로의 트래픽을 자동으로 차단하고 정상적인 서버로만 요청을 분배할 수 있도록 하는 중요한 기능입니다.

 

헬스체크는 다양한 방법으로 수행될 수 있으며, 다음은 주요 헬스체크 방식들입니다.

 

  • Ping 헬스체크: ICMP 프로토콜의 Ping 패킷으로 서버의 네트워크 연결 상태를 확인합니다.
  • TCP 헬스체크: 특정 포트로 TCP 연결을 시도하여 해당 포트가 열려 있는지 확인합니다.
  • HTTP/HTTPS 헬스체크: 특정 HTTP/HTTPS 엔드포인트에 요청을 보내고 응답 상태 코드로 서버의 상태를 판단합니다.
  • UDP 헬스체크: UDP 프로토콜로 메시지를 보내고 응답 여부를 확인합니다.
  • 애플리케이션 레벨 헬스체크: 서버 내부의 리소스 상태나 애플리케이션 의존성을 모니터링합니다.

 

 

 

728x90
반응형

+ Recent posts