PowerShell 및 GUI로 NIC 팀 핑 마스터하기

일하면서 핵심 스위치가 다운될 때 서버가 원활하게 사용 가능한 상태를 유지하기를 원하십니까? 특정 공급업체의 특정 드라이버에 의존하지 않고 서버가 여러 VLAN에 액세스하도록 하고 싶으십니까? 환경에서 물리적 및 가상 호스트의 네트워킹 구성을 간소화하고 싶으십니까? 이러한 질문에 대해 예라고 답했다면 이 기사는 여러분을 위한 것입니다. NIC 팀링을 사용하여 이러한 기능을 수행할 수 있습니다.

NIC 팀링은 기계의 장애 허용성을 향상시킬 수 있고 네트워크 리소스를 더 잘 활용할 수 있으며 기계에서 사용할 VLAN을 구성하고 네트워킹 구성을 간소화할 수 있습니다.

이 기사에서는 NIC 팀링이 무엇인지, 가상 머신에서 NIC 팀링을 사용할 때 고려해야 할 사항 및 조직에서 NIC 팀링을 배포하는 방법에 대해 알아보겠습니다.

전제 조건

NIC 팀링을 이해하려면 Windows 또는 네트워크 관리에 대한 전문 지식이 필요하지는 않지만, 이 기사를 이해하고 적용하기 위해 몇 가지 기술적인 사전 요구 사항과 지식이 필요합니다. 이러한 항목은 다음과 같습니다:

  • 네트워크 작동 방식 이해 (맥 주소, IP 주소, VLAN)
  • 두 개 이상의 네트워크 어댑터를 사용할 수 있는 Windows Server 2016 (또는 2019)에 대한 액세스 – 보이는 대부분은 Windows Server 2016, 2012R2 및 Windows Server 2012에도 동일하게 적용됩니다.

NIC 팀링 이해

물리적 서버에 대한 전통적인 네트워킹 설정에서는 서버에서 여러 네트워크 케이블을 서로 다른 물리적 스위치에 연결하여 장애 허용성을 제공합니다 (하나의 스위치 스택의 일부가 될 수도 있음). 따라서 서버는 항상 여러 개의 IP 주소가 활성화되어 있으며 로드 밸런싱은 존재하지 않습니다.

서버에 NIC 팀을 배치함으로써 여러 물리적 스위치에 대한 연결을 유지하지만 하나의 IP 주소만 사용할 수 있습니다. 로드 밸런싱이 즉시 가능해집니다. 장애 허용성은 DNS 레코드가 시간이 지나거나 업데이트되기를 기다리지 않고 즉시 제공되며 관리가 더욱 간단해집니다.

NIC 팀은 Windows Server에서 NIC를 “팀”으로 그룹화하는 기능입니다. 각 팀은 하나 이상의 팀 멤버 (팀에 속한 NIC)와 하나 이상의 사용 가능한 가상 NIC로 구성됩니다.

팀 멤버는 팀이 스위치와 통신하는 데 사용하는 네트워크 어댑터입니다. 팀 인터페이스는 팀을 만들 때 생성되는 가상 네트워크 어댑터입니다. 팀 인터페이스가 IP 주소를 받기 때문에 어떤 것이 어떤 것인지 기억하기 어려울 수 있습니다.

NIC 팀과 본딩의 차이점은 무엇인가요?

NIC 팀과 NIC 본딩은 동의어입니다.

NIC 팀은 Windows Server 2012부터 모든 버전에서 사용할 수 있습니다. 이 기능은 링크 집계/로드 밸런싱, 장애 조치 및 소프트웨어 정의 네트워킹 (VLAN)에 대한 관리자의 훨씬 더 간단한 솔루션을 제공합니다.

특정 하드웨어 및 공급업체의 특정 솔루션도 있지만, Microsoft의 NIC 팀 구현은 하드웨어 및 공급업체에 중립적인 방식으로 이러한 기능을 제공하기 위해 노력하고 있습니다.

NIC 팀과 브리징의 차이점은 무엇인가요?

NIC 팀을 만들면 동일한 서브넷에 있는 하나 이상의 NIC 어댑터를 포함하는 NIC 인터페이스를 생성할 수 있습니다. NIC 브리징을 사용하면 다른 서브넷에서 NIC 어댑터를 짝지어 두 개의 서브넷 간 통신을 가능하게 할 수 있습니다.

