L4 : Load Balancing

Vorhandenheit ·2022년 2월 13일
0

AWS

목록 보기
5/10
post-thumbnail

L4

load balancing에 살펴보는 중에, ALB는 L7 계층을 사용하고 NLB는 N4를 사용하는 걸 배우게 된 것까지는 좋았지만, ALB에서 인증 과정에서는 트래픽을 줄이기 위해서 N4를 혼합해서 사용하기도 하고 로드 밸런싱을 이해하기 위해서는 L4 스위치를 집고 넘어가야할 부분이 많았습니다.
예를 들어 로드밸런싱이 어떻게 해서 서버에 고르게 분배 할 수 있는지, 인증하는 과정에서 서버의 부하를 어떻게 줄일 수 있는지, 이에 대해서 L4 공부하는게 필수여서 살펴볼려고합니다.

1. L4 스위치란?

동일한 역할을 수행하는 서버들을 그룹화하여 가상의 VIP(Virtual IP)를 통하여 관리하는 장비로 서버로 향하는 트래픽을 VIP로 수신하여 스케줄링 알고리즘에 따라 적절한 서버로 분산해주는 장비를 의미합니다. L4 스위치의 L4는 OSI 7계층의 Layer 4의 약자로 페킷의 헤더를 분석하여 TCP/UDP Port 정보를 이용한 처리를 수행하여 세션을 관리합니다.

L4 스위치는 TCP OR UDP 특성을 이용/제어하여 송신자와 수신자의 논리적 연결을 생성할 뿐만 아니라 로드밸런싱을 실시합니다.

3-way handshake

사용자와 서버가 통신을 실시할 때 논리적 연결을 맺기 위해 TCP를 사용할 때, 3-way handshake를 실시합니다. 중간에 L4 스위치가 존재한다면 3-way handshake에 필요한 패킷(SYN, SYN/ACK, ACK)을 대신 서버/사용자에게 전달해주거나 L4 스위치 자신이 송/수신자가 되어 3-way handshake에 필요한 패킷을 주고 받습니다.

  • 3-way handshake 과정
  1. 사용자가 서비스를 사용하기 위해서 L4 스위치의 Virtual Server(VIP)를 목적지로 SYN Packet을 전달합니다.

  2. L4 스위치가 SYN Packet을 받아 부하분산을 실시하며, 목적지의 IP를 부하분산 대상으로 지정된 실제 서버의 IP로 변환 후 전달합니다 (이때 L4스위치에서 Connection Table에 Connection이 생성됩니다.)

  3. SYN Packet을 받은 실제 서버가 응답하기 위해 SYN/ACK Packet을 L4 스위치에 전달합니다.

  4. SYN/ACK Packet을 받은 L4 스위치가 출발지 IP를 L4스위치의 Virtual Server IP(VIP)로 변환하여 사용자에게 전송합니다.

  5. SYN/ACK Packet을 받은 사용자가 ACK Packet을 L4 스위치의 Virtual Server IP(VIP)로 전송합니다.

  6. L4 스위치가 ACK Packet을 받아 목적지의 IP를 부하분산 대상으로 지정된 실제 서버의 IP로 변환한 후 전달합니다. 서버는 ACK Packet를 받아 통신한 준비를 완료하였고, 사용자의 L4스위치도 마찬가지입니다.

NAT (Network Address Translation)

네트워크 주소변환은 컴퓨터 네트워킹에 쓰이는 용어로, IP 패킷의 TCP/UDP 포트 숫자와 출발지 및 목적지의 IP주소 등을 재기록하면서 라우터를 통해 네트워크 트래픽을 주고받는 기술을 말합니다.

위 그림에서 사용자가 HTTP 웹페이지를 요청하기 위해 L4 스위치의 VIP에 HTTP Request를 전달했습니다. 그리고 L4 스위치는 이 요청을 받아 목적지 IP를 실제 서버의 IP로 변환하고, 실제 서버에 전달합니다.

2. L4 스위치가 필요한 이유

서버가 한 대 존재한다고 가정했을 때, 공인 IP '123.111.43.2'을 가지고 있으며 사용자들은 이 IP로 접속합니다. 이용자 수가 많아져서, 서버를 늘렸습니다. 하지만 서버를 여러개 나눈다고 해서 이용자들이 고르게 접속한다고 장담할 수 없습니다. 그래서 필요한게 '로드 밸런싱'입니다. 일일히 각각 서버에게 요청을 전달할 필요가 없이 L4 스위치에 모든 요청을 전달하고 L4 스위치가 서버들에게 요청을 그대로 전달합니다.

L4 스위치를 설치함으로 어떻게 달라지냐면
1. L4 스위치만이 공인 IP '123.111.43.1'을 가지게 되고 모든 사용자들은 이 공인 IP 요청을 보내게 됩니다.
2. 그러므로 서버들은 공인 IP를 갖게될 필요가 없고 서버들은 L4 스위치와 서버는 사설 IP를 통해 통신을 주고받게 됩니다.
=> 이는 서버가 사설 IP를 갖게되어 외부에서 서버의 IP를 알 수 없으니 서버에 직접 접속할 방법이 사라졌습니다. 이는 트래픽 공격(DDOS 등)을 하고자 해도 서버 IP를 모르기 때문에 직접적 공격이 불가능해집니다.

3. L4 스위치 구성요소

  • Virtual Server : 외부 사용자들이 접속 시 사용하는 IP(123.111.43.1)와 Port(80)을 말합니다. VIP라고 부르기도 합니다.

  • Pool : Virtual Server이 요청이 도달하는 서버들의 집합

  • Pool member : IP와 Port로 구성되는 서버를 말합니다.

출처

https://aws-hyoh.tistory.com/entry/L4-Switch-%EC%89%BD%EA%B2%8C-%EC%9D%B4%ED%95%B4%ED%95%98%EA%B8%B0
https://jesc1249.tistory.com/26

profile
읽고 기록하고 고민하고 사용하고 개발하자!

0개의 댓글