[네트워크] 로드밸런서 (Layer4)

찬들이·2022년 9월 13일
0

컴퓨터공학

목록 보기
25/34

로드 밸런서

로드밸런서는 서버에 가해지는 부하(로드)를 분산(밸런싱)해주는 장치 또는 기술을 칭한다.클라이언트와 서버풀 사이에 위치하며, 한 대의 서버로 부하가 집중되지 않도록 트래픽을 관리해 각각의 서버가 최적의 퍼포먼스를 보일 수 있도록 제공해 준다.

L4 스위치

layer 4에서 패킷을 확인하고 세션을 관리하며, 로드밸런싱을 제공하는 스위치로, TCP/UDP 패킷 정보를 분석해서 해당 패킷이 사용하는 서비스 종류 별로 처리, 세션 관리, 서버/방화벽 로드밸런싱, 네트워크 서비스 품질 보장 등의 역할을 한다.

동작 예시

  1. 브라우저에서 velog.io를 입력한다.
    PC에 설정된 Local DNS 서버로 쿼리를 날리게 되고, 서버는 velog.io를 관리하는 DNS서버를 통해 L4의 VIP 주소를 휙득한다/

  2. Local DNS는 휙득한 VIP 주소를 Client에 전송한다.

  3. 휙득한 DNS를 기반으로 L4 VIP를 통해 http를 L/B장비에 요청한다.

  4. L/B 장비는 최적의 서비스 서버를 내부 알고리즘을 통하여 선별하고, 요청을 전송한 후 서버 작업 결과를 LB/장비가 전송한다.

  5. 전달 받은 http 결과를 L/B장비를 통해 Client에 전송함으로 요청 처리를 끝낸다.

    ADC(Application Delivary Controller)

    L4+L7 로드 밸런서로, L4 스위치와 다르게 어플리케이션 프로토콜의 헤더와 내용을 이해하고 동작한다. 콘텐츠(HTTP, FTP, Telnet, Email 등)를 인지하여 원하는 포트로 전달하는 콘텐츠 기반 스위칭이고, L5~ L7 packet payload(흥미,관심)를 분석하여 스위칭하는 장비이다.

    방화벽

    외부 네트워크(악의적인 해커, 공격자 등)로부터 내부 네트워크 혹은 내부자산(PC,서버,DB등)을 보호하는 보안장비로, 접근통제와 인증, 감사 및 로깅, 프록시, Nat 기능들을 통해 관리 되어진다.

    방화벽의 주요기능

  • 접근 통제

    • 외부에서 내부 네트워크로 접근하는 것을 패킷 필터링을 통해 통제하는 기능
  • 인증

    • 메시지 인증 : VPN 같은 신뢰할 수 있는 통신선을 통해 전송되는 메시지 신뢰성 보장
    • 사용자 인증 : 방화벽을 지나가는 트래픽에 대한 사용자가 누구인지 증명하는 기능(패스워드,토큰,OTP)
    • 클라이언트 인증 : 모바일 사용자처럼 특수한 경우에 접속을 요구하는 호스트 자체에 대한 확인
  • 감사 및 로깅

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

    • 보안정책에 따라 실제 서비스를 수행하는 서버로, 클라이언트의 서비스 요청을 받아 전달하고 결과를 수신하여 사용자에게 전달하는 기능
  • NAT

    • 주소변환 기능으로, 외부 호스트의 IP나 목적지 호스트 IP를 전송단계에서 변환하여 전달하는 기능으로, 네트워크에서 외부망과 내부망을 나눠주는 기능을 가능하게 한다.

    헬스체크 방식 (ICMP, TCP서비스포트, HTTP 상태코드, 문자열확인)

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

    ICMP Health Check

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

    TCP Health Check

    TCP에서 제공되는 서비스 포트를 이용하여 서버의 상태를 검사하는 L4 헬스체크 기능이며, 이미 지정된 포트를 사용하는 FTP, HTTP, Telnet등과 개발자가 가용할 수 있는 영역에 있는 포트 번호를 이용하여 서비스 제공 가능 유무를 점검한다. 이 기능은 서비스를 위한 포트의 상태를 TCP의 초기화에서 사용되는 3 way handshake를 이용하여 서버의 서비스 포트로 TCP_SYN을 전송하고 그에 따른 SYN_ACK로 응답 유무에 따라서 서비스 서버의 서비스 가능 유무를 판단한다. 이후 서버의 소켓 낭비를 막기 위해 SYN_ACK 응답 수신 시 바로 RST 패킷을 전송하여 세션을 종료하는 Half-Open 방식과 ACK패킷을 전송하는 TCP Open 방식으로 나뉜다.

    Script Health Check

    Script를 이용하여 Application Demon을 점검하는 L7 헬스체크 기능이며, Script로 작성된 순서에 의하여 서버로 메시지를 전송하고 그에 따른 응답 메시지 유무에 따라서 서버의 서비스 가능 유무를 판단한다. 기본적으로는 서버와 TCP세션을 맺고 Request 메시지 전송을 통해 응답 코드를 확인한다.

