1. load balancing
로드 밸런싱은 네트워크 트래픽을 여러 서버에 분산시키는 프로세스입니다.
이렇게 하면 단일 서버에 너무 많은 수요가 발생하지 않습니다.
작업을 고르게 분산함으로써 로드 밸런싱은 애플리케이션 응답성을 향상시킵니다.
또한 사용자를 위한 응용 프로그램 및 웹 사이트의 가용성을 높입니다.
- No load Balancing
- load Balancing
로드 밸런싱은 네트워크 트래픽을 여러 서버에 분산시키는 프로세스.
단일 서버에 너무 많은 수요가 발생하지 않도록 작업을 고르게 분산함으로써 로드 밸런싱은
애플리케이션의 응답성을 향상시키고 사용자를 위한 응용 프로그램 및 웹 사이트의 가용성을 높임
- L4 : Transport 계층을 사용, IP 주소와 포트 번호 부하 분산이 가능
- L7 : Application 계층을 사용, URL 또는 HTTP 헤더에서 부하 분산이 가능
2. load balancers 유형
로드 밸런서의 유형에 대해 이야기할 때 하드웨어 로드 밸런서, 소프트웨어 로드 밸런서 및 가상 로드 밸런서가 있다는 점도 중요합니다.
- 하드웨어 로드 밸런서 : 이름에서 알 수 있듯이 하드웨어 로드 밸런서는 물리적 온프레미스 하드웨어에 의존하여 애플리케이션 및 네트워크 트래픽을 분산합니다.
- 이러한 장치는 많은 양의 트래픽을 처리할 수 있지만 종종 높은 가격표를 수반하며
유연성 측면에서 상당히 제한적입니다.
- 소프트웨어 로드 밸런서 : 소프트웨어 로드 밸런서는 상업용 또는 오픈 소스의 두 가지 형태로 제공되며 사용하기 전에 설치해야 합니다.
- 클라우드 기반 밸런서와 마찬가지로 하드웨어 솔루션보다 저렴한 경향이 있습니다.
- 가상 로드 밸런서 : 가상 로드 밸런서는 하드웨어 로드 밸런싱 장치의 소프트웨어를 가상 머신에 배포한다는 점에서 소프트웨어 로드 밸런서와 다릅니다.
3. NLB와 ALB의 차이
로드 밸런서는 몇 계층에서 분산작업을 수행하느냐에 따라
NLB(Network LoadBalancer)와 ALB(Application LoadBalancer)로 나눌 수 있습니다.
기존에는 CLB(Classic LoadBalancer)라고 하는 여러 EC2 인스턴스간에
간단한 트래픽 부하 분산 하는 로드 밸런서도 있었지만, 최근에는 잘 사용하지 않습니다.
3.1 NLB(Network LoadBalancer)
- Client IP와 서버사이에 서버로 들어오는 트래픽은 Load Balancer를 통하고 나가는 트래픽은 Client IP와 직접 통신합니다.
- NLB는 Security Group 적용이 되지 않아서 서버에 적용된 Security Group 에서 보안이 가능합니다.
- Client → Server에서 Access 제한 가능
- NLB는 할당한 Elastic IP 를 Static IP로 사용이 가능하여 DNS Name과 IP주소 모두 사용이 가능합니다.
- Name Server 또는 Route 53에서 A Record 사용이 가능합니다.
3.2 ALB(Application LoadBalancer)
- Reverse Proxy 대로 Client IP와 서버사이에 들어오고 나가는 트래픽이 모두 Load Balancer 와 통신합니다.
- CLB/ALB는 Security Group 을 통한 보안이 가능합니다.
- Client → Load Balancer의 Access 제한 가능
- ALB/CLB는 IP 주소가 변동되기 때문에 Client 에서 Access 할 ELB의 DNS Name을 이용해야 합니다.
- Name Server 또는 Route 53에서 CNAME 을 사용해야 Domain Name 연동이 가능합니다.
4. Load Balancing algorithm
로드 밸런서가 리얼 서버로 부하를 분산할 때, 로드 밸런서에서는 사전에 설정한 분산 알고리즘을 통해 부하 분산이 이루어집니다.
부하 분산 알고리즘 | |
---|---|
라운드로빈 | 현재 구성된 장비에 부하를 순차적으로 분산함. 총 누적 세션 수는 동일하지만 활성화 된 세션 수는 달라질 수 있음 |
최소 접속 방식 | 현재 구성된 장비 중 가장 활성화된 세션 수가 적은 장비로 부하를 분산함 |
가중치 기반 라운드 로빈 | 라운드 로빈 방식과 동일하지만 각 장비에 가중치를 두어 가중치가 높은 장비에 부하를 더 많이 분산함. 처리 용량이 다른 서버에 부하를 분산하기 위한 분산 알고리즘 |
가중치 기반 최소 접속 방식 | 최소 접속 방식과 동일하지만 각 장비에 가중치를 부여해 가중치가 높은 장비에 부하를 더 많이 분산함.처리 용량이 다른 서버에 부하를 분산하기 위한 분산 알고리즘 |
해시 | 해시 알고리즘을 이용한 부하 분산 |
4.1. Round-robin algorithm
라운드 로빈(Round Robin Method)은 클라이언트로부터 받은 요청을 로드밸런싱 대상 서버에 순서대로 할당받는 방식이다.
첫 번째 요청은 첫 번째 서버, 두 번째 요청은 두 번째 서버, 세 번째 요청은 세 번째 서버에 할당한다.
로드밸러닝 대상 서버의 성능이 동일하고 처리 시간이 짧은 애플리케이션의 경우, 균등하게 분산이 이루어지기 때문에 이 방식을 사용한다.
로드밸런싱 대상 서버의 성능이 다른 경우에 파일 전송 프로토콜, 세션 유지 기능(Persistence)이 필요한 애플리케이션의 경우 서버 처리와 관계없이 연결이 할당되는 라운드 로빈 방식은 적합하지 않다.
서버와의 연결이 오래가지 않는 경우에 활용하기 적합하다.
4.2. Weighted round-robin algorithm
Weighted round-robin 알고리즘은 서로 다른 처리 능력을 가진 서버가 있을 경우 사용한다.
가중치를 주어 많이 처리할 수 있는 서버로 많은 트래픽을 할당한다.
- Round-robin
4.3. Least connection algorithm
이 알고리즘은 연결 수가 가장 적은 서버에 네트워크 연결방향을 정한다.
동적인 분산 알고리즘으로 각 서버에 대한 현재 연결 수를 동적으로 카운트할 수 있다.
동적으로 변하는 요청에 대한 부하를 분산시킬 수 있다.
Connection이 가장 적은 서버, 즉 부하가 가장 덜한 서버에게 요청을 전달한다.
4.4. Weighted least-connectin algorithm
이 알고리즘은 서버의 처리 능력을 고려하여 가중치를 부여하면서 least-connection scheduling을 적용하여 트래픽을 고루게 분산시키는 방법이다.
- Least connection
4.5. Hashing algorithm
Hashing (hash) 알고리즘에서는 새로은 연결(TCP/UDP)시 각 클라이언트에 대해 hashing key를 가지고 경로를 지정한다. Hashing key는 클라이언트의 IP + port 혹은 IP 주소만으로 결정된다.
* 이 밖에도 로드밸런싱의 방법은 다양한 종류가 있습니다만 벤더를 가리지 않고 많이 사용하는 것들을 나열하였습니다. 위의 방법들을 알아두시면 로드밸런서를 운영하게 되었을 때 도움이 되지 않을까 생각합니다.
참고사이트
- 로드 밸런싱(Load balancing) 종류와 알고리즘 | DevelopersIO
- What is Load Balancing? | DigitalOcean
- https://www.cloudv.kr/modal/feature/lb.html
- 로드밸런싱 – 해시넷
- 만렙 개발자 키우기