[부트캠프 - 22일차] 1/21.수 - Network

developowl·2026년 1월 21일

부트캠프

목록 보기
13/29
post-thumbnail

4.NetworkDevice

2계층 장비 - L2 Switch

Switch : 패킷을 동시에 여러 장비가 서로 간섭없이 통신하도록 도와주는 장비

개요

  • 네트워크 중간에서 패킷을 받아 필요한 곳에만 보내주는 네트워크 중재자
  • 허브는 신호를 증폭해주고 데이터를 받으면 연결된 모든 곳에 전송해주는 장비
  • 스위치는 아무 설정 없이 네트워크에 연결해도 MAC 주소를 기반으로 패킷을 전달하는 기본 동작을 수행할 수 있는 2계층 장비
  • MAC 주소를 인식하고 패킷을 전달하는 스위치의 기본 동작 외에도 한 대의 장비에서 논리적으로 네트워크를 분리할 수 있는 VLAN 기능과 네트워크의 루프를 방지하는 스패닝 트리 프로토콜(STP)과 같은 기능을 기본적으로 가지고 있으며, 다양한 보안 기능과 모니터링에 필요힌 여러 기능이 있음
  • 전문적인 네트워크 관리자가 되기 전에는 VLAN에 대한 이해와 설정 그리고 트렁크 포트 설정과 루프 방지의 개념만 알아도 됨

역할

  • 네트워크 성능을 높여줌
    • 여러 단말이 한꺼번에 통신할 수 있어 통신하기 위해 기다리거나 충돌 때문에 대기하는 문제를 해결

MAC Address Table

  • 연결된 장비의 MAC Address 와 인터페이스를 기록한 테이블

MAC Address Table을 만드는 방법

Flooding

  • 스위치가 처음 부팅 되었을 때는 MAC Address Table이 비어있는 상태
  • 데이터가 전송을 요청하면 연결된 모든 장비에 패킷을 전송
  • Flooding은 정상적인 동작이지만, 이 동작이 많아지면 스위치가 제 역할을 못하게 됨

비정상적인 Flooding

  • 스위치의 기능을 무력화해서 주변 통신을 모니터링 하는 공격 기법
  • 스위치에게 엉뚱한 MAC Address를 학습시키거나, MAC Address Table을 꽉 차게 해서 스위칭의 플러딩 동작을 유도
  • 연결된 장비를 모니터링 해서 이런 상황이 벌어지면 주변에서 공격이 수행되는 상황임을 파악해야 함

Address Learning

  • 패킷을 전송한 곳의 MAC Address 와 인터페이스를 MAC Address Table에 기록
  • Broadcast, Multicast 의 경우는 MAC Address 를 학습할 수 없음
  • 사전 정의된 MAC Address Table: Switch 간 통신을 위해서 사용되는 주소

Forwarding / Filtering

  • 전송된 데이터가 맞지 않는 인터페이스로는 전송하지 않고(Filtering), 일치하는 인터페이스에는 데이터를 전송(Forwarding)

LAN에서의 ARP(Address Resolution Protocol)

  • MAC Address 를 학습하는 프로토콜
  • 이더넷에서는 스위치가 Unicast를 Flooding 하는 경우는 거의 없음
  • 패킷을 만들기 전에 단말의 MAC Address를 알기 위해서 ARP Broadcast 가 먼저 수행되기 때문
  • ARP와 MAC Address Table은 일정 시간 동안 지워지지 않는데, 이 시간을 Aging Time 이라고 함
    • 일반적으로 MAC Address Table의 에이징 타임이 더 길어서 Unicast 전송 시 Flooding이 발생하는 것을 방지

