로드 밸런서 (Layer4: 전송)

문딤·2022년 9월 14일
1

L4 스위치, ADC

L4 스위치

◻ 로드밸런싱(서버 부하 분산)을 처리하는 장비이다.
◻ 외부에서 들어오는 모든 요청은 서버가 아닌 L4 스위치를 거쳐야하며, 모든 요청을 스위치가 받아서 서버에게 적절히 분배해준다.
◻ 또한 프로토콜의 헤더를 분석하여 그 정보를 바탕으로 부하 분산을 실시하고, SourceIP, Destination IP를 NAT 하여 보낼 수 있다.

◻ 클라이언트와 서버가 연결이 생성되었음을 나타내는 Connection을 생성하면 L4스위치 역시 Connection을 생성하여, 리스트를 관리한다.

◻ 4-way Handshake를 통해 Connection을 제거하면 스위치 또한 Connection을 삭제
💨 Connection time out 값을 가지는데 일정 시간 동안 사용되지 않은 커넥션을 삭제하고, Reset flag가 담긴 Packet을 전송할 수 있다.

L4 스위치가 필요한 이유

서버가 1대가 아닌 3대, 4대로 계속 늘어난다면, 부하가 고르게 나누어 질지 장담할 수 없다. 💨 그래서 로드 밸런싱이 필요하다.

◻ 일일이 서버에 요청을 전달할 필요 없이 L4 스위치에 모든 요청을 전달하고, L4 스위치가 서버들에게 요청을 그대로 전달한다.

L4 스위치의 구성요소

◻ 뒤에 붙은 80이라는 숫자는 PORT인데 Layer4의 정보인 Port를 사용하기 때문이다.
◻ IP(123.111.43.1)와 PORT(80)를 갖는 스위치 구성요소를 VIRTUAL SERVER라 한다.
◻ Pool 💨 Virtual Server들의 집합 , 특정 요청들은 해당 Virtual Server에 연결된 Pool에만 전달된다.
◻ Pool member Pool 소속으로 IP 와 PORT로 구성된 서버

ADC

서버가 제공하는 애플리케이션을 사용자에게 중단 없이 빠르고 안정적으로 전송하는데 도움을 준다.

방화벽

외부로부터 내부망을 보호하기 위한 네트워크 구성요소의 하나로 외부의 불법침입으로부터 내부의 정보 자산을 보호하고 외부로부터 불법정보 유입을 차단하기 위한 N/W 및 S/W의 총칭이다.

주요 기능

◻ 접근 제어

외부에서 내부 N/W에 접속하는 패킷 필터링 이용 통제
ex) 패킷 필터링, 프록시 방식 등

◻ 인증(Authentication)

  • 메시지 인증: VPN과 같은 신뢰할 수 있는 통신선을 통해 전소오디는 메시지 신뢰성 보장.
  • 사용자 인증: 방화벽을 지나가는 트래픽에 대한 사용자가 누군지에 대해 증명하는 기능.
  • 클라이언트 인증: 모바일 사용자처럼 특수한 경우에 접속을 요구하는 호스트에 대해 인가된 호스트인지 확인

◻ 감사 및 로그 기능

  • 정책설정 및 변경, 관리자 접근, 네트워크 트래픽 허용 또는 차단과 관련한 사항 등 접속 정보를 로그로 남긴다.

◻ 프라이버시 보호(privacy Protection)

  • 이중DNS, 프록시 기능, NAT 기능등을 제공함으로서 내부 네트워크와 외부 네트워크 간의 중개자 역활을 함으로서 내부 네트워크의 정보 유출을 방지함.

◻ 서비스 통제(Service Control)
안전하지 못하거나 위험성이 존재하는 서비스를 필터링함으로서 내부 네트워크의 호스트가 가지고 있는 취약점을 감소시킨다.

◻ 데이터 암호화(Data Encryption)
방화벽에서 다른 방화벽까지 전송되는 데이터를 암호화하여 보내는 것으로, 보통 VPN의 기능을 이용한다.