부하 분산 알고리즘

  • Round Robin(순차방식)
    사용자 요구를 차례대로 각 서버에 균등하게 분배하는 방식으로 서버 커넥션 수나 응답시간에 상관없이 그룹내의 모든 서버를 동일하게 처리하여 일반적인 구성에 있어서 다른 알고리즘에 비해서 가장 빠르다는 장점을 가진다.

  • Least Connection(최소접속방식)
    오픈 커넥션이 가장 적은 서버로 사용자 요구를 연결하는 방식으로 모든 서버가 균등한 트래픽을 유지하기 위해서 처리 속도가 빠른 서버가 더 많은 접속을 받게 된다. 최소접속 알고리즘은 서버들의 성능이 비슷하게 구성되었을 경우에 가장 효과적인 트래픽 분산이 가능하다.

  • Fastest Response Time(응답시간방식)
    가장 빨리 응답하는 서버에 이용자 요구를 연결하는 방법. 응답시간은 각 서버가 패킷 형태의 요구를 송수신하는데 걸리는 시간을 측정한 것이다.

  • Fixed(고정방식)
    어떤 서버가 커넥션 요청을 받는지를 결정하기 위해 각 유입요청의 소스 IP어드레스를 사용한다. 이 알고리즘은 여러종류의 어드레스로부터 많은 양의 요구가 있을 경우 더 잘 작동한다. 이것은 동일한 게이트웨이를 통하여 들어오는 많은 요구보다 여러 종류의 혼합된 소스 IP 어드레스의 요구일 경우 더 잘 수행한다.기타 Hashing, Min Misses, Random, URL-based, Cookie, SSL session ID 와 같은 방식의 알고리즘이 있다. 또한 로드밸런싱정책은 장비의 Vender에 따라 지원하는 정책이 조금씩 달라 질 수 있다.

    로드 밸런서 구성 방식

    인라인 구조


  • LB가 스위치에서 리얼 서버까지 일직선상 경로에 있는 형태

  • 직관적이라는 장점이 있지만, 모든 트래픽이 LB를 경유하기 때문에 부하가 많이 갈 수 있다.

    One-ARM 구조

  • LB가 스위치 옆에 있는 형태

  • 모든 트래픽이 LB를 경유하지 않아도 되기 때문에 부하는 줄였지만, 설정이 까다롭다는 단점이 있다.

로드 밸런서 동작 모드

트랜스패런트 모드

기존 네트워크 대역을 그대로 사용하는 투명한 구조를 사용한다 하여 붙여진 이름이고, LB가 L2 스위치처럼 동작하며, LB에서 사용하는 VIP 주소와 실제 서버가 동일한 네트워크를 사용한다.
인라인 원암 구조 둘 다 사용 가능하다.


라우티드 모드

이름처럼 LB가 라우팅 역할을 수행하는 모드이다.
LB 기준으로 서로 다른 네트워크가 분리되어 있어, 보안 강화에는 좋지만, 트랜스패런트 모드와 다르게 응답시 출발지 MAC주소를 변경해야된다는 차이가 있다.

DSR 모드

Direct Server Return의 줄임말이며 원암 구조에서만 사용된다. 이전 두 개의 모드들과 다르게 응답이 LB를 경유하지 않고 리얼 서버에서 직접 응답을 내려준다.
응답 트래픽이 LB를 경유하지 않으므로 LB에 부하를 적게 준다는 장점이 있지만, 단점으로 리얼 서버에서도 추가 설정을 해줘야 한다는 점과 응답이 LB를 거치지 않아 문제확인이 어렵다는 단점을 가지고 있다.

profile
Junior-Backend-Developer

0개의 댓글