VLAN(Virtual Local Area Network)

  • 물리적 배치와 상관없이 LAN 을 논리적으로 분할 구성하는 기술
  • 기업과 같이 여러 부서가 함께 근무하면서 각 부서 별로 네트워크를 분할 할 때 네트워크를 여러 개 운영해야 함
  • 최근에는 전화기, 복합기, 스마트폰과 같이 PC 외에도 다수의 단말이 네트워크에 연결되므로 네트워크 분할이 더 중요
  • 과도한 브로드캐스트로 인한 단말들의 성능 저하, 보안 향상을 위한 차단 용도, 서비스 성격에 따른 정책 적용과 같은 이유로 네트워크가 분리되어야 함
  • VLAN을 나누면 하나의 장비를 서로 다른 네트워크를 갖도록 논리적으로 분할한 것이므로 Unicast 뿐 아니라 브로드캐스트도 VLAN 간에 통신할 수 없음

[개요]

  • VLAN 간의 통신이 필요하다면 서로 다른 네트워크 간의 통신이므로 3계층 장비(Router)가 필요

  • VLAN을 사용하면 물리적 구성과 상관없이 네트워크를 분리할 수 있고, 물리적으로 다른 층에 있는 단말이 하나의 VLAN을 사용해 동일한 네트워크로 묶을 수 있음
  • 같은 층에서 부서별로 네트워크를 분리하거나 일반 PC, IP 전화기를 분리할 수 있음
  • 무선 단말과 같이 서비스나 단말의 성격에 따라 네트워크를 분리할 수 있고, 분리된 단말 간에는 3계층 장비를 통해 통신

[종류와 특징]

  • 포트 기반 VLAN

    • 어떤 단말이 연결되는지 스위치의 특정 포트에 VLAN을 할당하면 할당된 VLAN에 속하게 됨
  • MAC Address 기반 VLAN

    • 사용자들이 자리 이동이 많은 경우 고정 포트에 VLAN을 할당하는 것이 아니고, 스위치에 연결되는 단말의 MAC 주소를 기반으로 VLAN을 할당하는 기술
    • 단말에 따라 VLAN이 변경될 수 있어서 Dynamic VLAN 이라고도 함
  • 데이터센터에서의 스위치 VLAN은 일반적으로 포트 기반 VLAN

  • 사용자의 이동성을 요구하는 최근 스마트 오피스의 경우는 MAC 기반 VLAN 구성이 많이 사용되고 있음

[VLAN 동작 방식]

  • 서로 다른 VLAN은 3계층 장비를 이용해서 통신을 수행
  • 서로 다른 물리적 장비에 구성된 동일한 VLAN은 연결이 되어 있어야만 통신이 가능
  • 하나의 스위치에 여러 개의 VLAN이 존재하고, 다른 스위치에도 여러 개의 VLAN이 존재하는 상태에서 각 스위치에 동일한 VLAN이 여러 개 존재하는 경우 여러 개의 포트를 연결해야 함.

[Trunk Port]

  • 데이터를 전송할 때, VLAN ID를 함께 전송해서 읽을 때 VLAN ID를 읽어서 특정 VLAN에 데이터를 전송하는 포트
  • Tagged Port 라고도 함.
  • 이 포트를 이용하면 스위치끼리 여러 개의 VLAN이 연결되어 있더라도 물리적으로 하나만 연결하면 됨
  • Trunk 는 Cisco 에서 사용하는 용어
  • 트렁크 포트 이외의 포트를 Untagged 포트 또는 Access 포트라고 함
  • 스위치 간의 연결이 아닌 서버와 연결된 포트도 VMWare 의 ESXi 와 가상화 서버가 연결될 때는 Tagged 포트로 설정해야한다.
  • 가상화 서버 내부에 가상 스위치가 존재하기 때문에 스위치와 스위치의 연결로 봐야 함.

[STP]

  • ⭐️ SPoF(Single Point of Failure - 단일 장애점)

    • SPoF란 하나의 시스템이나 구성 요소에서 고장이 발생했을 때 전체 시스템의 작동이 멈추는 요소
    • 네트워크에서도 하나의 장비 고장으로 전체 네트워크가 마비되는 것을 막기 위해 이중화 및 다중화된 네트워크를 디자인하고 구성

[Loop]

  • SpoF를 피하기 위해 스위치 두 대로 네트워크를 디자인 하지만, 스위치 두 대로 디자인을 하면 패킷이 네트워크를 따라 계속 전송되므로 네트워크를 마비시킬 수 있음