한계점

  1. 악성 소프트웨어 침투 방어에 대한 한계
  2. 악의적인 내부 사용자의 공격에 대한 한계
  3. 전혀 새로운 형태의 공격에 대한 한계

방화벽 동작 방식

◻ 패킷 필터링(Packet Filtering) 방식

  • 데이터 링크 계층(OSI Layer 2)에서 네트워크 계층으로 전달되는 패킷을 가로채서 해당 패킷 안의 주소(IP)와 서비스 포트를 검색하여 정의된 보안 규칙에 따라 서비스의 접근 허용 여부를 결정.
  • 가장 기초적인 방화벽 방식으로, 네트워크 계층(OSI Layer 3), 전송 계층(OSI Layer 4)에서 동작하는 방식.
  • 다른 방식에 비해 빠른 속도
  • 비교적 낮은 레이어에서 동작하기 때문에 기존 애플리케이션과 연동 용이
  • 하드웨어에 의존적이지 않으나, 강력한 로깅 기능 및 사용자 인증을 기대하기는 어려움.
  • 패킷 내의 데이터를 활용한 공격 차단 불가.

◻ 상태추적(Stateful Inspection) 방식

  • 2세대 방화벽으로, 패킷 필터링 방식의 내부 데이터를 이용한 공격 취약성을 보완.
  • 네트워크 계층에서 패킷을 처리하면서도 프로토콜의 상태 정보 테이블을 유지하여, 프로토콜 특성에 따른 변화를 동적으로 대응해 주는 방화벽.
  • 기존 패킷 필터링 기능에 Session 추적 기능을 추가하여 일련의 네트워크 서비스의 순서를 추적하고, 순서에 위배되는 패킷들은 모두 차단.
  • 모든 통신 채널에 대해 추적이 가능하며, UDP와 RPC 패킷 또한 추적이 가능.
  • 상태 목록(State Table)에 DoS나 DDoS 공격으로 인한 거짓 정보가 가득 차게 되면, 장비가 일시적으로 다운될 수 있음.
  • 방화벽을 재구동시, 현재 연결에 대한 모든 정보를 잃어버려 정당한 패킷에 대한 엑세스 거부가 발생할 수 있음.

◻ 어플리케이션 게이트웨이(Application Gateway) 방식

  • 3세대 방화벽으로, 어플리케이션 계층(OSI Layer 7)까지 동작하여 통과하는 패킷의 헤더(Header) 안의 Data 영역까지도 체크하여 통제할 수 있음.
  • 해당 서비스별로 프록시(Proxy)가 구동되어 각 서비스 요청에 대하여 방화벽의 접근 규칙을 적용시키고 연결을 대신하는 역할을 수행.
  • 패킷 필터링 방식보다 높은 보안 설정 가능하며, 일회용 패스워드를 이용한 강력한 사용자 인증 제공.
  • Session에 대한 정보를 추적할 수 있으며, Content Security가 가능.
    (HTTP, NNTP, FTP 등의 경우, Command level -put, get, post 등까지 제어가 가능.)
  • 네트워크에 많은 부하를 주며, 하드웨어에 의존적.
  • 미리 정의된 어플리케이션만 수용 가능하므로, 다양하고 빠르게 발전하는 인터넷 어플리케이션에 대응하지는 못함.

◻ 서킷 게이트웨이(Circuit Gateway) 방식

  • 세션 계층(OSI Layer 5)과 어플리케이션 계층(OSI Layer 7) 사이에서 접근 제어를 실시하는 방화벽.
  • 사용자측 PC에는 방화벽의 대표 프록시와 통신하기 위한 수정된 클라이언트 프로그램이 필요함.
  • 각 서비스별로 프록시가 존재하는 것이 아닌, 대표 프록시를 이용하므로, 어느 서비스 프로토콜도 방화벽을 적용시킬 수 있음.

