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

1편에서 Microsoft Azure Stack(MAS) TP1의 설치 및 운영시 발생할 수 있는 몇가지 이슈들 및 사항들을 살펴보았습니다. 오늘도 여기에 이어, 꼬알라가 경험, 또는 진행했던 사항들에 대해서 정리해보는 시간을 가져보죠.

추가 리소스 제공자 설치

image

MAS TP1을 설치하시면, 기본적으로 IaaS(Infrastructure as a Service)에서 필요한 가상 네트워크, 저장소, 가상 컴퓨터, 부하 분산기등은 설치가 되고, 제공됩니다. MAS는 이러한 서비스 영역을 리소스 제공자(Resource Provider, RP)라는 이름으로 제공하고, Compute RP, Network RP, Storage RP가 이를 담당합니다. 현재 MAS TP1에서 추가적으로 구성 가능한 RP는 Web Apps, MySQL, SQL이 있습니다. 이를 추가적인 서비스라고 아래 그림에서는 표현해놓았습니다.

image

MySQL RP를 설치하면, 서비스에서 제공할 수 있는 항목에 MySQL이 추가되며, SQL은 Microsoft SQL, Web Apps는 웹 서비스를 제공할 수 있는 PaaS 기반이 구성된다고 보시면 됩니다. Web Apps의 경우에는 웹 서비스의 형태에 따라 MySQL, SQL 서비스와 연계하여 WordPress 형태를 제공할 수도 있습니다.

image

MAS TP1 출시 초기에는 이러한 작업들을 모두 PowerShell 스크립트를 직접 입력하여 처리하는 형태로 하여, 에러의 가능성이 높았지만, 지난 4~5월 스크립트를 모두 구성한 형태로 패키지를 제공, 필요한 경우에는 Installer 형태의 설치할 수 있게 되었습니다.(MySQL, SQL 공지, Web Apps 공지) 대표적으로 Azure Stack의 정보가 많은 azurestack.eu 사이트에서 정보를 찾아보신 분은 지금의 형태와 조금은 다른 모습을 보실 수 있습니다.

설치는 MySQL 또는 SQL (순서 상관 없음) RP를 설치하고, SQL RP 설치시 만들어진 데이터베이스를 통해, Web Apps를 설치합니다. 설치 형태는 매우 간단하기에, 설치 단계가 정리된 Microsoft 페이지를 링크로 달아놓겠습니다.

  1. SQL 리소스 제공자 설치
  2. MySQL 리소스 제공자 설치
  3. Web Apps 리소스 제공자 설치

이슈가 발생할 수 있는 부분은 몇가지 정도로 정리됩니다.

  • 각 RP 설치시 VM 생성 단계에서 Conflict 에러가 발생하고 실패하는 경우 : 1편에서 설명한 바와 같이, MAS TP1 호스트 운영 체제의 업데이트가 필요 이상으로 많이된 경우입니다.
  • SQL RP 등록시 계정과 암호를 물어볼 때 : 이때는 VM 생성시 입력한 계정과 암호를 입력하는 것이 아니라, sqlRpUsername/sqlRpPassw0rd를 입력하시면 됩니다.
  • MySQL RP 등록시 계정과 암호를 물어볼 때 : MySQL 구성시 입력한 기본 계정과 암호(BASICAUTHUSERNAME/BASICAUTHPASSWORD)를 입력합니다.
  • Web Apps 설치 확인 단계에서 SQL 데이터베이스에 연결되지 않는 경우 : SQL RP를 설치하시고, MAS TP1 호스트를 다시 시작한 적이 있다면, 1편에서 언급드린 바와 같이 공용 IP 주소가 분리되는 이슈가 있기 때문입니다. 이 경우에는 SQL RP VM에서 원격 데스크톱 연결이 안될 것입니다. Smile

image

MAS 포탈에서 SQLRP VM의 공용 IP 주소를 재설정해줘야 합니다. VM의 정보에서 나오는 블레이드의 Network Interface를 클릭하고, NIC을 클릭하면, 아래의 그림과 같은 형태까지 가실 수 있습니다.

image

노란색으로 표시된 부분을 이용하여, Public IP 주소를 None으로 설정한 후, 다시 생성하시면 새 IP 주소가 생성되고, 연결됩니다. 이는 MAS TP1의 알려진 이슈로 차후 발표될 다음 프리뷰에서는 해결될 것으로 보입니다. IP가 변경되었다면, SQLRP로 접속하는 DNS 호스트 레코드도 변경해야 합니다. MAS TP1 호스트의 ADVM으로 로그온하고, DNS 관리자를 엽니다. 여기에 SQLRP 레코드를 변경된 주소로 업데이트합니다.

image

이런 문제가 발생하지 않게 만드는 가장 좋은 해결책은 아쉽지만 현재로서는 MAS TP1 호스트의 다시 시작을 하지 않는 것입니다. Sad smile