(다양한 루프 구조)

  • Broadcast Storm

  • 루프 구조로 네트워크가 연결된 상태에서 단말에서 브로드캐스트를 발생시키면 스위치는 이 패킷을 패킷이 유입된 포트를 제외한 모든 포트로 Flooding
  • Flooding 된 패킷은 다른 스위치로도 보내지고, 이 패킷을 받은 스위치는 패킷이 유입된 포트를 제외한 모든 포트로 다시 Flooding 하다보면 루프 구조에서는 이 패킷이 계속 돌아가는데, 이것을 브로드캐스트 스톰이라고 함
  • 네트워크에 접속된 단말의 속도가 느려지고, 접속 속도가 느려짐. 또 설치된 스위치에 모든 LED 들이 동시에 빠른 속도로 깜빡임
  • Router 에서는 이런 문제가 발생하지 않는데, 3계층에서는 TTL(Time To Live) 이라는 패킷 수명을 가지고 있기 때문에 이런 상황이 발생하지 않음

[STP]

  • Spanning Tree Protocol 은 루프를 확인하고 적절히 포트를 사용하지 못하도록 만들어 루프를 예방하는 메커니즘
  • 이를 위해서 BPDU(Bridge Protocol Data Unit) 라는 프로토콜을 통해 스위치 간에 정보를 전달하고 이렇게 수집된 정보를 이용해서 루프 구간을 확인
  • BPDU에는 스위치의 고유한 값을 같이 전송해서 루프를 파악
  • 동작 방식
    • 루프를 없애기 위해 나무가 뿌리에서 가지로 뻗어나가는 것 처럼 토콜리지를 구성
    • 네트워크 상에서 뿌리가 되는 가장 높은 스위치를 선택하고, 그 스위치를 통해 BPDU가 교환되도록 하는데 그 스위치가 Root Switch
    • 모든 스위치는 처음에 자신을 루트 스위치로 인식해서 동작
    • BPDU를 교환해서 브릿지 ID가 낮은 스위치를 루트 스위치로 선정

[향상된 STP]

RSTP

  • 스패닝 트리 프로토콜은 이중화된 스위치 경로 중 정상적인 경로에 문제가 발생할 경우 백업 경로를 활성화하는데 30~50초 정도 걸림
  • BPDU에 별도의 부가 정보를 추가해서 2~3초 정도로 줄인 방식

MST

  • 일반 스패닝 프로토콜은 VLAN 개수와 상관 없이 스패닝 트리가 한 개만 동작
  • VLAN을 그룹별로 묶어서 여러 개의 스패닝 트리가 동작하게 해서 효율을 높인 방식

[스위치의 구조]

  • 관리용 Control Plane 과 패킷을 포워딩하는 Data Plane 으로 구성
  • 스위치 원격 관리용 텔넷, SSH, Web 과 같은 서비스는 Control Plane 에서 수행

[스위치에 IP를 할당하는 이유]

  • 스위치는 근본적으로 IP를 할당할 필요가 없음
  • 관리 목적으로 IP를 할당
    • 일정 규모 이상의 네트워크에서 운영되는 스위치는 원격으로 접속해서 관리할 수 있도록 하기 위해서

3계층 장비 - Router & L3 Switch

Router : 3계층 장비로 경로를 지정해주는 장비

  • 라우터에 들어오는 패킷의 목적지 IP 주소를 확인하고 자신이 가진 경로 정보를 이용해서 패킷을 최적의 경로로 포워딩
  • 원격지 네트워크와 연결할 때 필수 네트워크 장비

L3 Switch

  • 라우터처럼 3계층에서 동작하는 스위치
  • 기존의 라우터는 소프트웨어로 구현하고 스위치는 하드웨어로 구현하는 형태로 구분하거나 다양한 기능의 라우터와 패킷을 빨리 보내는데 최적화된 스위치로 구분했는데, 지금은 라우터와 L3 Switch를 구분하기 어려움