◻ 서킷 게이트웨이(Circuit Gateway) 방식의 개념도

  • 수정된 클라이언트 프로그램이 설치된 사용자에 대해서는 별도의 인증 절차 없이 투명한 서비스 제공.
  • 단, 사용자들에게 수정된 클라이언트 프로그램을 배포하거나 사용중인 어플리케이션을 수정해야 하는 번거로움이 있음.

◻ 하이브리드 방식

  • 패킷 필터링 방식과 어플리케이션 방식을 혼합.
  • 어플리케이션 방식의 최대 단점인 다양한 응용 서비스의 수용을 패킷 필터링 방식으로 제공.
  • 내부 보안 정책 및 어플리케이션 등에 맞춰 선택적인 보안 설정 가능.
  • 여러 유형의 방화벽 특징을 보유하므로, 커버할 수 있는 범위가 큼.
  • 관리가 복잡하며, 설치시 전문적인 네트워크 컨설팅이 필요.

부하분산 & 부하분산 방법

부하 분산 이란?

부하 분산(Load Balancing) 처리해야 할 업무 혹은 요청 등을 나누어 처리하는 것.

ex) layer2 ,layer3 부하 분산 등등

서버 부하 분산

외부의 사용자로부터 들어오는 다수의 요청을 서버들에게 배분하여 요청을처리케 한다.
=> L4 스위치의 역활 => load Balancer

부하 분산의 방법

📍 라운드 로빈 Round Robin

로드 밸런서가 다수의 서버에게 순서대로 요청을 할당하는 방법.
서버에 차례로 요청을 할당하여 분산한다.

📍 Least Connection

로드 밸런서가 서버에게 요청을 전달한 뒤, 사용자와 서버가 정상적인 연결을 맺으면, user와 server는 'Connection'을 생성한다. 이 커넥션 수 정보를 기반으로 가장 커넥션이 적은 서버, 즉 부하가 가장 덜한 서버에 요청을 전달한다.

📍 Ratio(가중치)

서버의 처리 능력을 고려하여 할당될 수 있는 각 서버가 가질수 있는 Connection의 비율을 미리 정해둔다.
분산 비율이 100% 일때 성능이 가장 떨어지는 서버에게 10% 나머지에게 30% 할당할 수있다.

📍 Fastest(Response Time)

응답속도가 가장빠른 서버에게 우선적으로 할당하는 방식이다. 모두 응답했을때는 추가 요청을 보내지만, 할당된 connection만큼 충분한 응답이 오지 않는다면, 추가요청을 해당 서버로 보내지 않는다.

헬스체크 방식

헬스체크 란?

로드밸런싱 서비스를 제공하는 다수의 서버의 상태를 점검하기 위해 사용되는 기술, 서버의 상태를 주기적으로 체크하여 서버의 상태가 통신이 불가능할 경우 서버를 서비스에서 제외하여 서비스를 원활하게 제공하기 위해 이용되는 방법이다.

서버로 일정 시간 간격으로 서비스에 대하여 Open과 Close를 반복적으로 진행하여 서비스 제공 가능 유무를 점검한다.

ICMP

ICMP 헬스체크는 ICMP를 이용하여 서버의 상태를 검사하는 3계층 헬스체크 기능으로, ICMP의 특성을 이용하여 서버의 IP Address 활성화를 확인하여 점검한다.
서버의 IP aDDRESS에 ICMP를 이용해서 REQUEST메시지를 전송한 후 ICMP Echo Reply 메시지 수신 여부에 따라서 서비스 서버의 서비스 가능 유무를 판단한다.

TCP서비스포트

TCP서비스 포트를 이용하여 서버의 상태를 검사하는 4계층 헬스체크 기능이다. 이미 지정된 포트를 사용하는 FTP, HTTP,TELNET등과 개발자가 가용할 수 잇는 영역에 있는 포트 번호를 이용하여 서비스 제공 가능 유무를 점검한다.

3way handshake를 이용하여 서버의 서비스 포트를 TCP_SYN을 전송하고 그에 따른 응답 유무에 따라 서비스 서버의 서비스 가능 유무를 판단한다.

