혼자하는 네트워크 공부 #9

배석주·2023년 3월 2일
0

네트워크

목록 보기
9/11
post-thumbnail

이중화 기술

끊김없는 안정적인 서비스를 제공하기 위해서는 네트워크, 서버, 스토리지와 같은 인프라뿐만 아니라 애플리케이션도 이중화(다중화) 기술을 적용해야 한다.
이중화를 위해 동일한 역할을 하는 인프라를 두 대 이상 구성하거나 하나의 장비 내에 네트워크 인터페이스 카드와 같은 내부 구성요소를 다중으로 구성하기도 하고 동일한 역할을 하는 애플리케이션을 동시에 여러 개 띄워 서비스를 제공하기도 한다.
이런 이중화 기술은 서비스 가용성을 높여주고 가용량을 확장해주기 때문에 안정적인 서비스 제공을 위해 이중화는 필수 요소이다.

이중화 기술 개요

SPoF

단일 장애점(Single Point of Failure)는 시스템 구성 요소 중 동작하지 않으면 전체 시스템이 중단되는 요소를 말한다.
서비스를 제공하기 위한 인프라의 주요 목표 중 하나는 적시에 서비스를 출시하기 위해 인프라를 신속히 제공하는 것이다. 소위, Time-To-Market을 위한 인프라의 민첩성이다.
하지만 인프라의 더 본질적인 목표는 더 가용성 높은 서비스에 필요한 인프라를 안정적으로 제공하는 것이다.
따라서 인프라를 설계할 때, 단일 접점의 장애가 전체 서비스에 영향을 미치지 않도록 SPoF를 만들지 않아야 한다.
SPoF는 전체 서비스의 가용성, 연속성, 안정성을 떨어뜨리는 매우 위험한 요소이므로 인프라를 안정적으로 운용하려면 인프라를 설계할 때, SPoF를 최소화하는 것이 아니라 아예 만들어지지 않도록 설계해야 한다.

이중화의 목적

안정적인 서비스 제공을 위해 네트워크를 포함한 모든 인프라에서 반드시 갖추어야 할 요소 중 하나는 이중화이다. 인프라를 구성하는 각 요소가 복수 개 이상으로 인프라를 구성해 특정 인프라에 문제가 발생하더라도 이중화된 다른 인프라를 통해 서비스가 지속되도록 해준다.
서비스에 필요한 출발 지점부터 끝 지점까지(End-to-End) 속하는 모든 인프라에 이중화 구성을 고려해야 한다.
이런 이중화 구성은 각 구성 요소가 동시에 운영 중인 상태로 동작할 것인지, 하나의 구성 요소는 운영 상태이고 다른 하나는 대기 상태로 있다가 운영 상태인 인프라에 장애가 발생하면 대기 상태인 인프라가 운영 상태로 전환될 것인지에 따라 액티브-액티브(Active-Active) 또는 액티브-스탠바이(Active-Stand-by) 형태로 구성한다.
인프라를 굳이 이중화하지 않더라도 장애가 발생하지 않으면 평소 서비스 제공에는 아무 문제가 없다. 그런데도 복수의 비용을 투자하면서 인프라를 이중화해야 하는 이유는 무엇일까?
인프라가 이중화되어 있다면 특정 지점에 문제가 발생하더라도 이중화된 인프라를 이용해 서비스할 수 있다. 특정 인프라의 장애 상황에서도 서비스는 가능하므로 서비스의 연속성이 보장된다.
액티브-액티브로 이중화를 구성할 경우, 인프라에서 서비스 요청을 동시 처리할 수 있으므로 처리 가능한 전체 용량이 증가한다. 이중화된 인프라는 장비 간 네트워크 연결이나 회선의 대역폭이 증가한다. 하지만 이렇게 증가된 인프라 용량을 기준으로 서비스를 수용하면 특정 지점에 장애가 발생했을 때, 인프라 용량이 절반으로 떨어지므로 정상적인 서비스가 불가능한다.

LACP

