로드밸런싱 유형 (DNS, Hardware, Software)
로드 밸런싱은 아래 유형 중 하나로 구성되며, 어떤 유형의 로드밸런싱을 구성하던지 로드밸런서의 기능은 동일하다. 리버스 프록시(reverse proxy)처럼 동작하며 여러 대의 서버로 트래픽을 부하를 분산하는 것이다. 본인의 상황에 맞게 동작 방식과 트래픽을 분산하는 내부 알고리즘 등이 조금씩 다르게 적용할 뿐이다.
- DNS - RR(Round Robin)
- Hardware
- Software - HAProxy, Nginx, Seesaw, KEMP 등
각 방식에 대해 간단하게 알아보자.
Load Balancing with DNS
DNS(Domain Name System)은 도메인 이름을 IP주소로 변환하는 기술이다. 하나의 도메인 이름을 라운드로빈(Round Robin) 방식으로 N개의 IP주소로 변환하여 트래픽(부하)을 분산한다. 별도의 소프트웨어나 로드밸런싱 장비를 사용하지 않고 DNS 만으로 트래픽을 분산하는 기법이다.
DNS RR은 지리적으로 N개의 서버가 멀리 떨어져 있어서 실시간으로 헬스 체크가 어렵거나, 적은 비용으로 구현이 필요할 때 사용한다.
DNS를 이용한 부하분산에는 제약사항이 있다.
첫째, 대부분의 클라이언트에서는 DNS 서버의 부하를 줄이고 성능 향상을 위해 일정 시간 캐싱하기 때문에 부하 분산이 균등하게 되지 않는다.
둘째, HA(High Availability) 용도로 적합하지 않다. 특정 서버에 장애가 발생하더라도 장애 여부가 감지되지 않는다. DNS 캐싱은 제한적이다. 서버가 요청을 받을 수 없는 상태가 되어도 DNS는 여전히 클라이언트에 서버IP 주소를 제공한다. 이런 현상은 DNS 캐시에서 모든 인스턴스가 만료될 때 까지 지속될 수 있다. 이를 보완하기 위해 health check로 장애를 감지하여 DNS 서버에서 제거할 수 있지만, 모든 DNS 서버에 적용되는 데에 상당한 시간이 소요되며 클라이언트의 캐싱 때문에 서비스에서 바로 제거되지는 않는다.
Load Balancing with Hardware
하드웨어 로드 밸런싱은 전용 하드웨어 장비를 통해 부하를 분산한다. 대부분의 하드웨어 로드밸런서는 Linux를 실행하는 서버일 뿐이거나, 관리 툴이 포함된 임베디드 리눅스 배포판이다.
하드웨어 장비로 로드밸런싱을 할 경우 가격이 엄청 비싸지만 좋은 성능을 제공한다. capping과 dead-locking에 대해 비교적 안정적이지만, 소프트웨어 로드 밸런싱은 훨씬 적은 비용으로 동일한 기능을 수행할 수 있다.
Load Balancing with Software
소프트웨어 로드밸런서는 구매한 하드웨어 서버에 설치하거나, 클라우드 환경(AWS, Google Cloud, Azure...)에 설치하면 된다. 보통 리눅스 플랫폼 위에서 다양한 알고리즘으로 클라이언트의 요청을 서버에 할당한다.
위에서 언급한 하드웨어 로드밸런서는 네트워크 부하 분산을 위해 나온 전용 장치를 뜻한다.
오픈소스 로드 밸런서 중 일부를 소개한다.
- HAProxy : HV, Proxy, TCP/HTTP 로드 밸런싱을 지원하는 제품. Airbnb, Github, naver ncloud에서 사용중.
- Seeasaw : 구글에서 GO언어로 개발하였으며, 우분투/데비안과 같은 리눅스 배포판에서도 잘 동작됨. Anycast, DSR을 지원함. 기본적으로 L4 network에서 작동하며, L7에서 로드 밸런싱도 가능함.
- KEMP : AWS 또는 Azure와 같은 클라우드 데이터센터에 배포하여 사용 가능함. 무료이지만 사용 수준의 기능을 제공하며 Apple, Sony 등에서 사용함.
- Nginx : 기본 수준의 컨텐츠 스위칭 및 여러 서버에 대한 라우팅 지원함
HAProxy에 대해서는 다음 포스팅을 참고하길 바란다.
참고문서
Hardware vs Software Load Balancing
'엔지니어링 > DevOps' 카테고리의 다른 글
네이버클라우드 ubuntu 서버에 NGINX 설치 및 포트포워딩 (0) | 2020.07.18 |
---|---|
로드밸런서(Load balancer)와 프록시(Proxy) (0) | 2020.04.20 |
로드밸런서 (L4, L7, NginX, HAProxy) (0) | 2020.04.07 |
지역성을 고려한 캐시(Cache) (0) | 2020.03.19 |
로드밸런싱(Load Balancing)과 고가용성(HA) (2) | 2020.03.19 |
댓글
이 글 공유하기
다른 글
-
네이버클라우드 ubuntu 서버에 NGINX 설치 및 포트포워딩
네이버클라우드 ubuntu 서버에 NGINX 설치 및 포트포워딩
2020.07.18 -
로드밸런서(Load balancer)와 프록시(Proxy)
로드밸런서(Load balancer)와 프록시(Proxy)
2020.04.20 -
로드밸런서 (L4, L7, NginX, HAProxy)
로드밸런서 (L4, L7, NginX, HAProxy)
2020.04.07 -
지역성을 고려한 캐시(Cache)
지역성을 고려한 캐시(Cache)
2020.03.19