4계층 장비, 로드 밸런서

GwanMtCat·2023년 9월 19일
0

기존의 '네트워크 장비'의 의미 => 2, 3계층에서 동작하는 장비

오늘날 '네트워크 장비'의 의미 => 2,3,4 계층에서 동작하는 장비
(기술발전으로 4계층에서 동작하는 네트워크 장비가 많아짐)

4계층의 특징인 포트 번호, 시퀀스 번호, 수신 번호에 대해 이해가 필요

통신의 방향성, 순서와 같은 통신 전반에 대한 관리가 필요하며, 이런 정보를 세션 테이블(Session Table)이라는 공간에 담아 관리


4계층 장비의 특징

TCP와 같은 4계층 헤더에 있는 정보를 이해하고, 그 정보들을 기반으로 동작
기존 네트워크 장비와 다르게 세션테이블과 그 안에서 관리하는 세션 정보가 가장 중요

4계층 이상에서 동작하는 로드 밸런서, 방화벽 같은 장비를 세션 장비라고 부르기도 한다.

세션 테이블
세션 장비는 세션 테이블 기반으로 운영
세션 정보는 세션 테이블에 남아 있는 라이프타임이 존재

대칭 경로 요구
인바운드와 아웃바운드 경로가 일치해야함

정보 변경(로드 밸런서의 경우)
IP 주소가 변경되며, 확장된 L7 로드 밸런서(ADC)는 애플리케이션 프로토콜 정보도 변경된다. (??)


로드 밸런서

서버나 장비의 부하를 분산하기 위해 사용하는 장비
트래픽을 분배해 주기 때문에 4계층 이상에서 동작
IP 주소나 4계층 정보, 애플리케이션 정보를 확인, 수정하는 기능이 있다.

로드 밸런서가 서비스에 사용되는 대표 IP 주소를 서비스 IP로 가지고
그 밑에 시스템이 늘어나면 로드 밸런서가 각 시스템의 실제 IP로 변경해 요청을 보낸다.

L4 로드 밸런싱

일반적인 로드 밸런서가 동작하는 방식, TCP, UDP 정보 (특히 포트)를 기반으로 로드 밸런싱을 수행
최근 로드 밸런서는 L4, L7의 기능을 모두 지원
L7 지원 여부와 상관없이 4계층에 대한 정보로만 분산 처리하는 경우를 L4 로드 밸런싱이라고 함


L7 로드 밸런싱

HTTP, FTP, SMTP와 같은 애플리케이션 프로토콜 정보를 기반으로 로드 밸런싱을 수행
HTTP 헤더 정보나 URI와 같은 정보를 기반으로 프로토콜을 이해한 후, 부하를 분산
ADC(Application Delivery Controller)라고 부르며, 프록시 역할을 수행한다.


L4 스위치?

4계층에서 동작하면서 로드 밸런서 기능이 있는 스위치
내부동작은 4계층 로드 밸런서이지만 외형은 스위치처럼 여러 개의 포트를 가지고 있따.
서버형, 소프트웨어 형태의 로드 밸런서도 있지만, 다양한 네트워크 구성이 가능한 스위치형 로드 밸런서가 가장 대중화 되어 있다.
부하 분산, 성능 최적화, 리다이렉션 기능을 제공한다.

ADC

7계층 애플리케이션 계층에서 동작하는 로드 밸런서
애플리케이션 프로토콜의 헤더와 내용을 이해하고 동작하므로 다양한 부하 분산, 정보 수정, 정보 필터링이 가능
대부분의 ADC는 L4 스위치의 기능을 포함하고 있어 페일오버, 리다이렉션 기능도 함께 수행한다.
캐싱, 압축, 컨텐츠 변환 및 재작성, 인코딩 변환 등이 가능하고 애플리케이션 프로토콜 최적화 기능도 제공한다.
ADC에서 SSL의 엔드 포인트로 동작해, 클라이언트 ADC까지는 SSL로 처리하고 ADC와 웹 서버 사이를 HTTP를 이용해 통신한다.


로드밸런서의 부하 분산 방법

다수의 장비에 부하를 분산하기 위해 가상 IP 주소(VIP)를 가지게 되는데 서비스를 위해 사용되는 주소이다.
각 서버의 실제 IP 주소를 리얼 IP라고 하고, 로드 밸런서의 가상 IP 에 실제 서버들이 바인딩 된다.

부하 분산을 위한 그룹을 만들 때는, 3계층의 IP 주소 뿐만 아니라 4계층 정보인 서비스 포트까지 지정해 만든다.


헬스 체크

로드 밸런서를 통해 서비스하는 그룹의 서버에 장애가 발생하는 경우, 트래픽을 전달하지 말아야 하는데

이를 방지하기 위해 로드 밸런서에서는 부하 분산을 하는 각 서버의 서비스를 주기적으로 체크하는
헬스 체크를 통해 정상적인 서비스 쪽으로만 부하를 분산한다.
비정상적인 서버는 서비스 그룹에서 제외해 트래픽을 보내지 않는다.

그룹에서 제외하고 헬스체크를 주기적으로 체크해 정상동작하는 것으로 확인되면, 서비스 그룹에 해당 장비를 다시 넣어, 트래픽이 서버 쪽으로 보내지도록 한다.


헬스 체크 방식

ICMP

VIP에 연결된 리얼 서버에 대해 ICMP(ping)으로 헬스 체크를 수행하는 방법
단순히 서버가 살아 있는지 여부만 체크하는 방법이므로 잘 사용하지 않는다.


TCP 서비스 포트

가장 기본적인 헬스 체크 방법으로, 로드 밸런서에 설정된 서버의 서비스 포트를 확인하는 것이다.


TCP 서비스 포트: Half Open

헬스 체크로 인한 부하를 줄이거나, 정상적인 종료 방식보다 빨리 헬스 체크 세션을 끊기 위해 정상적인 3방향, 4방향 핸드셰이크가 아닌 TCP Half Open 방식을 사용한다.
SYN, SYN ACK 이후로 RST을 보내 세션을 끊는다.


HTTP 상태 코드

TCP 포트까지는 문제 없지만, 웹 서비스에 대한 응답을 정상적으로 못해주는 경우도 있어
3방향 핸드 셰이크를 거치고 나서, HTTP를 요청해 정상적인 상태 코드를 응답하는지 여부를 체크해 헬스 체크를 수행할 수 있다.


콘텐츠 확인

로드 밸런서에서 서버로 콘텐츠를 요청하고, 응답받은 내용을 확인하여 지정된 콘텐츠가 정상적으로 응답했는지 여부를 확인하는 방법
에러 응답인데도 문자열이 포함되어 있는 경우 정상으로 판단할 수 있으므로 주의해야 한다.


참조한 책 및 사이트

IT 엔지니어를 위한 네트워크 입문
https://www.cloudv.kr/etc/lb.html
https://thebook.io/007046/0006/

0개의 댓글