1. 부하 분산이란?
Load balancing(부하 분산)이란 컴퓨터 네트워크 기술의 일종으로 둘 혹은 셋 이상의 중앙처리장치 혹은 저장장치와 같은 컴퓨터 자원들에게 작업을 나누는 것을 의미한다. 이로써 가용성 및 응답시간을 최적화 시킬 수 있다.
출처 : 위키백과
분산 서버임에도 서버마다 가지고 있는 IP주소에 접근하는 도메인 이름이 다 다르면 분산 서버라고 할 수 없다. 같은 도메인 이름으로 접속하여도 사용자는 어떠한 서버에 접속하는지 몰라야 한다. 또한 일부 서버에 장애가 생기더라도 남은 서버에서 트래픽을 처리하여야 하며 트래픽은 모든 서버에 균등하게 분배되어야 한다. 이 글은 이러한 목표를 달성하기 위한 학습을 정리한 것이다.
2. Round Robin DNS란
Round Robin은 최초 서명자를 감추기 위한 청원서, 원탁 회의를 의미한다. 이는 시작 지점이 중요하지않고 어디에서 시작해도 우선순위없이 돌아가면서 분산한다는 의미이다.
Round Robin DNS(이하 라운드 로빈) 방식은 몇가지 단점이 존재하는 가장 간단한 부하 분산 방식이다. 이를 이해하기 위하여 먼저 DNS에 대해 알아보자
2-1. DNS(Domain Name System)란
DNS는 도메인 이름을 보내면 매치되는 IP 주소를 알려주는 시스템이다. 이를 통해 사용자는 숫자로 되어있는 IP 주소를 외울 필요가 없어지며 상대적으로 외우기 쉽고 소통하기 쉬운 문자로 된 도메인 이름을 사용할 수 있다.
라운드 로빈 방식은 이를 활용한 부하 분산이다. 하나의 서비스를 운영하는 분산된 각 서버의 IP 주소를 DNS에 하나의 도메인 이름으로 등록한다. 그러면 클라이언트는 DNS에 해당 도메인 이름으로 요청할 경우 등록된 각 서버의 IP주소를 순환하여 반환하는 방식이다. 부하 분산을 위한 별도의 소프트웨어나 통신 장비가 필요하지 않아 간단하게 구현할 수 있다. 단지 DNS를 이용하기만 하면 된다.
하지만 라운드 로빈 방식에는 단점이 존재한다.
- 각 서버마다의 성능이 다를 수 있는데 이를 무시하고 분산한다.
- DNS는 같은 클라이언트에 대해 한번 접속한 IP주소를 일정 시간동안 캐싱하기 때문에 일부 서버에 트래픽이 과도하게 집중될 수 있다.
- IP주소에 해당하는 서버에 장애가 생겨도 이를 확인할 수 없기 때문에 연결될 수 없는 서버 IP를 반환할 수 있다. 그리고 트래픽이 집중된 서버를 피해갈 수 없다. 한마디로 고가용성을 기대할 수 없다
2-2. Weighted Round Robin DNS
라운드 로빈 방식은 각 서버의 처리 능력과 상관없이 순환하여 IP를 반환한다. 가중치를 부여한 라운드 로빈 방식은 이를 개선한 응용 방식이다.
서버의 처리 능력에 따라 고정된 가중치를 부여하여 가중치를 참고하여 IP를 반환한다. 예를 들어 가중치 100인 서버는 가중치가 50인 서버보다 2배 많은 요청이 할당된다.
각 서버의 성능이 다를 경우 가중치를 두어 분배하는 것이 트래픽을 고르게 분산하는데 도움이 될 것이다.
3. Load Balancing L4
로드 밸런싱 L4는 OSI 트랜스포트 계층에 있는 TCP패킷을 처음 몇개만 분석하여 제한적인 분산을 할 수 있다.
- L7에 비해 상대적으로 구축하기 쉽다.
- 4계층에서 분산하기에 상대적으로 좀 더 복잡한 7계층에 비해 연산 비용이 절감된다.
- 간단한 방식의 부하 분산만 가능하다.
4. Load Balancing L7
로드 밸런싱 L7은 OSI 어플리케이션 계층에 있는 다양한 정보(URL, 쿠키 등)들을 참고하여 분산할 수 있다. 따라서 클라이언트와 애플리케이션 서버간의 요청에 대한 완전한 이해를 할 수 있고 이에 따른 분산을 할 수 있다.
- L4에 비해 구축하기 어렵다
- L4에 비해 상대적으로 많은 연산 비용이 든다.
- 더 많은 정보를 알 수 있기 때문에 요청에 대한 분산을 하는데 더 자유롭다. 예를 들어 이미지나 비디오같은 멀티미디어를 요청하면 이것에 최적화된 서버로 연결할 수 있다.
'시스템 설계' 카테고리의 다른 글
대용량 트래픽에도 끄떡없는 서버 확장 방법 (0) | 2021.03.28 |
---|