NIC 팀을 구성할 때, 팀 모드, 로드 밸런싱 모드, 대기 어댑터, 그리고 팀 인터페이스 VLAN을 설정합니다. 각 구성 요소에 대한 설명은 아래에서 제공됩니다.

팀 모드

NIC 팀을 생성할 때, 어떤 팀 모드를 사용할지 선택해야 합니다. 팀 모드는 서버와 스위치 간의 트래픽을 여러 링크 사이에서 어떻게 분할할지를 결정합니다. 세 가지 유형의 팀 모드가 있습니다: 스위치 독립, LACP, 그리고 정적입니다.

스위치 독립

스위치 독립 팀은 여러 비스택 스위치에 팀 멤버를 연결할 수 있습니다. 스위치 독립 모드는 연결된 스위치에 대한 구성 변경이 없는 유일한 팀 모드입니다. 이 모드는 수신 데이터를 어떤 인터페이스로 보내야 하는지를 제어하기 위해 MAC 주소만 사용합니다.

스위치 독립 팀 모드를 사용해야 하는 몇 가지 상황이 있습니다. 예를 들면 다음과 같은 경우입니다:

  • 연결된 스위치에 구성 변경을 수행하지 않을 경우
  • 팀 멤버용으로 여러 비스택 스위치를 사용할 경우
  • 가상 머신 내에서 NIC 팀을 생성할 경우 (가상 머신에서 사용 시 고려 사항 섹션에서 자세히 설명됨)

하나의 어댑터를 트래픽에 사용하고 물리적 링크 장애 시에만 대기 어댑터로 전환하려면 스위치 독립적 팀 모드를 사용하고 대기 어댑터를 구성해야합니다.

A standby adapter is not used often because it reduces the total bandwidth that is available for communicating with the server. The default setting is “None (all adapters Active)”.

정적

정적 팀은 NIC 팀에 연결된 스위치 포트를 수동으로 구성해야합니다. 서버와 스위치는 활성 상태인 모든 링크 사이에서 트래픽을 분할합니다.

어느 한쪽의 포트가 다른 장치에 연결되어 있는 경우 기대하지 않은 이 링크로 트래픽이 분할됩니다. 따라서 잘못 연결된 케이블과 같은 오류를 격리하는 데 도움이 되지 않습니다.

스위치가 LACP를 지원하지 않는 경우에만 정적 팀 모드를 사용해야합니다.

LACP 팀은 정적 팀과 유사하지만, 각 활성 케이블이 의도한 LAG에 실제로 연결되어 있는지도 추적합니다. LACP는 기대하는 LAG에 연결되지 않은 링크를 통해 데이터를 보내지 않습니다.

스위치가 NIC 팀에 보내는 데이터를 로드 밸런싱하기 위해 스위치가 NIC 팀을 인식하도록하려면 LACP를 사용해야합니다.

중요: 정적 및 LACP 팀 모드는 호스트를 단일 스위치 또는 단일 스위치 스택에만 연결해야합니다.

로드 밸런싱 모드

로드 밸런싱 모드는 팀이 들어오는 데이터에 대한 인터페이스를 제공하고, 나가는 데이터에 대해 어댑터를 결정하는 방식을 결정합니다. 사용 가능한 옵션은 주소 해시, Hyper-V 포트, 그리고 동적입니다.

“로드 밸런싱 장치”와 달리, 들어오는 트래픽은 팀 구성원이 사용하는 링크 간에 균등하게 분할되지 않습니다.

주소 해시

주소 해시 모드는 소스 및 대상 IP 주소와 포트를 사용하여 효과적인 균형을 팀 구성원 간에 유지하려고 시도합니다. 연결에 포트가 없는 경우, 로드 밸런싱을 결정하기 위해 IP 주소만 사용합니다. 연결에 IP 주소가 없는 경우, MAC 주소를 사용합니다.

NIC 팀을 생성할 때, 팀이 IP+포트, IP만 또는 MAC 주소만 사용하도록 강제할 수 있습니다. IP+포트는 기본값으로 팀 구성원 간에 가장 좋은 균형을 제공합니다. IP만 또는 MAC 주소만 사용하려면, PowerShell을 사용하여 NIC 팀을 생성해야 합니다.

주소 해시 로드 밸런싱 모드는 팀 구성원 간에 아웃바운드 트래픽을 균등하게 분할하는 일을 잘 수행하지만, 과도하거나 미사용된 팀 구성원에 대해 적응할 수 없습니다. 또한, 모든 인바운드 트래픽은 주 팀 인터페이스의 MAC 주소를 사용합니다. 그러나 이는 스위치 독립 팀 구성 모드를 사용하는 경우에만 단일 링크로 제한됩니다.

