로드 밸런서를 사용하면 "과부하 방지", "네트워크 속도 향상", "고가용성" 등을 이룰 수 있다.
Load Balancer 사용 전과 후
Load Balancer(로드 밸런서)의 종류는 무엇이 있을까?
로드 밸런서의 종류는 크게 2가지가 있다. 바로 L4, L7 로드 밸런서이다.
- Layer 4 Load Balancer 4계층(전송계층)에서 작동하는 TCP/UDP Port를 기반으로 부하분산을 수행한다. 단순 패킷의 트래픽만을 처리한다. (TCP/UDP, IP, Port)
- Layer 7 Load Balancer 7계층(응용계층)에서 작동하는 HTTP/S, FTP, SMTP, POP3 등을 기반으로 부하분산을 수행한다. 포트나 패킷의 헤더, URL, 쿠키 등의 내용을 통해 트래픽을 처리하므로 섬세한 부하분산이 가능하다.
여기서 보면, "L7 로드 밸런서가 좋은거 아니야?", "그냥 L7 쓰면 되는거 아니야?" 라고 생각할 수도 있겠지만, 각각의 장단점과 비용적인 문제 등이 있기에 잘 확인하고 사용해야 한다. (일반적으로 L7 로드 밸런서가 비쌈)
Load Balancing Algorithm?
특정 서버로 요청을 라우팅하는 방법은 로드 밸런싱 알고리즘에 의해 정의된다. 다음은 로드 밸런싱 알고리즘이다.
- 라운드 로빈 (Round Robin) 각 서버에 순차적으로 요청을 할당하는 방식이다. 가장 기본적인 로드 밸런싱 방법이다.
- 가중 라운드 로빈 이 알고리즘은 각 서버에는 DNS 이름 외에도 '가중치'를 할당한다. 가중치는 들어오는 요청을 처리하기 위해 어 떤 서버가 다른 서버보다 우선순위를 가져야 하는지 결정한다. 관리자는 서버의 용량과 네트워크의 필요에 따라 각 서버에 가중치를 부여하는 방법을 결정한다.
- IP 해시 이 알고리즘에서는 들어오는 요청의 IP 주소를 해시 키라는 더 작은 값으로 계산(또는 해시)한다. 이 고유 해시 키(사용자의 IP 주소를 나타냄)를 기준으로 사용하여 요청을 특정 서버로 라우팅하는 방법을 결정한다.
- 최소 연결 이름에서 알 수 있듯이 이 알고리즘은 새 클라이언트 요청이 수신될 때 활성 연결 수가 가장 적은 서버에 우선순위를 부여한다. 이 방법을 사용하면 서버가 연결에 과부하가 걸리는 것을 방지하고 서버 전반의 부하를 항상 일관적으로 유지할 수 있다.
- 최소 응답 시간 이 알고리즘은 최소 연결 방법과 가장 짧은 평균 서버 응답 시간을 결합한 알고리즘이다. 서버가 요청을 수행하고 응답을 전송하는 데 걸리는 시간과 연결 수를 모두 평가한다. 활성 연결 수가 가장 적고 가장 빠른 서버에 들어오는 요청이 할당된다.