토폴로지로 이해하는 Amazon 6부

minseok·2023년 11월 1일
0

서버 로드밸런싱(Server Load Balancing, SLB)

분산 제어란 클라이언트 요청을 수신한 서버가 그 요청 트래픽을 다시 여러 서버로 분산해 전달함을 의미


왜 트래픽을 분산하는가?

단일 서버 처리량(capacity)을 초과한 대량 요청 트래픽은 속도 저하나 서비스 지연 또는 장애를 유발

이 상황을 대비해 부하(Load)를 다수 서버로 분산(Balancing)하는 것
이 것을 서버 로드 밸런싱(Server Load Balancing, SLB)라 한다.





온프레미스의 SLB제어 : L4 스위치

일단 부하를 분산한다는 것은 어디선가 요청을 수신하고 있다는 뜻
그리고 그 요청을 여러 서버가 나눠 처리토록 배분해야 함
이와 같이 그 트래픽을 가장 처음 수신하는 서버를 가상 서버(Virtual Server)라 한다.

웹 브라우저로 서비스 URL을 요청하면 PC에 설정된 DNS가 응답한 IP주소에 요청한다.
가상 서버는 http 요청을 처리하기 위해 가상 서비스 포트 80을 열고 수신을 기다린다.
가상 서버는 가상 IP, 가상 Port로 구성

요청을 받은 가상 서버는 웹이 구동 중인 리얼 서버, 리얼포트 쌍으로 부하를 분산한다.

이 때 리얼 서버 두 대는 웹 페이지 요청을 처리할 Nginx, Apache같은 웹 서버를 구동해 80 포트를 리슨한다.


결론
13.246.100.25:80으로 요청이 들어오면
13.246.100.41:80또는 13.246.100.82:80으로 분산

이같은 가상 서버의 포트 분산 기능은 4계층 이상에서 처리할 수 있으므로, 최소 Layer4 or 7 네트워크 장치가 필요하다
(이 장치를 L4 스위치, L7 스위치라고 함)


L4 스위치 특징

  1. L4 스위치 내부에 다수 가상 서버를 생성할 수 있음
  2. L4 스위치를 경계로 외부망과 내부망을 분리할 수 있다. (L4 스위치 <- 퍼블릭 IP 할당, 리얼 서버 <- 프라이빗 IP 할당)
  3. vport와 rport는 달라도 된다. (추측하기 어려워질수록 보안이 좋음)

가상 서버가 대상 그룹(리얼 서버 모음)의 멤버로 트래픽을 분산하는 방식

  1. Round Robin : 대상 그룹에 포함된 리얼 서버에 순차적으로 트래픽 분산
  2. Ip Hash : Client IP를 해시 함수의 변수로 사용해서 고정된 리얼 서버로 분산하는 방식
  3. Least Connection : Client의 신규 요청 시점에 리얼 서버별 기존 연결(분산)수를 분석해 수가 가적은 서버로 분산 = (부하가 가장 덜한 서버로 분산)





AWS의 SLB제어 : 로드 밸런서(ELB)

AWS도 온프레미스와 비슷한 용어를 사용한다.
AWS의 SLB를 Elastic Load Balancing(탄력적 로드 밸런싱, 로드 배런싱)이라 하며, 이 기능을 제공하는 서비스를 로드 밸런서라 한다.


L4 스위치 vs ELB

요청 수신
L4 스위치 : 가상 서버
ELB : ELB의 IP + 리스너

가상 서버(리스너) 구성 요소
L4 스위치 : 가상 IP + 프로토콜과 포트
ELB : 리스너의 프로토콜과 포트

VIP 개수
L4 스위치 : 가상 서버당 1개
ELB : ELB당 1개 도메인

포함 관계
L4 스위치 : 가상 서버 모음 < L4 스위치
ELB : 리스너 모음 < ELB

요청 전달 대상
공통 : 대상 그룹 + 대상 그룹의 프로토콜과 포트

요청 분산 대상
L4 스위치 : 리얼 서버 IP + 리얼 서버의 프로토콜과 포트
ELB : 대상 + 대상의 프로토콜과 포트

