지난 몇개월동안 경험한 꼬알라의 Microsoft Azure Stack TP1 구성 및 활용 이야기 1편

image

지난 1월 Microsoft 하이브리드 클라우드의 핵심인 Microsoft Azure Stack(MAS)의 첫번째 기술 프리뷰(Technical Preview)가 릴리즈되었습니다. 이후 4월에 MAS 첫번째 프리뷰에 대한 추가 업데이트가 발표되어 지금까지 사용해볼 수 있는 형태로 제공되고 있습니다. 첫 프리뷰가 나온 이후, 계획된 일정과는 달리, 두번째 프리뷰가 올해 연말 발표로 연기됨에 따라(실제 출시 역시 내년 중반으로 연기), 현재의 MAS TP1을 기반으로 테스트나 기술에 대한 확인을 하셔야 하는 시간이 늘어나게 되었죠.

원래 꼬알라는 두번째 프리뷰가 발표되면, 관련된 기술 정리를 포스팅으로 진행할 마음을 가지고 있었지만, 이에 따라 TP1을 기반으로 몇가지 사항을 정리해보려고 합니다. 그 첫번째는 MAS TP1을 설치하시고, 자주 접하실 수 있는 사항에 대한 정리 및 이에 대한 트러블슈팅 방법을 써보려고 합니다. 몇몇 정보는 공식 페이지, 그리고 인터넷에 산재된 형태를 정리하기도 하였고, 몇몇 정보는 지난 6개월간 제가 직접 쓰면서 경험하고 해결한 문제들에 대한 정리입니다. 아직은 초기 단계인 첫번째 프리뷰이기에, 문제가 발생하거나, 야기했을 경우, 문제 소지를 없앤다고 다시 문제가 해결되지 않는 경우가 많습니다.

설치 관련 이슈

Windows Server 2016 TP4 영문판을 이용하셔야 합니다.(현재 최신은 TP5) MAS TP1이 릴리즈되었을 때, Windows Server 2016이 TP4였기에, TP4 버전만을 지원합니다. 또한 주의 사항 중 하나가, TP4가 작년 말에 릴리즈되었기에, 추가적으로 업데이트된 누적 업데이트가 꽤 많습니다. 이 누적 업데이트를 모두다 설치하시면 절대 안됩니다. MAS TP1이 출시되었을 당시에, 릴리즈된 업데이트인 KB3124262만 설치하시고, 나머지 업데이트는 모두 설치하시면 안됩니다. 다른 업데이트들이 설치되었을 경우, MAS 포탈에서 VM 생성시(특히 Windows 기반 VM), Conflict 상태가 되는 형태로 에러가 발생하고, 해결 방법이 없습니다. (TP4 재설치 필요)

clip_image001

역시나 MAS TP1에 대한 설치 이후, 지속적으로 발표되는 업데이트를 설치하실 필요는 없습니다. 이에 저는 Windows Update 서비스를 아예 중지시키고 쓰고 있습니다.

image

시간 대역도 중요합니다. 한국 시간 대역이 아닌, 태평양 표준시로 맞추셔야 합니다. 또한 서버의 BIOS 설정에, 시간과 관련된 부분(UTC)이 있다면, 이를 사용하지 마셔야 합니다.(아니면 UTC에 근거하여 시간을 설정하셔야 합니다.)

image

NIC이 여러개인 경우, 연결된 NIC은 하나를 제외하곤 모두 설치 전, 사용 중지하셔야 합니다.

image

서버 스펙 역시, TP1에서 요구하는 사양이 필요합니다. (최소 12개의 물리적인 코어, 96GB) 설치 후, 개별 메모리들의 용량을 줄여서 사용할 수 있다고 합니다만, 설치시 만들어주는 MAS용 역할 VM들의 메모리는 사용해본 느낌상 이미 최소 형태로 구성된다고 느껴집니다. MAS TP1의 기본 설치 후, MySQL, SQL, Web Apps에 대한 리소스 제공자를 추가하여, 제공 서비스를 늘릴 수 있습니다. 이 경우, 상단 그림의 VM이 생성되고, 대략 60GB의 메모리를 소모합니다. 이후 남은 메모리는 MAS에서 만들어지는 추가적인 서비스 VM들이나 서비스들이 차지하게 될 것입니다.

