Partager via


[Dongclee의 2011년 10월 Short Tip 포스팅] Hyper-V 상의 VM들을 사용하여 Windows NLB 구성에 관한 오해와 진실

이동철입니다.

낮에는 약간 더운 감이 아직 남아 있는 10월입니다. 이러다가 갑자기 추운 날씨가 도래하겠죠?

오늘은 제 포스팅 중에서 처음으로 첨부 파일이 없는 포스팅이 될 것 같네요… 제가 게을러져서 그렇겠죠… 그래도 매달 한 건씩 포스팅하겠다는 생각이 걍 하나 올려 봅니다

제가 최근에 고객사로부터 ISA 서버의 VPN에 대한 NLB 구성에 대한 문의를 받았습니다. 그래서, 저의 테스트 Windows Server 2008 Hyper-V 상에서 Windows Server 2003 Virtual Machine 2대를 사용하여 NLB구성 테스트를 진행했습니다. 그런데, 가상 IP 및 실제 VM들의 서버 IP상의 통신이 제대로 되지 않는 현상을 발견했습니다. 이러한 오류에 대해서 제가 자료를 찾아본 결과 통신이 안 되는 현상이 당연함을 알게되었구요,, 그리고 이를 해결하기 위한 방법 또는 workaround가 Windows Server 2008 Hyper-V Host 와 Window Server 2008 R2 Hyper-V Host 에서 각각 달리 존재함을 확인했습니다.

이미 이러한 사실들을 다 알고 계신 분들도 있을 것으로 생각되지만, 제가 찾아본 자료를 간단하게 정리해 드리고자 합니다.

 