이후 서버의 소캣 낭비를 막기 위해 SYN_ACK 응답 수신시 바로 RST 패킷을 전송하여 세션을 종료하는 Half-Open 방식과 ACK 패킷을 전송하는 TCP Open 방식으로 나뉜다.

HTTP 상태코드

HTTP 상태코드를 확인 하는 방식으로 로드 밸런서가 서버로 3-핸드세이크를 거치고 나서 HTTP요청을 보내고 정상적인 상태 코드 200 OK를 응답하는지 확인한다.

문자열 확인

로드 밸런서에서 서버로 콘텐츠 요청하고 응답받은 내용을 확인한다. 내용에 지정된 콘텐츠가 정상적으로 응답했는지 확인하는 방법이다. 보통 특정 웹페이지를 호출해서 사전에 지정한 문자열이 해당 웹페이지 내에 포함되어 있는지를 체크하는 기능이다.

로드 밸런서 구성 방식

One Arm

원암 구조는 LB가 스위치 옆에 있는 형태입니다. 한쪽 팔을 벌린 형태와 유사하여 원암으로 불린다.
원암 구조에서의 장점은 모든 트래픽이 LB를 경유하지 않아도 된다는 점이다.
단점으로는 인라인 구조보다 조금 더 설정이 까다롭다는 점이다.

원암 구조에서는 리얼 서버 응답이 다시 LB를 거쳐 사용자에게 전달되기 위해
DNAT (Destination NAT) 뿐 아니라 SNAT(Source NAT) 이 같이 수행되어야합니다.

이 때문에 모든 클라이언트 IP가 LB의 IP로 찍히는 경우 도 간혹 있습니다.
이 경우는 서비스 운영에 꽤 치명적이지만,
LB의 동작 모드 중 DSR(Direct Server Return)을 사용하여 해결 할 수 있다.

Inline

LB가 스위치에서 리얼 서버까지 일직선상 경로에 있는 형태를 말한다.
네트워크 구성이 직관적이라는 장점이 있지만, LB를 거칠 필요가 없는 모든 트래픽들이 로드밸런서를 경유하기때문에 LB에 부하가 많이 갈 수 있다.

로드 밸런서 동작 모드

Transparent or Bridge

트랜스패런트 모드는 LB가 L2 스위치처럼 동작한다.
LB에서 사용하는 VIP 주소와 실제 서버가 동일한 네트워크를 사용하는데,
기존의 네트워크 대역을 그대로 사용하는 투명한 구조를 사용한다 하여 붙여졌다.

요청시 LB로 전달된 도착지 IP와 MAC 주소를 리얼 서버의 IP와 MAC 주소로 변조하여 동작하며 응답시에는 목적지 MAC 주소는 이미 게이트웨이 주소를 가지고 있어 따로 변조하지 않는다.

인라인, 원암 모두 사용가능하지만 원암 구성에서는 LB에서 SNAT을 필요로한다.

Routed

LB가 라우팅 역활을 수행하는 모드이다.
LB기준으로 서로 다른 네트워크가 분리되어있다.

보안 강화 목적으로 네트워크를 사설로 분리하여 구축할 때 사용된다.
트랜스패런트 모드와 비슷하지만,응답시 출발지 MAC주소도 변경해야된다는 차이가 있다.

Direct Server Return

DSR은 원암 구조에서만 사용된다.
행해지는 네트워크 레이어에 따라 L2DSR 과 L3DSR로 나뉜다.

이전 두개의 모드들은 응답이 LB를 경유하여 나갔지만, DSR모드는 LB를 경유하지 않고 리얼서버에서 직접 응답을 내려준다.

응답 트래픽이 LB를 경유하지 않으므로 LB에 부하를 적게준다는 장점이 있지만, 단점으로는 위의 두 모드와는 다르게 리얼서버에서도 추가설정을 해줘야한다는 점, 응답이 LB를 거치지않아 문제확인이 어렵다는 단점이 있다.

참고

https://sightstudio.tistory.com/62

profile
풀스택개발자가 될래요

0개의 댓글