추가 VM 템플릿 이미지 생성

기본적으로 MAS TP1을 설치하면, Windows Server 2012 R2 이미지만을 제공합니다. 몇가지 작업을 통해 Linux와 Windows Server 2016을 추가할 수 있습니다. 해당 작업은 대부분 PowerShell 기반이기에, 조금은 복잡하게 느낄 수 있습니다.

$RefNetIsolation = Get-VM -Name ADVM | Get-VMNetworkAdapter | Get-VMNetworkAdapterIsolation

이를 통해 MAS TP1의 VM에 구성된 네트워크 VLAN 정보를 가져올 수 있습니다. (1편 내용 참고)

$VM = New-VM –Name <VM이름> -MemoryStartupBytes 4GB -SwitchName 'CCI_External_vSwitch' -BootDevice CD -Generation 1 -NoVHD
$VM | Set-VMProcessor -Count 2
$VHD = New-VHD -Path C:\ClusterStorage\Volume1\Share\VM\<파일이름>.vhd -SizeBytes 40GB –Dynamic

기존에 이미 만들어놓은 1세대 VHD 파일이 있다면, 이를 복사하셔서 사용하셔도 됩니다. 이 예제는 VHD를 생성하는 예제입니다.

$VM | Add-VMHardDiskDrive -ControllerType IDE -ControllerNumber 0 -ControllerLocation 0 -Path $vhd.Path
$VM | Get-VMDvdDrive | Set-VMDvdDrive -Path C:\설치이미지.ISO

역시나 이미 만들어놓은 1세대 VHD가 있다면, DVD를 추가하지 않아도 됩니다.

$VMNetAdapter = $VM | Get-VMNetworkAdapter
$IsolationSettings = @{
IsolationMode = 'Vlan'
AllowUntaggedTraffic = $true
DefaultIsolationID = $RefNetIsolation.DefaultIsolationID
MultiTenantStack = 'off'
}
$VMNetAdapter | Set-VMNetworkAdapterIsolation @IsolationSettings

. C:\ClusterStorage\Volume1\Share\NCDeployment\Scripts\NetworkControllerRESTWrappers.ps1
Set-PortProfileId -resourceID ([System.Guid]::Empty.tostring()) -VMName $VM.Name -NicName $VMNetAdapter.Name

네트워크 구성 정보를 반영하고, MAS TP1내 VM간 기본 통신을 위해 PortProfileID를 지정합니다. Set-PortProfileID는 Hyper-V에서 제공하는 Cmdlet이 아니기에, NetworkControllerRESTWrappers를 실행한 후, 입력하는 것입니다.
이를 통해 VM을 구동하고 기본 OS 구성을 시작합니다. 기본적으로 MAS TP1은 인프라 네트워크(192.168.100.0/24)에 DHCP가 없으므로, 192.168.100.X(대략 20번대 이후, 안쓰는 IP)를 기본 IP 주소로 입력합니다. 게이트웨이는 192.168.100.1, 서브넷 마스크는 /24, DNS는 192.168.100.2입니다.

Linux에 대한 부분은 CentOS를 기반으로 잘 정리된 링크가 있습니다. 여기를 참고합니다. SUSE의 경우에는 여기를 참고합니다.

Windows의 경우, 필요한 업데이트를 모두 반영한 후, 네트워크 IP 구성을 다시 동적으로 변경한 후, SysPrep 명령어로 진행해주면 됩니다.

이렇게 기본 이미지 생성이 완료되면, PowerShell 스크립트를 통해 MAS내 항목으로 추가할 수 있습니다.

$ImageImport = @{
PlatformImageRespositoryPath = '\\SOFS\Share\CRP\PlatformImages\'
ImagePath = 'C:\ClusterStorage\Volume1\Share\VM\<파일 이름>.vhd'
Publisher = ‘적절한이름'
Offer = 'OS 종류’'(예, CentOS, WindowsServer)'
Sku = ‘큰버전(예, 7.2, 2016-TP5)'
Version = '세부버전(예, 1.0.0, 7.2.20160729)'
OsType = ‘Windows 또는 Linux'}

D:\CRP\VM\Microsoft.AzureStack.Compute.Installer\content\Scripts\CopyImageToPlatformImageRepository.ps1 @ImageImport

image

명령어가 완료되면, 조금만 기다리면, MAS 포탈내에 해당 이미지가 나와, 이제 VM 생성용으로 사용자나 관리자가 사용할 수 있습니다. 단일 형태의 이미지가 아닌, MarketPlace에 추가하는 형태는 여기를 참고하시면 됩니다.

image

오늘도 크게 2가지 정도 MAS TP1을 사용하면서 알게 된, 그리고 필요했던 내용을 정리해보았습니다. 또다른 내용을 가지고 3편으로 되돌아 오겠습니다. Smile