- [IT 엔지니어를 위한 네트워크 입문] Ch.01 네트워크 시작하기
- [IT 엔지니어를 위한 네트워크 입문] Ch.02 네트워크 연결과 구성 요소
- [IT 엔지니어를 위한 네트워크 입문] Ch.03 네트워크 통신하기
- [IT 엔지니어를 위한 네트워크 입문] ch.04 스위치 2계층 장비
- [IT 엔지니어를 위한 네트워크 입문] ch.05 라우터 L3 스위치 3계층 장비
- [IT 엔지니어를 위한 네트워크 입문] ch.06 로드 밸런서방화벽 4계층 장비(세션 장비)
[IT 엔지니어를 위한 네트워크 입문] ch.06 로드 밸런서방화벽 4계층 장비(세션 장비)
4계층 장비의 특징
4계층 장비는 TCP와 같은 4계층 헤더에 있는 정보를 이해하고 이 정보들을 기반으로 동작합니다. 기존 네트워크 장비와 다른 점으로, 세션 테이블과 그 안에서 관리하는 세션 정보가 있습니다. 그래서 4계층 이상에서 동작하는 로드 밸런서, 방화벽과 같은 장비를 ‘세션 장비’라고 부르기도 합니다.
로드밸런서
로드 밸런서는 서버나 장비의 부하를 분산시키기 위한 장비입니다. 로드밸런서는 4계층 이상에서 동작하면서 IP 주소나 4계층 정보, 애플리케이션 정보를 확인, 수정하는 기능이 있습니다. 가장 많이 쓰이는 분야는 웹 서버의 부하 분산입니다.
로드 밸런서는 동작하는 계층에 따라 보통 4계층과 7계층으로 나뉩니다.
L4 로드 밸런싱
TCP, UDP 정보(특히 포트 넘버) 를 기반으로 로드 밸런싱이 동작합니다. 최근 로드 밸런서는 L4, L7의 기능을 모두 지원하지만, L7 지원 여부와 상관없이 4계층에 대한 정보로만 분산 처리하는 경우를 L4 로드 밸런싱이라고 합니다.
L7 로드 밸런싱
HTTP, FTP, SMTP 와 같은 애플리케이션 프로토콜 정보를 기반으로 로드 밸런싱을 수행합니다. HTTP 헤더 정보나 URI 와 같은 정보를 기반으로 부하를 분산할 수 있습니다. 일반적으로 이런 장비를 ADC(Application Delivery Controller)라고 부르며 프록시(Proxy) 역할을 수행합니다.
L4 스위치
L4 스위치는 4계층의 로드밸런서로 내부 동작 방식은 4계층 로드 밸런서이지만 외형은 스위치처럼 여러 개의 포트를 가지고 있습니다. L4 스위치는 부하 분산, 성능 최적화, 리다이렉션 기능을 제공합니다.
L4 스위치 동작을 위해서는 가상 서버(Virtual Server), 가상 IP(Virtual IP), 리얼 서버(Real Server)와 리얼 IP(Real IP)를 설정해야 합니다. 가상 서버와 가상 IP 는 사용자가 바라보는 서비스이고 리얼 서버와 리얼 IP 는 실제 서비스입니다. L4 스위치는 가상 IP 를 리얼 IP 로 변환해줍니다. 이 과정에서 부하를 어떤 방식으로 분산할지 결정할 수 있습니다.
ADC
ADC(Application Delivery Controller)는 애플리케이션 계층에서 동작하는 로드 밸런서입니다. ADC 는 프록시로 동작하며 다양한 부하 분산, 정보 수정, 정보 필터링이 가능합니다. ADC는 이런 상세한 동작을 위해 프락시로 동작합니다. 일부 소프트웨어 ADC를 제외한 대부분의 ADC는 L4 스위치의 기능을 포함하고 있습니다. 또한 Failover, Redirection 기능도 함께 수행합니다. 이 외에도 애플리케이션 프로토콜을 이해하면서 캐싱(Caching), 압축(Compression), 콘텐츠 변환 및 재작성, 인코딩 변환 등이 가능하고 애플리케이션 프로토콜 최적화 기능도 제공합니다.
ADC는 성능 최적화를 위해 서버에서 수행하는 작업 중 부하가 많이 걸리는 작업을 별도로 수행합니다. 그 중 하나가 이미지나 정적 콘텐츠 캐싱(Caching) 기능입니다. 또한 ADC 는 SSL의 엔드 포인트로 동작해 클라이언트에서 ADC까지의 구간을 SSL로 처리해주고 ADC와 웹 서버 사이를 일반 HTTP를 이용해 통신할 수 있습니다.
방화벽
네트워크 중간에 위치해 해당 장비를 통과하는 트래픽을 사전에 주어진 정책 조건에 맞추어 허용(Permit)하거나 차단(Deny)하는 장비를 방화벽이라고 부릅니다. 방화벽은 NAT(Network Address Translation) 동작 방식과 유사하게 세션 정보를 장비 내부의 세션 테이블 에 저장하고 패킷이 통과할 때 패킷이 외부에서 처음 시작된 것인지, 내부 사용자가 외부로 요청한 응답인지 가려냅니다.
세션 테이블 유지 및 세션 정보 동기화
세션 장비는 내부적으로 아래와 같은 방식으로 세션 테이블을 설정합니다.
- 3 way-handshake 를 통해 정상적으로 세션 설정
- 방화벽에서 세션 설정 과정을 확인하고 세션 테이블 기록
- 세션 테이블을 참조해 방화벽에서 패킷 통과
- 일정 시간 동안 통신이 없다면 세션 테이블 만료
하지만 양 단말에서 세션 테이블이 만료된지 모르고 통신을 계속 시도하면 데이터가 막힐 수 있습니다. 이를 해결하기 위해 다음과 같은 방법을 사용할 수 있습니다.
세션 장비 운영자 입장
- 세션 만료 시간을 애플리케이션의 세션 유지 시간보다 길게 하는 방법이 있습니다. 이렇게 하려면 애플리케이션측에서 고유의 세션 유지 시간을 미리 알려줘야 합니다.
- 세션 테이블에 정보가 없는 패킷이 들어오면 세션 정보를 새로 만들 수 있습니다. 하지만 보안이 취약해집니다.
- 세션 장비에서 세션 타입아웃 시 양 종단장비에 세션 정보 만료(RST) 를 통보합니다. 애플리케이션에서 통신이 필요하면 새로운 세션을 맺어 통신합니다.
개발자 입장
- 애플리케이션에서 패킷을 주기적으로 발생시킵니다. 더미 패킷을 통해 세션 타임아웃 전에 세션을 계속 유지할 수 있습니다.
비대칭 경로 문제
네트워크의 안정성을 높이기 위해 네트워크 회선과 장비를 이중화한다면 패킷이 지나가는 경로가 2개 이상이므로 인바운드 패킷과 아웃바운드 패킷의 경로가 같거나 다를 수 있습니다. 이때 다른 장비를 통과하는 것을 비대칭 경로(Asymmetric Path)라고 부릅니다.
이를 처리하는 방법은 크게 두가지입니다.
- 첫 번째 방법은 세션 테이블을 동기화하여 두 장비가 하나의 장비처럼 동작하도록 하는 것입니다.. 이 기능은 패킷 경로를 변경하지 않고 동작한다는 장점이 있지만 세션을 동기화하는 시간보다 패킷 응답이 빠르면 정상적으로 동작하지 않을 수 있다는 단점이 있습니다. 이 기능은 응답시간이 비교적 긴 인터넷 게이트웨이로 방화벽이 사용될 때 유용하게 사용될 수 있습니다.
- 두 번째 방법은 비대칭 경로가 생길 경우, 세션 장비에서 다양한 방법으로 이를 보정하는 것입니다. 인바운드 패킷이 통과하지 않았는데 아웃바운드 패킷이 장비로 들어온 경우, 인바운드 패킷이 통과한 다른 세션 장비 쪽으로 패킷을 보내 경로를 보정합니다. 그럼 강제로 대칭 경로를 만들어주므로 비대칭 경로로 인한 문제를 해결할 수 있습니다.
댓글남기기