가상 머신 내부에서 팀을 생성할 때는 반드시 주소 해시를 사용해야 합니다.

Hyper-V 포트

Hyper-V 포트 모드는 Hyper-V 가상 머신 호스트에서만 사용되도록 되어 있습니다. 이 모드는 가상 머신 호스트 상의 각 머신에 MAC 주소를 할당한 다음, 각 MAC 주소에 팀 구성원을 할당합니다. 이로써 특정 가상 머신은 정상 작동 시 예측 가능한 팀 구성원을 갖게 됩니다.

각 VM에 대한 예측 가능한 팀 구성원은 VM의 대역폭이 해당 VM이 작동하는 단일 링크의 최대로 제한됨을 의미합니다. Hyper-V 호스트에 VM이 적게 있는 경우, Hyper-V 포트 로드 밸런싱 모드는 균형 잡힌 성능을 보장하지 못할 수 있습니다.

일반적으로 Hyper-V 포트 모드를 사용할 필요는 없지만, 각 VM이 항상 동일한 링크를 사용해야 하는 경우 유용할 수 있습니다.

동적

동적 모드주소 해시Hyper-V 포트 모드의 최상의 기능을 사용하여 외부 및 내부 네트워크 트래픽을 균형있게 분산시킵니다. Hyper-V와 마찬가지로, 들어오는 트래픽은 팀 구성원을 다른 MAC 주소에 할당하여 분할됩니다. 주소 해시와 마찬가지로, 외부 트래픽은 IP/포트에서 유래된 조합 해시에 의해 분할됩니다. 이러한 혼합은 위의 두 방법보다 더 나은 균형을 제공합니다.

동적 균형 모드는 한 가지 중요한 개선 사항을 가지고 있습니다: 트래픽의 동적 모니터링. 동적 모드 알고리즘이 특정 팀 구성원이 과도하게 또는 미흡하게 사용되고 있다고 판단하면, 필요에 따라 외부 트래픽을 다른 팀 구성원으로 재분배합니다.

TCP 스트림은 자연스러운 흐름을 가지고 있어 TCP에서 향후 트래픽 양/중단을 예측할 수 있게 합니다. Microsoft는 이를 flowlets라고 부릅니다. 동적 로드 밸런싱 모드는 또한 flowlets을 통해 팀 구성원이 지나치게 또는 미달되는 상태가 될 것을 예상하고, 외부 트래픽을 재조정하여 준비할 수 있습니다.

동적 모드는 대부분의 경우 가장 좋은 로드 밸런싱 옵션입니다.

팀 인터페이스 VLAN

팀을 생성할 때, 기본적으로 단일 팀 인터페이스가 생성됩니다. 팀 인터페이스에는 인터페이스의 트래픽을 특정 VLAN으로 태그하는 VLAN 설정이 있습니다. 팀 인터페이스 VLAN을 태그된 VLAN으로 설정하는 것은 일반적으로 NIC 팀이 사용하는 팀 구성원이 트렁크 모드를 사용할 때에만 수행됩니다.

팀을 생성한 후, 다른 VLAN에 대해 추가적인 팀 인터페이스를 생성할 수 있습니다.

경고: Microsoft는 VM 내부의 인터페이스의 VLAN을 설정하지 않는 것을 권장합니다. 대신, Hyper-V 스위치의 고급 옵션 중 “VLAN ID”를 사용하여 VM의 VLAN을 정의하십시오.

가상 머신에서 NIC 팀 구성

VM에서 NIC 팀을 설정하는 것에는 일부 제한 사항이 있습니다. Microsoft는 특히 “팀의 팀” (호스트 수준의 팀 및 VM 수준의 팀)을 사용하면 매우 예측할 수 없고 연결 손실을 발생시킬 수 있다고 명시하고 있습니다.

전통적으로 VM에 대한 오류 허용성을 제공하기 위해서는 VM이 여러 개의 외부 가상 스위치에 연결되어야 했습니다. 어떤 VM이 어떤 가상 스위치를 공유할지 계획하여 혼잡하지 않도록 해야 했습니다. 로드 밸런싱 문제는 호스트의 다른 VM에서 혼잡으로 인한 혼잡도 가능성으로 더 복잡해졌습니다.