라우터의 동작 방식과 역할

  • 라우터는 다양한 경로 정보를 수집해 최적의 경로를 라우팅 테이블에 저장한 후 패킷이 라우터로 들어오면 도착지 IP 주소와 라우팅 테이블을 비교해 최선위 경로로 패킷을 내보냄
  • 스위치와 반대로 라우터는 들어온 패킷의 목적지 주소가 라우팅 테이블에 없으면 패킷을 버림
  • 패킷 포워딩 과정에서 기존 2계층 헤더 정보를 제거한 후 새로운 2계층 헤더를 만들어 냄
  • 라우터의 동작 방식을 경로 지정, 브로드캐스트 컨트롤, 프로토콜 변환이라 함

경로 지정

  • 경로 정보를 모아서 라우팅 테이블을 만들고 패킷이 라우터로 들어오면 패킷의 도착지 IP 주소를 확인해서 경로를 지정하고 패킷을 포워딩
  • 경로를 학습하는 방법은 인접 네트워크 정보를 얻는 방법과 관리자가 직접 경로 정보를 입력하는 방법 그리고 라우터끼리 서로 경로 정보를 자동으로 교환하는 방법이 있음
  • 라우터가 패킷을 처리할 때 수행하는 작업
    • 경로 정보를 얻어 경로 정보를 정리하는 역할
    • 정리된 경로 정보를 기반으로 패킷을 포워딩하는 역할
    • 라우터는 서브넷 단위로 라우팅 정보를 습득하고, 라우팅 정보를 최적화하기 위해서 서머리 작업을 통해 여러 개의 서브넷 정보를 뭉쳐서 전달
    • 라우터에 들어온 패킷의 목적지 주소와 라우터가 갖고 있는 라우팅 테이블 정보가 정확히 일치하지 않더라도 수많은 정보 중 목적지에 가장 근접한 정보를 찾아 패킷을 포워딩 해야 함
  • 현대 인터넷에서는 단말부터 목적지까지의 경로를 모두 책임지는 것이 아닌, 인접한 라우터까지만 경로를 지정하면 인접 라우터에서 최적의 경로를 다시 파악한 후 다음 라우터로 패킷을 포워딩

(라우팅 동작과 라우팅 테이블)

  • 네트워크를 한 단계씩 뛰어 넘는다는 의미로 Hop-by-Hop 라우팅이라고 부르고, 인접한 라우터를 next hop 이라고 함
  • 라우터는 패킷이 목적지로 가는 전체 경로를 파악하지 않고, 최적의 next hop을 선택해 보내줌
  • next-hop 을 지정하는 방법
    • 다음 라우터의 IP를 지정하는 방법
    • 라우터의 나가는 인터페이스를 지정하는 방법
    • 라우터의 나가는 인터페이스와 다음 라우터의 IP를 동시에 지정하는 방법

(라우팅 동작과 라우팅 테이블)

  • 루프가 없는 3계층: TTL(Time To Live)
    • 3계층의 IP 헤더에는 TTL 이라는 필드가 있는데, 이 필드는 패킷이 네트워크에 살아 있을 수 있는 시간(HOP)을 제한
    • 인터넷 구간에서 쓸모없는 패킷이 돌아다녀 대역폭을 낭비하는 것을 막이 위해 라우터는 주소가 불분명한 패킷을 버림
    • 실제로 운영되던 사이트가 갑자기 없어진다던가 이 상황에서 대안 경로를 찾다가 순간적으로 마주보는 두 대의 라우터의 넥스트 홉이 각각 상대방으로 구성되어 패킷이 두 라우터 사이에서 계속 오가는 경우가 발생할 수 있음
    • 패킷이 영구적으로 사라지지 않는다면 장비 간에 동일한 패킷이 ping pong을 치거나 인터넷에 사라지지 않는 유령 패킷이 넘쳐나게 됨
    • → 모든 패킷은 TTL 이라는 수명 값(Lifetime)을 가지고 있고, 이 값이 0이 되면 네트워크 장비에서 버림
    • TTL은 실제 초(s)와 같은 시간이 아니라 홉을 지칭하며, 하나의 홉을 지날 때마다 TTL 값은 1씩 줄어듦