MAS TP1 설치시, NATVM에서 외부 네트워크와 연결되는 형태를 가져갑니다. NATVM – BGPVM – 내부 이런 형태의 네트워크를 가지고 있습니다. 이에 NATVM에 DHCP 형태로 네트워크 IP가 제공되어야 합니다. 고정 IP가 필요한 경우, DeployAzureStack.ps1 -Verbose -NATVMStaticIP 10.10.10.10/24 -NATVMStaticGateway 10.10.10.1 를 이용하여 IP 주소를 연결해주셔야 합니다.

image

사내 액티브 디렉터리를 통해 바로 MAS에 인증을 처리할 수 없습니다. MAS는 Azure AD를 이용하고 있으며, 사내 AD 인증 처리를 위해서는 Windows Server내 ADFS를 통해, Azure AD와 연결하는 작업이 필요합니다.

MAS TP1은 PoC를 위한 프리뷰이므로, 아직 고가용성 기술은 지원하지 않습니다. 이에 MAS내 가용성 집합을 만들 수는 있지만, 이를 직접 동작시킬 수는 없습니다. 차후 정식 버전의 MAS에서는 물리적인 서버의 추가 요구 및 최대 지원 숫자가 발표될 것입니다.

MAS TP1의 네트워크의 기본 구조

설치 후, 꼬알라가 가장 궁금했던 부분은 바로 MAS내 네트워크의 구성이었습니다.

image

MAS TP1은 크게 3개의 네트워크 영역을 가지고 있습니다. 192.168.100.0/24 (기본 인프라 영역) 192.168.133.0/24 (부하 분산기 외부 IP 영역) 192.168.200.0/24 (사용자 네트워크 영역)이 여기에 해당됩니다. 이 경우, 보통 3개의 가상 스위치가 필요할 것으로 예상하지만, MAS TP1의 Hyper-V 관리자는 하나의 가상 스위치만이 만들어져 있습니다.

image

IP 주소를 확인하기 위해, Hyper-V 관리자에서 VM 정보를 확인해도 IP 정보는 보이지 않습니다. Disappointed smile

image

MAS TP1은 L2 네트워크간의 구분을 VLAN으로 하고 있습니다. 보통 VLAN은 Hyper-V 관리자내 VM 설정에서 한다고 생각하는 경우가 많습니다만, Windows Server 2016에서 새롭게 추가된 VMNetworkAdapterIsolation를 사용합니다. ExternalVirtualSubnet은 3rd 파티 네트워크 가상화, NativeVirtualSubnet은 Hyper-V 네트워크 가상화, VLAN은 가상 스위치 기반내 VLAN을 의미합니다.

image

가장 바깥단에 위치한 NATVM은 VLAN 1002번의 Transit Network와 0번의 외부 네트워크에 연결되어 있습니다. IP 주소는 외부 IP와 내부 IP 192.168.200.1을 가지고 있죠. VLAN 1002의 192.168.200.0/24라고 보시면 됩니다.

image

또하나의 내부 라우터인 BGPVM은 VLAN ID 1002에 소속된 192.168.200.3(Gateway 192.168.200.1), 그리고 VLAN 1001에 소속된 192.168.100.1을 가지고 있습니다.

image

BGPVM은 라우터이기에 192.168.100.0/24 영역에서 라우팅된 패킷을 192.168.200.0/24 영역의 기본 게이트웨이로 전달하도록 만들어져 있습니다.

image

마지막으로 인프라내 ADVM은 VLAN ID 1001에 192.168.100.0/24 영역을 사용합니다. 게이트웨이로 192.168.100.1을 바라보고 있기에, BGPVM으로 네트워크를 전달하게 됩니다.

image

참고로, MAS를 사용하시면서 만드신 가상 네트워크는 IsolationMode가 Vlan이 아닌, ExternalVirtualSubnet 형태로 만들어집니다.

image

192.168.100.0(내부) - 192.168.200.0(사용자가 사용할 외부) - 실제 네트워크 외부 형태로 구성되어 있는 것이죠. 그럼 이제 192.168.133.0/24가 남았습니다. 차후 시간이 될때, 별도로 살펴볼 예정입니다만, 192.168.133.0은 부하 분산기의 외부 IP입니다. BGPVM에서 Get-BGPRouteInformation을 내려보면, 하기 그림과 같은 결과가 나옵니다. 192.168.133.XX/32 (해당 IP를 칭하는 것이죠)에 대한 다음 홉 경로가 나옵니다. 192.168.100.5인데, 해당 VM은 MuxVM입니다.