LACP를 사용하면 두 개 이상의 물리 인터페이스로 구성된 논리 인터페이스를 이용해 모든 물리 인터페이스를 액티브 상태로 사용한다. 이것을 통해 스위치와 스위치 또는 스위치와 서버 간 네트워크 대역폭이 물리 인터페이스 수량만큼 확장된다. 또한, 논리 인터페이스를 구성하는 물리 인터페이스 중 일부에서 문제가 발생하더라도 나머지 물리 인터페이스로 서비스를 유지해준다. 액티브-액티브 상태이므로 인터페이스 절체로 인한 지연 없이 서비스를 제공한다.
LACP를 구성할 때 유의사항은 LACP는 액티브-액티브 구조이므로 LACP로 구성하는 논리 인터페이스의 대역폭을 서비스에 필요한 전체 트래픽 기준으로 서비스 트래픽을 산정하면 안된다. 또한, LACP를 구성할 때는 물리 인터페이스들의 속도가 동일해야 한다. 즉, 1G 인터페이스는 1G 인터페이스 간에만 LACP가 구성되고 1G와 10G처럼 서로 다른 인터페이스로 LACP를 구성할 수 없다.

LACP 동작 방식

LACP를 통해 장비 간 논리 인터페이스를 구성하기 위해 LACPDU(LACP Data Unit)라는 프레임을 사용한다. LACPDU에는 LACP를 구성하기 위한 출발지 주소, 목적지 주소, 타입, 서브 타입, 버전 정보 등을 포함해 매초마다 주고받는다.
LACP가 연결되려면 LACPDU를 주고받는 장비가 한 장비여야 한다. 즉, LACP를 구성하는 두 개 이상의 물리 인터페이스가 서로 다른 장비에 연결되어 있으면 LACP를 통한 링크 이중화 구성을 할 수 없다. 따라서 LACP 구성은 장비 간 1:1 구성에서만 가능하다.
LACP는 두 장비 간 LACPDU 패킷을 주고받으면서 구성되는데 한쪽 장비에서만 LACP를 설정하면 어떻게 될까? LACP 논리 인터페이스를 구성하려면 LACPDU 패킷을 주고받아야 하는데 이 때 LACP 설정이 있는 장비에서만 LACPDU를 상대방 장비로 보낼 수 있다. 반대편 장비에서는 LACPDU를 수신하지만 LACP 설정이 없어 LACPDU를 보내지 않고 수신한 LACPDU에 대한 응답도 보내지 않아 결국 LACP 구성이 되지 않는다.
LACP를 설정할 때는 다음 두 개 모드가 있다.
모드동작
액티브LACPDU를 먼저 송신하고 상대방이 LACP로 구성된 경우, LACP를 구성
패시브LACPDU를 송신하지 않지만 LACPDU를 수신받으면 응답해 LACP를 구성
보통 액티브 옵션을 사용하므로 LACPDU를 상대방 장비에 보내거나 받는다. 패시브 옵션인 경우에는 LACPDU를 먼저 보내지 않지만 상대방이 보내온 LACPDU에 대한 응답을 통해 LACP가 구성된다. 즉, LACP를 구성한 모든 장비에서 LACPDU를 보내는 것은 아니지만 LACPDU를 받기를 기다리고 있고 단방향이라도 LACPDU를 받아 정상적인 LACPDU를 교환하면 LACP가 구성된다.
다만 양 단 장비 모두 패시브로 설정마현 LACPDU를 아무도 먼저 보내지 않으므로 정상적으로 LACP 연결이 되지 않는다.

MC-LAG