먼저, Window NLB의 통신 방식 중에서 Unicast 와 Multicast 방식의 차이점을 이해해야 합니다. 차이점을 잘 설명하는 자료를 아래와 같이 소개합니다.

  • Load Balancing Exchange 2007 Client Access Servers using Windows Network Load-Balancing Technology – Part 1: Overview of Windows NLB Clusters (https://www.msexchange.org/articles_tutorials/exchange-server-2007/high-availability-recovery/load-balancing-exchange-2007-client-access-servers-windows-network-technology-part1.html)
    • Unicast Mode : With the WNLB cluster configured in unicast mode, the MAC address of each server’s network adapter will be changed to a virtual cluster MAC address, which is the MAC address that will be used by all servers in the Windows NLB cluster. When unicast mode is enabled, clients can only connect to the servers using the cluster MAC address. (즉, NLB에서 unicast 방식이 활성화되었을 경우, NLB에 참여한 각 호스트의 MAC 주소는 NLB 구성시 자동으로 할당되는 Cluster Virtual IP의 MAC 주소로 변경됩니다. 그러므로, NLB에 접근하는 클라이언트들은 오로지 Cluster MAC 주소를 사용하여 서버에 연결할 수 있습니다.)
    • Multicast mode : With the Windows NLB cluster configured in multicast mode, a multicast MAC address is added to the cluster adapter of each server in the cluster. Note that I write “is added”, as each server will retain their original MAC addresses. (반면에, NLB에서 multicast 방식이 활성화되었을 경우, NLB에 참여한 각 호스트의 MAC 주소는 NLB 구성시 자동으로 할당되는 Cluster Virtual IP의 MAC 주소로 변경되지 않고, 자신의 원래 MAC 주소를 유지하면서, 추가적으로 Cluster Virtual IP에 할당된 MAC 주소를 유지합니다. 즉, NLB 각 호스트는 2개의 MAC 주소를 유지합니다.)

 

위와 같은 NLB의 동작 방식의 특성 때문에, Windows Server 2008 Hyper-V 호스트 Virtual Switch에서 Unicast 방식을 사용할 때 다음과 같은 문제가 발생할 수 있습니다.

위 문제에 대한 Workaround은 아래와 같습니다. 즉, VM들의 NLB 참여 NIC의 MAC 주소를 정적으로 구성하는 방법으로 해결할 수 있습니다.

    • Windows Server 2003 VM : VM들의 NLB 참여 NIC의 MAC 주소를 정적으로 구성하는데, 정적으로 구성하는 MAC 주소는 바로 NLB 구성시 Cluster IP(ex, Virtual IP)의 MAC 주소임.
    • Windows Server 2008 VM : 아래 Hotfix를 NLB 참여 VM들에 적용 후, VM들의 NLB 참여 NIC의 MAC 주소를 정적으로 구성하는데, 정적으로 구성하는 MAC 주소는 바로 NLB 구성시 Cluster IP(ex, Virtual IP)의 MAC 주소임.

 

또한, Windows Server 2008 R2 Hyper-V 호스트에서도 위와 동일한 문제가 발생할 수 있습니다. 그리고, 해결책 또한 Windows Server 2008 Hyper-V 호스트와 동일하게 NLB 참여 NIC의 MAC 주소를 정적으로 구성하는 방법이 있습니다.

  • Windows 2008 R2 NLB using virtual machines in HyperV not working (https://paulroman.pras.ro/2010/04/windows-2008-r2-nlb-using-virtual.html)
    • After configuring the NLB, I found out that the IP address of the NLB was not accessible from nowhere else then the nodes of the NLB cluster. This actually occured because as part of the cluster setup process (when using Unicast) the MAC address of the interface used in the NLB on each of the servers that becomes part of the cluster is changed to a common and different MAC address to anything currently on the servers. This occurs on the server, and the hypervisor knows nothing about it. This way the MAC address set up within Hyper-V on the interfaces used by NLB bears no relation to the MAC address that the cluster thinks it’s using on the guest machines themselves and no traffic is routed to that interface.
      • To solve the problem, I had to modify MAC address settings for each NLB network card configured in virtual machines. (Windows Server 2008 Hyper-V에서와 동일하게 MAC을 정적으로 수정하여 해결)

 

그러나, Windows Server 2008 R2 Hyper-V 호스트에서는 위와 같이 MAC 주소를 정적으로 구성하는 방법이외에도, VM들의 NIC 설정 중에서 “MAC address spoofing” 을 활성화하는 방법도 해결책이 될 수 있습니다.

 

그러나, Windows Server 2008 R2 Hyper-V의 MAC Spoofing 기능이 기본으로 비활성화되어 있는데, 활성화했을 경우에 보안적으로 취약할 수 있습니다. 아래 링크는MAC Spoofing 기능의 활성화 및 비활성화에 대한 장단점을 설명하고 있습니다.

  • New in Hyper-V Windows Server 2008 R2 Part 2 – MAC Spoofing (https://blogs.technet.com/b/jhoward/archive/2009/05/21/new-in-hyper-v-windows-server-2008-r2-part-2-mac-spoofing.aspx)
    • Our Virtual Switch got smarter in Windows Server 2008 R2. In Windows Server 2008, VMs are susceptible to MAC spoofing. MAC spoofing is where a (generally) malicious machine pretends to be another machine on a network (there are legitimate applications which do spoof MAC addresses though – Network Load Balancing being one such example). ( "MAC Address Spoofing" 기능을활성화하게되면 , 보안성이떨어지는단점이있습니다 . "MAC Address Spoofing" 기능을비활성화 (default) 하게되면 , 보안성이강화되는대신에 , VM들의 NLB 작동이안되는단점이있슴)

 

이상과 같이 Hyper-V 상에서 VM들을 NLB로 구성했을 경우에 발생할 수 있는 여러 가지 문제점 및 해결책에 대해서 간략하게 확인해 보았습니다.

간절기에 더욱 더 건강 유의하시길 바랍니다.

Comments

  • Anonymous
    January 01, 2003
    고객사에 Windwos 2008 NLB 구성이 잘 안되서 검색하다서 본 블로그에 들어오게 되었습니다. IDC 에 2대의 Win 2008 Server R2 를 설치하고 IIS 를 올리고 NLB 구성을 했습니다. (L4를 사용하기에는 서버의 중요도가 좀 낮습니다.) Unicast, Multicast 모두 구성을 해 봤는데 외부에서 VIP 로 접속이 안됩니다. 네트웍 장비 (Router, Switch) 환경이 NLB 동작과 관련이 있는 것 같은데 문서상으로 정확하게 설명이 된 것을 찾기가 너무 힘듭니다. 네트웍 담당자에게 VIP MAC 주소를 어떻게 설정해야 하는지 나와 있는 문서가 있는지요? 아니면 간단하게 방법을 알려 주실 수 있나요?... 감사합니다.

  • Anonymous
    January 01, 2003
    네 실제 서버에서 NLB 사용시에 몇 가지 제약점이 있습니다. 예를 들어 L2 스위치에 NLB 호스트를 직접 연결하지 말기를 권장하기도 하죠,, 하여튼 뭐 이런 저런 이유로 NLB가 약간 홀대를 받죠,, 제가 생각하는 정답은 고객의 상황에 맞는 최적의 Load Balancing 솔루션을 선택하는 겁니다. DNS RR도 좋구요 ^-^

  • Anonymous
    October 27, 2011
    가상화가 아닌 실제 서버팜에서도 NLB구성후 네트워크 담당자한테 MAC값을 알려줘야 하는 이유와 유사한 듯 합니다. 비용관점에서 L4를 사용하지 않는다면 NLB보다는 개인적으로 DNS RR방식이 강추죠 ^^