오늘날에는 VM 호스트에 단일 네트워크 어댑터를 가진 NIC 팀을 배치할 수 있습니다. 모든 VM은 물리 포트나 스위치 장애로부터 완전한 오류 허용성을 얻게 됩니다. 모든 VM의 트래픽은 팀 구성원 간에 균형잡힌 방식으로 분산되어 전체적인 처리량과 혼잡 처리가 훨씬 개선됩니다. 이제 구성은 다음과 같을 수 있습니다:

A NIC Team topology

VM에서 NIC 팀을 사용하는 경우, 네트워킹 스택의 CPU 오버헤드를 줄이기 위해 SR-IOV를 활성화하는 데 사용될 수도 있습니다. SR-IOV가 작동하려면 BIOS 지원과 NIC 지원이 필요합니다.

요구 사항

VM 내에서 NIC 팀을 사용하기 위한 “지원되는 구성”으로 포함되는 이 요구 사항:

  1. VM에서 여러 어댑터를 사용해야 합니다.
  2. 어댑터는 두 개의 “외부” 유형 가상 스위치에 연결되어야 합니다.
  3. 물리 스위치에 연결하는 경우, 스위치는 동일한 L2 서브넷에 있어야 합니다.
  4. VM NIC 팀 모드는 “스위치 독립”으로 설정되어야 하며, 로드 밸런싱 모드는 *주소 해시*로 설정되어야 합니다.

Hyper-V에서는 각 네트워크 어댑터의 고급 기능 탭에서 VM에 대한 NIC 팀 구성을 활성화해야합니다. 아래 예시에서는이 설정이 어떻게 보이는지 볼 수 있습니다.

NIC Teaming Hyper-V option

성능 최대화

NIC 팀 구성은 기본적으로 좋은 성능을 제공하지만, 성능 향상에 중점을 둘 필요가있는 다양한 시나리오가 있습니다. 이러한 시나리오의 구체적인 내용은이 문서의 범위를 벗어나지만 성능 향상에 대해 자세히 알고 싶다면 다음 용어에 주목하십시오:

  • 원격 직접 메모리 액세스 (RDMA)
  • 스위치 내장 팀 구성 (SET)
  • 수신 측 스케일링 (RSS)
  • 단일 루트 I/O 가상화 (SR-IOV)

일반적으로이 추가 설정은 네트워킹 스택과 연결 간의 일부 CPU 오버헤드와 지연 시간을 줄입니다. 소프트웨어 및 하드웨어 기술에 대한 자세한 내용은 소프트웨어 및 하드웨어 기술 설명SET을 사용한 RDMA를 통한 더 높은 성능 문서에서 자세히 알아볼 수 있습니다.

Windows Server에서 NIC 팀 생성

NIC 팀 구성 작업을 간소화하고 네트워킹을 단순화하기 위한 지식과 비전을 갖춘 상태에서 이제 NIC 팀을 생성할 준비가되었습니다!

이 데모에서는 데모 환경 제약으로 인해 NIC 팀이 VM에서 생성됩니다. 물리 서버에서 NIC 팀을 설정하는 방법은 동일하지만 VM 특정 단계가 필요한 경우 해당 단계를 호출합니다.

NIC 팀이 활성화되었는지 확인하는 방법은 무엇인가요?

NIC 팀은 Windows Server 2012(Server 2012, 2012R2, 2016 및 2019)의 모든 버전에서 활성화되어 있습니다.

GUI를 통해 NIC 팀 배포

먼저, Windows Server 기계에서 Server Manager를 실행합니다. NIC 팀을 구성하려는 기계에 연결되어 있는지 확인합니다.

  1. 첫째, NIC 팀을 생성할 서버 이름을 마우스 오른쪽 버튼으로 클릭하고 NIC 팀 구성을 선택합니다.
Configure NIC Teaming option in Server Manager

2.  어댑터 및 인터페이스 패널에서 새로운 팀에 추가할 NIC를 선택합니다. 그런 다음 선택한 어댑터를 마우스 오른쪽 버튼으로 클릭하고 새로운 팀에 추가를 선택합니다.

Add to New Team option in Server Manager

참고: NIC 팀을 하나 이상의 어댑터(최대 32개)와 하나 이상의 팀 인터페이스의 조합으로 구성할 수 있습니다.

3.  설명적인 팀 이름을 입력하고 필요한 경우 추가 속성을 구성한 다음 확인을 클릭하여 팀을 생성합니다.