브로드캐스트 컨트롤

  • 라우터는 목적지 주소를 모르는 패킷이 전달되더라도 브로드캐스트를 수행하지 않음

프로토콜 변환

  • 예전에는 LAN에서 사용하는 프로토콜과 WAN에서 사용하는 프로토콜이 달라서 변환을 라우터가 수행

라우터가 경로 정보를 얻는 방법

  • 다이렉트 커넥티드 (Direct Connected)

    • IP 주소를 입력할 때 사용된 IP 주소와 서브넷 마스크로 해당 IP 주소가 속한 네트워크 주소 정보를 알 수 있음
    • 라우터나 PC에서는 이 정보로 해당 네트워크에 대한 라우팅 테이블을 자동으로 만듦
    • 이 경로 정보를 Direct Connected 라고 부름
    • 다이렉트 커넥티드로 생성되는 경로 정보는 인터페이스에 IP를 설정하면 자동 생성되는 정보이므로, 정보를 강제로 지울 수 없고 해당 네트워크 설정을 삭제하거나 해당 네트워크 인터페이스가 비활성화 되어야만 자동으로 사라짐
  • 스태틱 라우팅 (Static Routing)

    • 관리자가 목적지 네트워크와 넥스트 홉을 라우터에 직접 지정해 경로 정보를 입력하는 것

    • 스태틱 라우팅은 관리자가 경로를 직접 지정하므로 라우팅 정보를 매우 직관적으로 설정 및 관리

    • 연결된 인터페이스 정보가 삭제되거나 비활성화되면 연관된 스태틱 라우팅 정보가 자동 삭제

    • 물리적인 인터페이스가 아닌 논리 인터페이스는 물리 인터페이스가 비활성화 되더라도 함께 비활성화 되지 않는 경우도 있어서 라우팅 테이블에서 사라지지 않는 경우도 있음

    • 인터넷 초기 설정 시에만 사용하고, 네트워크 설정을 할 때는 거의 사용하지 않음

      (단점)

    • 스태틱 라우팅은 변화가 적은 작은 규모의 네트워크에서는 손쉽게 관리할 수 있지만, 규모가 큰 네트워크나 변화가 심한 네트워크에서는 부적합

    • 스태틱 라우팅은 라우터 너머의 다른 라우터의 상태 정보를 파악할 수 없어, 라우터 사이의 회선이나 라우터에 장애가 발생하면 장애 상황을 파악하고 대체 경로로 패킷을 보낼 수 없음

  • 다이나믹 라우팅 (Dynamic Routing)

    • 라우터끼리 자신이 알고 있는 경로 정보나 링크 상태 정보를 교환해 전체 네트워크 정보를 학습하는 방식
    • 주기적으로 또는 상태 정보가 변경될 때 라우터끼리 경로 정보가 교환되므로 라우터를 연결하는 회선이나 라우터 자체에 장애가 발생하면 이 상황을 인지해서 대체 경로로 패킷을 포워딩할 수 있음
    • 관리자의 개입없이 라우터끼리 정보 교환만으로 장애를 인지하고 트래픽을 우회할 수 있어서 대부분의 네트워크에서 다이나믹 라우팅을 사용
    • 자신이 광고할 네트워크를 선언해주어야 하는데 각 다이나믹 라우팅 프로토콜에 따라 설정 방법만 다를 뿐 광고에 필요한 자신의 네트워크를 선언해야 하는 것은 동일