LACP를 구성할 때는 LACPDU를 주고 받는 장비 상호 간 구성이 1:1이어야 한다. 더 명확히 말하면 LACP를 구성할 때, MAC 주소가 1:1이어야 한다. 그래서 서버에서 본딩이나 티밍과 같은 이중화 구성을 할 때, 각 네트워크 카드별로 물리 MAC 주소를 따로 사용하지 않고 두 개의 물리 MAC 주소 중 하나를 Primary MAC 주소로 사용한다. 즉, 여러 개의 물리 인터페이스를 쓰더라도 하나의 MAC 주소를 사용해 이 조건을 만족한다.
서버에서 인터페이스를 두 개 이상 구성하더라도 상단 스위치가 한 대로 구성된 경우에는 상단 스위치에 장애가 발생하면 서버는 통신이 불가능해진다. SPoF 구성이기 때문이다. SPoF 구성을 피하려고 서버의 인터페이스를 서로 다른 스위치로 연결한다. 서로 다른 스위치로 이중화 구성을 하면 두 스위치 간 MAC 주소가 달라 LACP를 사용할 수 없다. 따라서 서버에서도 본딩이나 티밍 모드를 액티브-스탠바이로 구성해 사용한다.
스위치에서도 서버 이중화 구성처럼 서로 다른 스위치 간의 단일 MAC 주소를 사용해 액티브-액티브 형태의 이중화 구성을 할 수 있을까?

MC-LAG 동작 방식