이 예에서는 NIC 팀이 VM에 설정되고 있습니다. 결과적으로 팀 모드 또는 로드 밸런싱 모드는 사용할 수 없습니다. 이 데모가 물리 서버에서 진행되는 경우에는 스위치 독립 또는 LAG를 사용하는 경우 스위치 독립 또는 LACP를 사용할 수 있습니다.

New Team dialog box

이제 NIC 팀이 Windows Server에 생성되어야 합니다.

NIC 팀에 더 많은 NIC 또는 인터페이스 추가

만들고 나면, 동일한 NIC 팀 윈도우에서 구성된 팀에 NIC를 추가할 수 있습니다. 이를 위해 사용 가능한 NIC에서 마우스 오른쪽 단추를 클릭하고 <팀 이름>에 추가를 선택하십시오.

Add to Team “Demo” option

또한 아래와 같이 팀 인터페이스 탭을 선택한 다음 TASKS —> 인터페이스 추가를 클릭하여 팀에 더 많은 인터페이스를 추가할 수 있습니다.

Add Interface option

입력이 나타나면 아래와 같이 사용할 VLAN과 선택적으로 이름을 입력하십시오.

New Team interface dialog box

Windows PowerShell을 통해 NIC 팀 배포

이제 GUI를 사용하여 NIC 팀을 설정하는 방법을 알았으므로 PowerShell을 통해 이 작업을 수행하는 방법을 살펴 보겠습니다.

NIC 이름 찾기

먼저, 어떤 NIC를 팀에 추가할지 결정해야 합니다. 구체적으로 NIC 이름을 찾아야 합니다.

NIC 이름을 찾으려면 Get-Adapter cmdlet을 사용하십시오. 이 cmdlet을 실행하고 아래와 같은 옵션을 확인하십시오.

Get-Adapter PowerShell cmdlet

이름을 기록한 후 PowerShell로 팀을 만들 수 있습니다! 이 데모에서는 새 NIC 팀에 이더넷 3과 4의 NIC를 사용합니다.

NIC 팀 생성

이제 어댑터 이름을 확보했으므로 실행할 cmdlet(New-NetLbfoTeam)이 하나만 남았습니다. 아래에서 New-NetLbfoTeam cmdlet을 실행하는 예제와 결과를 확인할 수 있습니다.

TeamMembers 매개변수에는 이전에 수집한 NIC의 이름을 사용합니다.

이 예제에서 TeamingModeSwitchIndependent로 설정됩니다. 스위치 포트를 LAG로 구성하는 경우 LACP 값을 사용하는 것이 좋습니다. 스위치에서 LAG를 사용하지 않는 경우에는 SwitchIndependent를 선택하는 것이 좋습니다.

LoadBalancingAlgorithm 매개변수 값으로 Dynamic을 사용하는 이유는 이 모드가 팀 멤버 간에 가장 균일한 로드 밸런싱을 제공하기 때문입니다.

New-NetLbfoTeam -TeamMembers <NIC Names> -Name "<Desciptive Name>" -TeamingMode SwitchIndependent -LoadBalancingAlgorithm TransportPorts
Using the New-NetLbfoTeam PowerShell cmdlet

작업을 완료하면 Get-NetAdapter에서 어댑터 목록에 새로운 가상 NIC이 표시됩니다.

New virtual NIC created

가상 머신의 NIC 팀 참고 사항:

– ‘SwitchIndependent’ TeamingMode를 사용해야 합니다.
– LoadBalancingAlgorithm에는 Address Hash 유형 중 하나를 사용해야 합니다 (TransportPorts).
– TransportPorts 대신에 물리 서버에서는 동적 로드 밸런싱이 사용됩니다.*

NIC 팀에 더 많은 NIC 또는 인터페이스 추가하기

NIC 팀을 빌드한 후에는 GUI와 마찬가지로 NIC 및 인터페이스를 추가할 수 있습니다. 팀에 더 많은 NIC를 추가하려면 Add-NetLbfoTeamMember cmdlet을 사용하십시오.*.*

Add-NetLbfoTeamMember -Name NIC1 -Team Team1

Add-NetLbfoteamNIC cmdlet을 사용하여 더 많은 팀 인터페이스를 추가할 수도 있습니다.

Add-NetLbfoTeamNIC -Team Team1 -VlanID 42

요약

이제 NIC 팀을 배우고, 성능/VM 사용/네트워킹 간소화와의 관련성, 그리고 GUI 또는 PowerShell을 통한 배포 방법을 알게 되었습니다.

Source:
https://adamtheautomator.com/nic-teaming/