라우팅 / 스위칭 우선 순위

  • Direct Connected > Static Routing > Dynamic Routing

  • AD(Administrative Distance - 관리 거리)

  • 동일한 우선 순위의 경우 AD를 이용해서 우선 순위를 설정

    	![](https://velog.velcdn.com/images/pizza_loves_me/post/f394de34-9080-4148-b7e8-034226e1fc59/image.png)

    (Cisco 장비 기준 AD)

  • 라우팅 테이블은 가장 좋은 경로 정보만 모아놓은 핵심 정보

  • 일반적인 경로 정보를 모아놓은 토폴로지 테이블에서 좋은 경로 정보의 우선수위는 경로 정보를 받은 방법과 거리를 기준으로 정함

4계층 장비 - LoadBalancer(L4 Switch) & Firewall

LoadBalancer

  • 네트워크 장비는 2계층과 3계층에서 동작하는 장비를 지칭하는 용어였지만, IP 부족으로 NAT 기술이 등장하고 보안용 방화벽, 프록시와 같은 장비들이 등장
  • 4계층 이상에서 동작하는 네트워크 장비들이 많아지면서 4계층에서 동작하는 장비도 네트워크 장비에 포함
  • 4계층의 특징인 포트 번호, 시퀀스 번호, ACK 번호를 붙여서 사용
  • 기존 2, 3계층 장비에서 고려하지 않았던 통신의 방향성이나 순서와 같은 통신 전반에 대한 관리가 필요하며 이런 정보를 Session Table 이라는 공간에 담아 관리
  • 4계층 이상에서 동작하는 장비는 이런 세션 테이블을 관리해야 하고 이 정보를 기반으로 동작함

4계층 장비의 특징

  • TCP와 같은 4계층 헤더에 있는 정보를 이해하고 이 정보들을 기반으로 동작
  • 4계층에서 동작하는 LoadBalancerFirewall 을 세션 장비라고도 함

Session 장비에서 고려할 요소

  • Session Table
  • Symmetric 경로 요구: Inbound 와 Outbound 경로가 일치해야 함
  • 정보 변경
    • LoadBalancer 의 경우는 IP 주소가 변경되며, 확장된 L7 LoadBalancer는 애플리케이션 프로토콜 정보도 변경함

LoadBalancer

서버나 장비의 부하를 분산하기 위해 사용하는 장비

  • 트래픽을 분배해주는 기능 때문에 4계층 이상에서 동작하면서 IP 주소나 4계층 정보 또는 애플리케이션 정보를 확인 및 수정하는 기능이 있음
  • 가장 많이 사용되는 것은 서버의 부하 분산
  • 작은 시스템 여러 대를 운영하더라도 사용자는 서버 배치와 상관없이 하나의 서비스로 보여야 하는데, 로드밸런서가 서비스에 사용되는 대표 IP 주소를 서비스 IP로 갖고, 그 밑에 시스템이 늘어나면 로드밸런서가 각 시스템의 실제 IP로 변경해서 요청을 전송
  • 로드밸런서는 웹 애플리케이션 뿐 아니라 FWLB(Fire Wall Load Balancer) 나 VPBLB(VPN Load Balancer) 와 같이 다양한 서비스를 위해 사용할 수 있음

L4 LoadBalancing & L7 LoadBalancing

  • L4 LoadBalancing

    • 일반적인 로드밸런서가 수행하는 동작
    • TCP, UDP 정보를 기반으로 로드밸런싱을 수행
    • 최근에 사용되는 LoadBalancer 는 L4, L7 의 기능을 모두 지원하기 때문에 L4 로드밸런싱만 제공하는 전용 장비는 찾아보기 힘들지만, 장비에서 L7 지원 여부와 상관없이 4계층에 대한 정보로만 분산 처리하는 경우
  • L7 LoadBalancing

    • HTTP, FTP, SMTP 와 같은 애플리케이션 프로토콜 정보를 기반으로 로드밸런싱을 수행
    • HTTP 헤더 정보나 URI 와 같은 정보를 기반으로 프로토콜을 이해한 후 부하를 분산할 수 있음
    • 일반적으로 이런 장비를 ADC(Application Delivery Controller) 라고 부르며, Proxy 역할을 수행
    • squid, nginx 에서 수행하는 Reverse Proxy와 유사한 기능
  • 보통 데이터센터에서 사용하는 로드밸런싱 장비는 L4, L7을 모두 지원하며 실제로 어떻게 설정했는가에 따라 L4 로드밸런싱과 L7 로드밸런싱 으로 나누는데, 클라우드에서는 L4-LB 와 L7-LB 을 지원하는 컴포넌트를 계층별로 구분해 전용으로 사용함

    • AWS에서는 NLB(Network Load Balancer) 가 L4-LB, ALB(Application Load Balancer)가 L7-LB 용 전용 컴포넌트

L4 Switch

4계층에서 동작해서 LoadBalancer 기능이 있는 스위치

  • 내부 동작 방식은 4계층 LoadBalancer 이지만 외형은 여러 개의 포트를 가지고 있음
  • 서버형 로드밸런서나 소프트웨어 형태(nginx 등)의 로드밸런서도 있지만, 다양한 네트워크 구성이 가능한 스위치형 로드밸런서가 가장 대중화 되어 있음
  • L4 스위치는 부하 분산 및 성능 최적화와 리다이렉션 기능을 제공

부하 분산

  • Virtual Server, Virtual IP, Real Server, Real IP 를 설정해야 함
    • Virtual Server 와 Virtual IP 가 사용자가 바라보는 실제 서비스
    • Real Server가 실제 서비스를 수행하는 서버
    • Real IP가 Real Server의 IP
  • L4 Switch 는 Virtual IP -> Real IP 로 변경해주는 역할을 수행
  • 사용자는 L4 Switch 의 Virtual IP를 목적지로 서비스를 요청하고, L4 스위치가 목적지로 설정된 가상 IP를 리얼 IP로 다시 변경해 전송
  • 이 과정에서 부하를 어떤 방식으로 분산할지 결정할 수 있음

헬스 체크(Health Check)

  • 서비스 그룹에 있는 각 서버가 살아있는지 확인하는 작업.

  • 정상적인 서비스 쪽으로만 부하를 분산하고, 비정상적인 서버는 서비스 그룹에서 제외해서 트래픽을 보내지 않아야 함

  • 비정상적인 서버라고 하더라도 헬스 체크를 수행해서 정상으로 확인되면 다시 서비스 그룹에 포함시켜야 함

  • 헬스 체크 방식

    • ICMP (Internet Control Message Protocol)

      • VIP에 연결된 리얼 서버에 대해 ICMP(ping) 로 헬스 체크를 수행하는 방법
      • 살아 있는지 여부만 체크하는 방법이므로 잘 사용하지 않음
    • TCP Service Port

      • 가장 기본적인 헬스 체크 방법은 로드 밸런서에 설정된 서버의 서비스 포트를 확인하는 것
      • 서비스 포트를 이용해 헬스 체크를 할 때는 실제 서비스 포트가 아닌 다른 서비스 포트로도 가능
      • 로드밸런서에서 Real IP로 SYN를 보냄 → 해당 Real IP로부터 SYN, ACK 를 받음 → 서버에 다시 ACK로 응답 → FIN을 보내어 헬스 체크 종료
      • 서비스 포트를 이용해서 헬스 체크를 할 때는 실제 서비스 포트를 확인할 필요는 없음(다른 서비스 포트도 가능)
    • TCP Service Port : Half Open

      • 일반적인 TCP 서비스 포트와 동일하게 동작하지만, FIN 대신에 RST를 보내서 세션을 끊어버리는 방식
      • 헬스 체크로 인한 부하를 줄일 수 있음
    • HTTP Status Code

      • 웹 서비스를 할 때 서비스 포트까지는 TCP로 정상적으로 열리지만, 웹 서비스에 대한 응답을 정상적으로 해주지 못하는 경우가 있음
      • 로드밸런서의 헬스 체크 방식 중 HTTP 상태 코드를 확인하는 방식으로 로드밸런서가 서버로 3방향 핸드셰이크를 거치고나서 HTTP를 요청해 정상적인 상태 코드(200 OK)를 응답하는지 여부를 체크해 헬스 체크를 수행할 수 있음
    • 콘텐츠 확인

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

헬스 체크 주기와 타이머

    • Interval - 로드 밸런서에서 서버로 헬스 체크 패킷을 보내는 주기
    • Response - 로드 밸런서에서 서버로 헬스 체크 패킷을 보내고 응답을 기다리는 시간으로 해당 시간까지 응답이 오지 않으면 실패로 간주
    • Retries - 로드 밸런서에서 헬스 체크 실패 시 최대 시도 횟수로 최대 시도 횟수 이전에 성공 시 횟수는 초기화됨
    • Timeout - 로드 밸런서에서 헬스 체크 실패 시 최대 대기 시간으로 헬스 체크 패킷을 서버로 전송한 후 이 시간 내에 성공하지 못하면 해당 서버는 다운
    • Dead Interval - 서비스의 기본적인 헬스 체크 주기가 아닌 서비스 다운 시의 헬스 체크 주기로 서비스가 죽은 상태에서 헬스 체크 주기를 별도로 더 늘릴 때 사용

부하 분산 알고리즘

  • Round Robin
    • 현재 구성된 장비에 순차적으로 분산함. 총 누적 세션 수는 동일하지만 활성화 된 세션 수는 달라질 수 있음
  • Least Connection (최소 접속)
    • 현재 구성된 장비 중 가장 활성화된 세션 수가 적은 장비로 부하를 분산함
  • Weighted Round Robin
    • 라운드 로빈 방식과 동일하지만, 각 장비에 가중치를 두어 가중치가 높은 장비에 부하를 더 많이 분산함. 처리 용량이 다른 서버에 부하를 분산하기 위한 분산 알고리즘
  • Weighted Least Connection
    • 최소 접속 방식과 동일하지만, 각 장비에 가중치를 두어 가중치가 높은 장비에 부하를 더 많이 분산함. 처리 용량이 다른 서버에 부하를 분산하기 위한 분산 알고리즘
  • Hash
    • 해시 알고리즘을 이용한 부하 분산
    • 서버의 부하를 고려하지 않고 클라이언트가 같은 서버에 지속적으로 접속하도록 하기 위해 사용하는 부하 분산 방식
    • 같은 알고리즘을 사용하면 항상 동일한 결과값을 가지고 서비스를 분산할 수 있음
    • → 라운드 로빈이나 최소 접속 방식은 부하를 비교적 비슷한 비율로 분산시킬 수 있다는 장점이 있지만, 동일한 출발지에서 로드 밸런서를 거친 서비스 요청이 처음에 분산된 서버와 그 다음 요청이 분산된 서버가 달라질 수 있어, 각 서버에서 세션을 유지해야 하는 서비스는 정상적으로 서비스 되지 않음

로드 밸런서 구성 방식

  • 원암 구성 → 로드 밸런서가 모든 트래픽을 받지 않음

    • 로드 밸런서가 중간 스위치 옆에 연결되는 구성. 서버로 가는 경로 상에 로드 밸런서가 연결되는 구성
    • 로드 밸런서와 스위치 간에 연결된 인터페이스가 한 개라는 뜻은 아님
    • 부하 분산을 수행하는 트래픽에 대해서만 로드 밸런서를 경유하고 부하 분산을 수행하지 않는 트래픽은 로드 밸런서를 경유하지 않고 통신할 수 있음
  • 인라인 구성 → 로드 밸런서가 모든 트래픽을 받음

    • 부하 분산을 포함한 모든 트래픽이 로드 밸런서를 경유하는 구성
    • 구성 방식에 따라 트래픽이 흐르는 경로, NAT 설정 등의 동작 모드가 달라질 수 있음

HAProxy 를 사용한 로드 밸런서 설정

  • 일반 서버에서 로드 밸런서의 역할을 직접 수행하게 해주는 오픈소스 기반의 소프트웨어 로드 밸런서
  • NFV(Network Fuction Virtualization) 이라고 볼 수 있음.
  • HAProxy 를 적용한 하드웨어 어플라이언스(Hardware Appliance) 형태의 모델인 ALOHA 로드밸런서도 제공
profile
Don’t get mad at the computer.

0개의 댓글