목차
0. Previous
4계층부터는 하드웨어의 장비를 일컫는게 아니다.
IP가 부족해지면서 NAT기술이 등장하고 보안용 방화벽, 프록시와 같은 장비들이 등장하며 4계층 이상에서 동작하는 장비가 많아지면서 4계층에서 동작하는 장비도 네트워크 장비에 포함되었다.
4계층 에서 이해해야 하는 키워드는 다음과 같다.
1.
포트 번호
2.
시퀀스 번호
3.
ACK 번호
4.
통신의 방향성이나 순서
5.
통신전반의 정보를 세션 테이블에 담아 관리하는 법
이번 장에서는 4계층 장비의 특징과 종류, 4계층 장비 구성 시의 유의점에 대해 알아본다.
1. 4계층 장비의 특징
4계층 장비는 TCP와 같은 4계층 헤더에 있는 정보를 기반으로 동작한다.
그 중에서도 기존 네트워크 장비와 다른점인 세션 테이블과 그 안에서 관리하는 세션 정보가 중요하다. 4계층 이상에서 동작하는 로드 밸런서, 방화벽과 같은 장비를 세션 장비라 부른다.
세션 장비에서 고려해야할 요소는 다음과 같다.
•
세션 테이블
⇒ 세션 장비는 세션 테이블 기반으로 운영된다.
⇒ 세션 정보를 저장, 확인하는 작업 전반을 이해해야 한다.
⇒ 세션 정보는 세션 테이블에 남아 있는 라이프타임이 존재한다.
•
Symmetric(대칭)경로 요구
⇒ Inbound와 Outbound 경로가 일치해야 한다.
•
정보 변경(로드 밸런서의 경우)
⇒ IP주소가 변경되며 확장된 1.7 로드 밸런서(ADC)는 애플리케이션 프로토콜 정보도 변경된다.
이밖에도 세션 장비의 여러 요소가 서비스에 영향을 미치기 때문에 네트워크 중간 위치에 세션을 기반으로 동작하는 방화벽, NAT, 로드밸런서와 같은 방비가 있다면 네트워크 인프라 뿐 아니라 시스템 설계와 애플리케이션 개발에도 세션 장비 고려가 필요하다.
2. 로드 밸런서
로드밸런서 - 서버나 장비의 부하를 분산하기 위해 사용하는 방비
4계층 이상에서 동작하면서 트래픽을 분산해주며 IP주소, 4계층 정보, 애플리케이션 정보를 확인 및 수정해주는 기능이 있다. 그래서 가장 많이 쓰이는 곳이 웹 서버 부하 분산이다.
사용자 천 명의 요청을 받는 서버보다 사용자 5천명의 요청을 받는 서버는 단순하게 5배가 비싼게아니라 그보다 훨씬 비싸다. 이처럼 하나의 장비를 내부 부품을 이중화 하거나 용량을 큰 부품을 사용하는것은 비용이 기하급수적으로 높아지기때문에 작은 장비를 여러대를 묶어 사용하는 방법을 선호하는데 이를 스케일아웃(Scale-Out)이라 한다.
하지만, 작은 시스템이 몇대가 묶여있든 사용자는 그 사실을 알 필요도 없고 하나의 서비스로 보여야만한다. 로드 밸런서는 서비스에 사용될 대표 IP주소를 서비스 IP로 갖고 그 밑에 시스템이 늘어나면 로드밸런서가 각 시스템의 실제 IP로 변경해 요청을 보낸다.
이러한 로드밸런서는 웹이나 애플리케이션 뿐아니라 FWLB(FireWall Load Bancing: 방화벽 로드밸런싱), VPNLB(VPN Load Balancing: VPN 로드 밸런싱)와 같이 다양한 서비스를 위해 사용될 수 있다.
이런 로드밸런서는 동작하는 계층에 따라 다음과 같이 4계층과 7계층으로 나뉜다.
L4 로드 밸런싱
: 일반적인 로드밸런서가 동작하는 방식이다.
TCP, UDP 정보(특히 포트 정보)를 기반으로 로드 밸런싱을 수행한다.
최근의 로드 밸런서는 L4, L7의 기능을 모두 지원하기에 L4 로드 밸런싱만 제공하는 전용장비는 찾기 힘들지만, 장비에서 L7 지원 여부와 상관없이 4계층에 대한 정보로만 분산 처리하는 경우를 L4로드 밸런싱이라 한다.
즉, L4만 지원하던 L4, L7를 모두 지원하는 로드밸런서든 4계층에 대한 정보로 분산처리가 가능하면 L4 로드 밸런싱이라 할 수 있다.
L7 로드 밸런싱
: HTTP, FTP, SMTP와 같은 애플리케이션 프로토콜 정보를 기반으로 로드 밸런싱을 수행한다.
HTTP 헤더 정보나 URI와 같은 정보를 기반으로 프로토콜을 이해한 뒤에 부하를 분산할 수 있다.
일반적으로 이런 장비를 ADC(Application Delivery Controller)라 부르며 프록시(Proxy)역할을 수행한다. 스퀴드(Squid)나 Nginx에서 수행하는 리버스 프록시(Reverse Proxy)와 유사한 기능을 갖고 있다.
L4스위치
•
용어 그대로 4계층에서 동작하면서 로드 밸런서 기능이 있는 스위치.
•
내부 동작 방식은 4계층 로드밸런서지만 외형은 스위치처럼 여러 포트를 가지고 있다.
•
다양한 네트워크 구성이 가능한 스위치형 로드 밸런서가 가장 대중화되어있다.
•
부하 분산, 성능 최적화, 리다이렉션 기능을 제공한다.
L4 스위치를 사용한 부하 분산
L4스위치가 동작하려면 다음 4가지를 설정해야 한다.
1.
가상 서버(Virtual Server) : 사용자가 바라보는 실제 서비스
2.
가상 IP(Virtual IP) : 사용자가 접근해야 하는 서비스 IP 주소
3.
리얼 서버(Real Server) : 실제 서비스를 수행하는 서버
4.
리얼 IP(Real IP) : 실제 서버의 IP
사용자는 L4스위치의 가상 IP를 목적지로 서비스를 요청하고 L4스위치가 목적지로 설정된 가상 IP를 리얼 IP로 다시 변경해 보내준다. 이 과정에서 부하를 어떤 방식으로 분산할지 결정할 수 있다.
ADC(Application Delivery Controller)
•
ADC(Application Delivery Controller)는 애플리케이션 계층에서 동작하는 로드 밸런서다.
•
애플리케이션 프로토콜의 헤더와 내용을 이해하고 동작한다.
⇒ 부하 분산, 정보 수정, 정보 필터링이 가능하다.
•
ADC는 이런 동작을 위해 프록시로 동작한다.
•
대부분의 ADC는 L4스위치의 기능을 포함하고 있다.
•
대부분의 ADC는 4계층에서 애플리케이션 계층까지 다음과 같은 기능을 제공 및 수행한다.
⇒ 로드 밸런싱 기능
⇒ 페일 오버(Failover, 장애극복 기능)
⇒ 리다이렉션(Redirection)
•
애플리케이션 프로토콜을 이해하고 최적화 기능도 제공한다.
⇒ 캐싱(Caching), 압축(Compression), 콘텐츠 변환 및 재작성, 인코딩 변환
•
플러그인 형태로 보안 강화기능을 추가로 제공해서 다음과같은 기능을 제공한다.
⇒ WAF(Web Application Firewall) 기능
⇒ HTML, XML 검증및 변환 수행
L4 스위치 vs ADC
1. L4 스위치
•
4계층에서 동작하며 TCP, UDP 정보를 기반으로 부하를 분산한다.
•
TCP 계층에서의 최적화, 보안기능도 함께 제공한다.
•
TCP레벨의 Dos(Denial of Service)공격을 방어할 수 있다.
•
서버 부하를 줄이기 위해 TCP 세션 재사용과 같이 보안과 성능을 높여주는 기능도 제공할 수 있다.