로드밸런싱이 무엇인지 전체적인 흐름을 먼저 이해하고 제대로 로드 밸런싱 해보자!

Load Balancing(부하분산)이란 ~
- 처리해야할 업무 or 요청을 나누어 처리하는 것을 의미
- Load Balancing은 컴퓨터 네트워크 기술의 일종으로 둘 or 셋 이상의 중앙처리장치 or 저장장치같은 컴퓨터 자원(리소스)들에게 작업을 나누는 것을 의미
- 가용성( = 가동률,유효성,Availability) 및 응답 시간을 최적화시킬 수 있음.
즉 여러 서버가 분산 처리 하는것을 Load Balancing 이라함.
Load Balancing 의 종류
로드 밸런싱의 종류는 OSI 7계층에 따라 나뉨
- L4 : Transport(전송) 계층 , IP 주소와 Port 번호 Load Balancing(부하분산) 가능
- L7 : Application(응용) 계층 , URL or HTTP Header에서 Load Balancing(부하분산) 가능
L4(전송계층)와 L7(응용계층)의 차이
차이를 알기전 L4를 사용하는 이유를 먼저 살펴보자
L4부터 Port를 다룰 수 있으며 한 대의 서버의 각각의 포트에
여러개의 서비스들을 운영하기 위해서 L4 Layer 위에서 작동하는
Load Balancer가 필요해졌기 때문이다.
이전에는 비싼 L4 하드웨어 장비를 주로 사용했지만,
현재는 MSA(Micro Service Architecture)의 등장 등으로 L7 로드밸런싱도 많이 사용하고,
AWS ELB, Nginx, HaProxy등 다양한 소프트웨어를 사용하고 있다고 한다.
# 스케줄링 알고리즘 : 시분할 시스템(컴퓨터가 사용자들의 프로그램을 번갈아가며 처리해줌 즉 시간적으로 분할하여 처리해주는 시스템 )에서 운영 체제가 다수의 이용자에게 시간을 할당하는 방법
L4 Load Balancer는 IP, Port를 기준으로 스케줄링 알고리즘을 통해 부하를 분산함
클라이언트에서 로드밸런서(DNS)로 요청을 보냈을 때 최적의 서버로 요청을 전송하고 결과를 클라이언트에게 줌
즉, 요청하는 서비스의 종류와 상관 없이 공장을 여러 개 돌리는 것.
L7 Load Balancer는 L7 위에서 동작하기 때문에 IP, Port 이외에도 URI, Payload, Http Header, Cookie 등의 내용을 기준으로 부하를 분산합니다. 그래서 콘텐츠 기반 스위칭이라고도 함
L4,L7차이
L4 Load Balancer는 단지 부하를 분산시키는 것이라면,
L7 Load Balancer는 요청의 세부적인 사항을 두고 결제만 담당하는 서버, 회원가입만을 담당하는 서버 등으로 분리해서 가볍고 작은 단위로 여러 개의 서비스를 운영하고 요청을 각각의 서버에 분산할 수 있는 것.
L7 Load Balancer는 L4 Load Balancer와 다르게 데이터를 분석해서 처리가 가능하기 때문에 악의적이거나 비 정상적인 콘텐츠를 감지해 보안 지점을 구축할 수도 있는 장점이 있고, 그 만큼 자원 소모가 크다는 단점이 있다.
Load Balancing Algorithm 종류
Round Robin Method(라운드 로빈 방식) 은 클라이언트로부터
받은 요청을 로드밸런싱 대상 서버에 순서대로 할당받는 방식
첫 번째 요청은 첫 번째 서버,
두 번째 요청은 두 번째 서버,
세 번째 요청은 세 번째 서버에 할당~
로드밸러닝 대상 서버의 성능이 동일하고 처리 시간이 짧은 애플리케이션의 경우,
균등하게 분산이 이루어지기 때문에 이 방식을 사용!
Weighted Round Robin Method(가중 라운드 로빈 방식) 은 실제 서버에
서로 다른 처리 용량을 지정할 수 있음
각 서버에 가중치를 부여할 수 있으며,
여기서 지정한 정수값을 통해 처리 용량을 정함.
Least Connection Method(최소 연결 방식) 은 연결 수가 가장 적은 서버에
네트워크 연결방향을 정함
동적인 분산 알고리즘으로
각 서버에 대한 현재 연결 수를 동적으로 카운트할 수 있고,
동적으로 변하는 요청에 대한 부하를 분산시킬 수 있습니다.
Load Balancer 의 종류 (Load Balancing 아님!!)
# Load Balancer : Load Balancing 기술을 제공하는 서비스 or 장치
Load Balancer 는 어떤 계층에서 Balancing작업(분산작업) 을 하냐에 따라 크게
1. Application Load Balancer(ALB)
2. Network Load Balancer(NLB)
3.Gateway Load Balancer(GWLB)
4. Classic Load Balancer(CLB)
로 나뉨
현재 AWS 는 CLB를 중단한 상태 이다.
Layer7 부하 분산 Layer4 부하 분산 Layer3, Layer4 부하 분산
listen : HTTP, HTTPS, gRPC listen : TCP, UDP, TLS listen : IP
target : IP, Instance, Lambda target : IP, Instance target : IP, Instance
가장 기본적 탁월한 성능
Layer4, Layer7 부하 분산
listen : TCP, SSL/TLS, HTTP, HTTPS
현재는 거의 사용되지 않음.
1. Application Load Balancer(ALB)
# VPC(Virtual Private Cloud) : VPC는 자체 데이터 센터(ex AWS)에서 운영하는 기존 네트워크와 아주 유사한 가상 네트워크
- 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 연동 가능
2. Network Load Balancer(NLB)
- 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. Gateway Load Balancer(GWLB)
GWLB는 자세히 다루지 않음. 아직 위 내용도 머리에 다 안들어옴 ㅜㅜ
궁금하고 여유있을 때 aws docs 들어가보기!
https://docs.aws.amazon.com/ko_kr/vpc/latest/privatelink/vpc-endpoint-services-gwlbe.html

?? 아오~ 뭐가 이리많아~ 오히려좋아~ 더 공부해야지~
L4/L7 로드밸런서 차이
https://jaehoney.tistory.com/73
로드밸런싱 종류
https://dev.classmethod.jp/articles/load-balancing-types-and-algorithm/
'WIL' 카테고리의 다른 글
Jenkins pipeline 구축 (0) | 2022.09.26 |
---|---|
AWS VPC 개념(feat VPN, 서브넷, 라우터, ACL 보안그룹, 게이트웨이) (0) | 2022.09.22 |
Jenkins, Elastic Beanstalk 연동 (0) | 2022.09.19 |
Jenkins test해보기 CI/CD (0) | 2022.09.17 |
6주차를 마무리하며... (Swagger) (0) | 2022.08.23 |