다중화
L4 스위치 : 장비 다중화 가능
ELB : ELB 다중화 불가

ELB 내부에 다수의 리스너를 생성할 수 있다.


ELB 유형 비교 : ALB, NLB, CLB, GWLB

AWS는 4개의 ELB 유형을 제공

  1. 애플리케이션 로드밸런서 - Application LB (ALB)
  2. 네트워크 로드밸런서 - Network LB (NLB)
  3. 클래식 로드밸런서 - Classic LB (CLB)
  4. 게이트웨이 로드밸런서 - Gateway LB (GWLB)

CLB는 이제 지원하지 않는 것 같다.

4개 유형 특징

  • ALB, CLB만 SG를 사용
  • (ALB : L7), (NLB : L4), (CLB : L4, L7)
  • ALB, NLB, CLB의 목적은 ELB에 등록된 대상으로 로드밸런싱하는 것
  • GWLB는 대상이 트래픽의 최종 목적지는 아니다. IPS나 방화벽 같은 Appliance로 로드배런싱 한다. 즉 대상이 트래픽 검사, 필터링같은 중간 경유지 (모든 트래픽을 수용)
  • ALB는 대상 그룹이 인스턴스, IP, Lambda를 지원
  • NLB는 인스턴스 IP, ALB
  • CLB는 인스턴스만 지원

ALB는 HTTP, HTTPS 서비스에 최적화돼 있다.
4계층의 대용량, 고성능 트래픽을 분산하려면 NLB를 사용한다...




ELB로드밸런싱 처리부, 요청 수신부로 나눠본다.

로드 밸런싱 처리부

ELB 가용 영역과 노드

ELB 특징

  • ELB의 패런트는 VPC, ELB 유형에 따라 수명 주기 동안 연결 특성이 다름, ALB와 CLB는 다른 요소에 연결할 수 없으며 NLB와 GWLB는 엔드포인트 서비스에 연결할 수 있다.
  • ELB 생성과 동시에 ELB용 ENI가 생성 (로드밸런서 노드라고 함)
  • 노드 생성 위치는 ELB 생성 시 선택한 가용 영역의 서브넷
  • 가용 영역별 1개 서브넷만 선택할 수 있다.
  • ELB의 실제 역할은 노드가 수행, 클라이언트 요청을 받은 ELB는 각 가용 영역에 대기중인 노드로 명령으 내려 로드밸런싱 수행
  • 각 가용 영역의 노드는 가용 영역의 모든 서브넷으로 로드밸런싱할 수 있음
  • 모든 가용 영역을 선택하지 않아도 된다. (단 선택한 가용 영역으로만 로드밸런싱 가능)
  • 클라이언트가 실제 접속하는 ELB의 IP는 노드의 IP
  • ALB는 반드시 2개 이상의 가용 영역을 선택해야 함

ALB는 가용 영역을 추가하거나 변경할 수 있다. (최소 2개)
b-2에서 c-1으로 변경하거나 c-1에 추가를 할 수도 있다.
대신 가용 영역별 1개의 서브넷만 선택할 수 있다.

ENI는 Node이며 트래픽 분산 타겟이 아니다.


ELB 중복 구현 : 교차 영역 로드밸런싱

만약 2a, 2b에 Node가 존재한다면 각각의 노드는 각각 가용 영역에만 로드밸런싱을 할 수 있다.
2a의 노드가 장애면 2a의 인스턴스로는 로드밸런싱이 불가능하다.

이런 경우를 위해 Cross-zone load balancing을 활성화시켜준다.
이 옵션을 활성화하면 2a, 2b의 노드가 2a, 2b의 모든 인스턴스로 로드밸런싱을 한다.

이처럼 교차 영역 로드밸런싱(Cross-zone load balancing)을 활성화하면 각 노드가 다른 가용 영역으로도 로드밸런싱을 하므로 ELB 다중화르 구현할 수 있다.

profile
즐겁게 개발하기

0개의 댓글