MC-LAG의 몇 가지 구성 요소를 살펴보자.
  • 피어(Peer) 장비
    MC-LAG을 구성하는 장비를 피어(Peer) 장비라고 한다.
  • MC-LAG 도메인(Domain)
    두 Peer 장비를 하나의 논리 장비로 구성하기 위한 영역 ID이다. Peer 장비는 이 영역 ID를 통해 상대방 장비가 Peer를 맺으련는 장비인지 판단한다.
  • 피어 링크(Peer-Link)
    MC-LAG을 구성하는 두 Peer 장비 간의 데이터 트래픽을 전송하는 인터링크인다.
  • 아래의 그림은 MC-LAG의 구성 요소를 나타낸 것이다. 피어 장비 1과 2는 피어 링크를 통해 연결되어 있고 각 피어 장비는 하나의 MC-LAG 도메인으로 묶인다.
    MC-LAG을 구성하는 방법을 개념적으로 알아보자.
    MC-LAG을 구성하려면 피어들을 하나의 도메인으로 구성해야 한다. 각 피어에는 동일한 도메인 ID 값을 설정한다. 피어는 피어 간 데이터 트래픽을 전송하기 위한 피어 링크를 구성한다. 피어 링크는 다양한 네트워크가 통신할 수 있는 경로이므로 보통 트렁크(Trunk)로 구성한다.
    아래의 그림은 피어 링크를 이용한 제어 패킷 전송과 별도 인터페이스로 제어 패킷 전송을 그림으로 표현한 것이다.
    피어 링크를 이용할 경우, 각 피어의 VLAN 인터페이스의 IP를 설정하고 이 IP를 이용해 통신할 수 있다. 별도의 데이터 트래픽을 위한 인터페이스를 사용하면 해당 인터페이스를 L3 인터페이스로 구성해 이 인터페이스의 IP를 이용해 통신할 수 있다.
    여기까지 기본 MC-LAG에 대한 설정이며 정리하면 다음과 같다.
  • 피어에 동일한 도메인 ID 설정
  • 피어 간의 데이터 트래픽 전송을 위한 피어 링크 설정
  • 피어 간의 제어 패킷 전송을 위해 피어끼리 통신 가능한 IP 설정
  • MC-LAG 설정을 마치면 MC-LAG을 구성하는 두 피어 장비는 MC-LAG을 맺기 위한 제어 패킷을 주고받는다.
    <MC-LAG 구성을 위한 패킷을 스위치 간에 전송>
    MC-LAG 제어 패킷을 통해 MC-LAG을 구성하기 위한 협상이 정상적으로 완료되면 두 대의 장비는 하나의 MC-LAG 도메인으로 묶이고 인터페이스 이중화 구성에 사용할 가상 MAC 주소를 피어 장비 간 동일하게 생성한다.
    이렇게 두 피어 간 MC-LAG 구성을 마치면 MC-LAG 피어 장비들은 다늘 장비(서버나 스위치)와 LACP을 구성할 수 있다.
    MC-LAG이 설정된 스위치가 LACP를 통한 이중화 구성을 어떻게 하는지에 대한 동작 방식을 알아보자.
    MC-LAG로 구성된 스위치가 LACP 구성을 위한 가상 MAC CC로 LACPDU를 전송한다.
    두 장비 간에 LACP를 구성할 때는 각 장비의 MAC 주소가 출발지의 MAC 주소가 된다.하지만 MC-LAG을 이용해 LACP를 구성할 때는 각 장비의 개별 MAC 주소가 아닌 MC-LAG을 구성할 때 생성된 가성 MAC 주소를 사용해 LACPDU를 전송한다. 이렇게 장비의 개별 MAC 주소가 아닌 가상의 MAC 주소를 사용하므로 MC-LAG과 연결된 장비는 MC-LAG 피어들이 동일한 MAC 주소로 보이게 되고 서로 다른 장비로도 LACP를 통한 이중화 구성을 할 수 있다.

    MC-LAG을 이용한 디자인

    MC-LAG을 이용하면 LACP를 구성할 때, 서로 다른 장비를 하나의 장비처럼 인식시킬 수 있어 서로 다른 스위치로 서버를 액티으-액티브로 구성하여 루프나 STP에 의한 차단이 없는 네트워크 구조를 만들 수 있다. MC-LAG을 이용한 디자인 3가지를 살펴보자
    1. MC-LAG을 이용해 서버를 연결하면 스위치를 물리적으로 이중화하면서 액티브-액티브 구성으로 연결할 수 있다.
    2. 스위치 간의 MC-LAG을 이용하면 루프 구조가 사라지므로 STP에 의한 차단 포트 없이 모든 포트를 사용할 수 있다.
    3. 스위치 간의 MC-LAG을 구성하는 또 다른 경우로, 상 ' 하단을 모두 MC-LAG으로 구성하는 디자인도 만들 수 있다.
    <MC-LAG을 양쪽에 모두 적용해 스위치 4대를 1:1 구조로 구성할 수 있다.>

    게이트웨이 이중화

    게이트웨이 이중화란?

    특정 호스트가 동일한 서브넷에 있는 내부 네트워크와 통신할 때는 ARP(Address Resolution Protocol)를 직접 브로드캐스트해 출발지와 목적지가 직접 통신한다. 이때 4계층 장비인 라우터의 도움 없이 직접 통신하므로 실무에서는 이것을 L2 통신이라고 부르기도 한다.
    목적지가 출발지 호스트의 서브넷에 포함되지 않는 외부 네트워크인 경우, 목적지와 통신하기 위해 게이트웨이를 통해야 하는데 이런 통신을 L3 통신이라고 한다. 따라서 호스트에 게이트웨이 설정이 되어 있지 않거나 잘못 설정된 경우에는 내부 네트워크 간에만 통신이 되고 외부 네트워크와는 통신이 되지 않는다.
    게이트웨이 장비에 장애가 발생하면 어떻게 될까? 장애가 발생한 게이트웨이를 바라보는 하단의 호스트들은 게이트웨이와 통신할 수 없으므로 외부 네트워크와 통신할 수 없게 된다.
    왼쪽: 10.1.1.0/24 네트워크의 게이트웨이가 10.1.1.1이라고 할 때, 게이트웨이의 하단 호스트들은 10.1.1.1 장비를 통해 외부 네트워크로 통신한다. 이때 10.1.1.1의 IP 주소를 가진 게이트웨이 장비에 장애가 발생할 경우, 하단 호스트는 게이트웨이와 통신할 수 없으므로 외부 네트워크와 통신할 수 없다.
    가운데: 게이트웨이 장비 자체의 장애가 아닌 인터페이스, SFP와 같은 광 모듈이나 케이블에 문제가 발생하더라도 게이트웨이와의 통신이 끊기므로 외부 네트워크와 통신할 수 없다.
    오른쪽: 게이트웨이와 연결된 하단 스위치의 장애와 같이 게이트웨이 장비로 가는 경로상 문제가 발생하면 다른 사례와 마찬가지로 외부 네트워크와 통신할 수 없다.
    위의 3가지 장애 상황 모두 10.1.1.1 IP를 가진 장비와 동일하게 게이트웨이 역할을 수행할 수 있도록 외부 네트워크와 연결된 10.1.1.2 장비가 있음에도 불구하고 하단 호스트는 하나의 게이트웨이만 바라보므로 외부 네트워크 통신이 두절된다. 즉, 실제로 물리적으로는 외부 네트워크와 통신할 수 있는 또 다른 경로가 이중화되어 있지만 그 경로를 사용할 수 없어 통신이 두절되는 것이다.
    그럼 게이트웨이 역할을 하는 두 대의 장비가 하나의 IP 주소를 가지면 어떻게 될까? 이런 경우에 사용하는 프로토콜이 바로 FHRP(First Hop Redundancy Protocol)라는 게이트웨이 이중화 프로토콜이다.
    게이트웨이 이중화 프로토콜을 사용하면 두 라우터는 실제 IP 외에 추가로 가상 IP 주소와 가상 IP에 대한 MAC 주소를 동일하게 같는다. 게이트웨이 이중화 프로토콜의 가상 IP는 그룹 내에서 우선순위가 높은 장비가 Active 상태로 유지하고 ARP 요청에 응답한다. 하단 호스트들이 사용할 게이트웨이 IP 주소가 이 가상 IP 주소이다.
    게이트웨이 이중화 프로토콜 그불 장비 중 가상 IP에 대한 Active 상태를 가진 장비에 문제가 발생하면 Stand-by 상태인 장비가 Stand-by에서 Active 상태로 변경된다. 호스트 입장에서는 게이트웨이 IP 주소를 가진 장비가 한 대 이상으로 구성되어 있어 Active 상태의 게이트웨이 장비에 장애가 발생하더라도 게이트웨이와의 통신이 끊기지 않으므로 외부 네트워크와 지속적으로 통신을 할 수 있다.

    FHRP

    FHRP는 외부 네트워크와 통신하기 위해 사용되는 게이트웨이 장비를 두 대 이상의 장비로 구성할 수 있는 프로토콜이다. FHRP를 이용해 FHRP 그룹 내의 장비가 동일한 가상 IP를 갖도록 설정하고 FHRP를 설정할 때는 우선순위 값을 이용해 어떤 장비가 가상 IP 주소에 대한 액티브 역할을 할 것인지 결정한다. FHRP 그룹의 장비는 물리적으로 다른 장비이지만 가상 IP와 가상 IP MAC 주소도 동일하다.
    FHRP의 동작 방식을 알아보자. FHRP를 구성한 게이트웨이 장비는 각 장비가 동일 그룹으로 인식하기 위해 같은 그룹 ID를 갖도록 설정한다. 또한, 게이트웨이 주소로 사용할 동일한 가상 IP도 각 장비에 설정한다. 그룹 ID 값은 이 가상 IP에 대한 MAC 주소를 생성하는 데 사용되므로 FHRP 장비는 동일한 가상 IP와 가상 MAC 주소를 갖게 된다. 아래의 그림은 게이트웨이 이중화 시에 대한 ARP 요청과 응답을 나타낸다.
    FHRP 그룹의 액티브 장비에 장애가 발생하면 스탠바이 장비는 액티브 장비가 비정상임을 확인 후 가상 IP 주소에 대한 액티브 역할을 가져온다. 아래의 그림은 장비에 장애 발생 시 액티브 역할을 스탠바이로 자동으로 전환되는 그림이다.
    또한, 장비의 외부 인터페이스 구간의 장애인 경우에도 액티브로 전환할 수 있다.
    FHRP 기술에 대한 표준 프로토콜은 VRRP(Virtual Router Redundancy Protocol)이다. VRRP는 표준 프로토콜이므로 게이트웨이 이중화 기술로서 거의 모든 벤더 장비가 VRRP 기능을 지원한다. 이번에는 게이트웨이 이중화를 구현한 표준 프로토콜인 VRRP의 동작 방식과 설정 예제를 통해 게이트웨이 이중화의 동작 방식을 더 자세히 알아보자.
    다음 그림은 스위치 A와 스위치 B를 이용해 VRRP 설정이 된 장비 구성도이다. VRRP 그룹을 만들기 위해서는 VRID 값을 사용한는데 동일한 VRID를 설정한 장비가 하나의 VRRP 그룹으로 구성된다.
    위의 그림에서 스위치 A와 스위치 B는 동일한 VRID 10을 설정해 두 개의 장비를 하나의 VRRP 그룹으로 묶었다. 스위치 A는 VRRP 그룹 10에 대한 우선순위 값을 110으로 설정하고 스위치 B는 우선순위 값을 별도로 설정하지 않았다. 별도로 설정하지 않으면 우선순위의 기본값은 100으로 설정된다.
    VRRP 설정이 끝나면 VRRP의 마스터를 선출하기 위해 VRRP를 설정한 장비 간에 Hello 패킷을 주고받는다. Hello 패킷은 기본 1초마다 전달하고 Hello 패킷에 있는 우선순위를 비교해 액티브가 될 마스터 장비를 설정한다.
    만약 Hello 패킷을 3회 이상 수신하지 못하면 상대방은 비정상으로 간주해 자신이 마스터 장비가 된다.
    스위치 A의 우선순위는 110으로 스위치 B보다 높으므로 스위치 A가 VRRP의 마스터(액티브) 장비로 선출되고 마스터로 선출된 스위치 A는 VRRP에서 선언한 가상 IP와 가상 MAC 주소를 갖게 된다. ARP 테이블과 MAC 테이블을 확인해보면 해당 가상 IP와 가상 MAC이 스위치 A에서 광고되는 것을 확인할 수 있다. 하단 장비는 가상 IP를 게이트웨이로 설정하고 스위치 A 장비가 게이트웨이가 된다.
    스위치 A의 인터페이스가 죽거나 스위치 A 장비 자체에 장애가 발생하면 스위치 B가 마스터 역할을 가져가고 이제 가상 IP와 가상 MAC 주소를 스위치 B에서 광고해 MAC 테이블이 갱신된다. 가상 IP와 가상 MAC 주소가 변경된 것은 아니므로 ARP 테이블은 변하지 않는다.
    이처럼 VRRP를 이용해 가상 IP와 가상 MAC을 생성해 게이트웨이로 사용함으로써 게이트웨이 장비에 문제가 발생하더라도 하단 장비들이 서비스에 문제가 없도록 게이트웨이 이중화를 구현할 수 있다.

    올 액티브 게이트웨이 이중화

    앞에서 살펴본 게이트웨이 이중화에서 게이트웨이로 사용되는 가상 IP 주소는 이중화된 장비에서 액티브-스탠바이로 동작한다. 사용자가 가상 IP 주소(게이트웨이 주소)에 대해 ARP 요청을 하면 액티브 장비에서 응답하고 스탠바이 장비에서는 가상 IP에 대한 MAC 주소의 테이블을 액티브 장비와 연결된 인터페이스로 학습한다.
    이때 다음과 같이 게이트웨이 외부로 가기 위한 경로가 스탠바이더라도 액티브 장비를 통해서만 외부로 나갈 수 있다. 아래 그림은 STP 구조에서 게이트웨이를 통한 외부 통신의 흐름이다.
    전통적인 기존 네티워크 구조가 아닌 MC-LAG을 이용해 다음과 같이 일반적인 게이트웨이 이중화를 구성할 때도 액티브 장비를 통해야 하므로 트래픽이 우회해 통신하기도 한다.
    물론 요건에 따라 외부로 나가는 경로에 대한 이중화를 액티브-스탠바이로 사용할 때는 문제가 없지만 그런 요건이 없다면 피어 장비 모두 게이트웨이 역할을 할 수 있음에도 불구하고 트래픽이 불필요하게 우회하므로 비효율적이다.
    그래서 MC-LAG 기술을 사용할 때는 게이트웨이 이중화 가상 IP의 MAC 주소를 액티브 장비와 스탠바이 장비에서 모두 사용할 수 있도록 해 게이트웨이를 액티브-액티브 형태로 구성하는 기능을 제공하고 있다.
    게이트웨이를 액티브-액티브로 구성하면 액티브 장비로 들어오는 트래픽은 물론 스탠바이 장비로 들어오는 트래픽도 스탠바이 장비에서 직접 처리해 트래픽 흐름을 최적화할 수 있다.
    출처
    IT 엔지니어를 위한 네트워크 입문을 정리한 포스팅입니다.

    0개의 댓글