image

결국 MAS 내부 인프라나 사용자가 사용할 외부 주소(NATVM에 고정 경로로 192.168.133.0/24를 BGPVM으로 전달하게 되어 있음)에서 192.168.133.0을 요청하면 처리할 수 있는 MuxVM이 있는 것이죠. 192.168.133.X의 IP들은 MAS 포탈내 공용 IP 주소에서 볼 수 있고, 이 주소가 부하 분산기에 연결되어 있습니다. 아니면 바로 VM에 할당하여, 부하 분산 처리를 받지 않는 형태로도 가능합니다.

image

image

이제 조금 그림이 그려지시나요? 복잡해보이지만, 잘 생각해보시면 이해가 되실 것입니다.

MAS TP1 네트워크에서 쉽게 발생할 수 있는 문제와 해결책

MAS TP1을 이용하다보면, 실제 MAS 호스트가 다시 시작되면, 192.168.133.0의 IP를 가진 VM이나 서비스가 동작하지 않는 것을 경험할 수 있습니다. TP1이기에 발생하고 있는 버그죠. 이 경우는 해당 공용 IP와 연결된 서비스(부하 분산 또는 가상 컴퓨터)를 잠시 연결 해제하시고, 새롭게 공용 IP 주소를 생성한 후, 연결하면 재동작을 시작합니다. 조금 피곤한 일이지만, 이런 형태의 해결책이 있는 것도 다행입니다. 가장 이상적인 방법은 MAS TP1 호스트에 서비스 형태의 VM들을 구성하신 후에는 다시 시작을 최대한 안하셔야 합니다. Smile

추가적인 테스트 용도나 MAS내 베이스 이미지로 사용하기 위해서, MAS TP1 Hyper-V에 VM을 만드시는 경우가 있을 것입니다. (Windows Server 2016 또는 Linux 이미지 추가)

image

이 경우, 해당 VM이 192.168.100.0 등의 MAS내 네트워크와 교신이 되지 않는 것을 보실 수 있습니다. (네트워크 IP 주소를 맞췄음에도 불구하고) 이는 Port 프로필이 내부적으로 명시되어 있기 때문입니다. 이를 명시하기 위해서는 PowerShell 처리가 필요합니다. 먼저 해당 Cmdlet이 기본 포함되어 있지 않기에, 모듈을 불러와야 합니다. . C:\ClusterStorage\Volume1\Share\NCDeployment\Scripts\NetworkControllerRESTWrappers.ps1

이후, Set-PortProfileId -resourceID ([System.Guid]::Empty.tostring()) -VMName <VM이름> –NicName <네트워크 아답터 이름>을 입력합니다.

실수하기 좋은 것들

Hyper-V 관리 도구를 많이 사용하다 보면, 아무렇지도 않게, VM을 직접 삭제하시고, 더불어, MAS 포탈에서 만든 파일들을 직접 호스트에서 삭제할 수 있습니다. MAS는 클라우드 기술이므로, 모든 기본 처리는 전부 MAS 포탈을 이용해야 합니다. (인프라는 사용자가 사용하는 클라우드의 추상화 계층 밑에 있는 형태입니다.)

image

MAS 호스트의 Hyper-V 관리도구에는 이렇게 GUID 형태로 표현된 VM들이 존재합니다. 이에 대한 필요성이 없거나, 삭제를 원할 경우에, 관리 도구를 이용해서는 안된다는 것입니다. 해당 VM이 클라우드에서 가지는 이름을 확인한 후, MAS 포탈에서 삭제해야 합니다.

VM을 선택한 후, 하단 Summary를 보면, VMName이라는 형태로 확인이 가능합니다.

image

이를 GridView 형태로 보여주는 PowerShell이 PowerShell Gallery에 올라와있습니다.

또한 MAS내 저장소내 VM용 VHD가 생성되면, 이는 MAS 호스트내 배치되어 있습니다. 이 역시 정상적인 처리는 MAS 포탈을 이용해야 합니다.

image

MAS 포탈에 appsvclocalstor 저장소가 있죠.

image

이런 형태의 포스팅으로 MAS TP1에 대한 이야기를 정리해볼까 합니다. 또다른 이야기로 다음 포스팅에서 뵙겠습니다. 미약하지만, MAS TP1을 활용해보시는데 도움이 되셨으면 합니다.