ASDK Journey (2) - 實戰 Azure Stack Development Kit on Azure


前言

MAS(Microsoft Azure Stack),是微軟專為新世代混合雲運作架構所設計的雲端平台。下列為 Azure Stack Vision 影片簡介:



微軟在 DEVintersection 2017 Orlando大會上,由 PowerShell 之父 Jeffrey Snover 介紹 MAS 混合雲平台,在經過 2 個月之後微軟於 2017 年 7 月正式發佈 MAS 混合雲平台:


目前,企業及組織要佈署Azure Stack混合雲平台時,倘若是用於「正式營運環境」的話,建議採用 Azure Stack Integrated Systems 解決方案。簡單來說,用於正式營運環境的 Azure Stack 運作架構,其最小規模的運作架構設計原則為「1、1、4 ~ 12」,分別是「1 Region」、「1 Scale Unit」、「4 ~ 12 Nodes」


倘若是用於「研發測試環境」的話,建議採用 ASDK(Azure Stack Development Kit)解決方案。簡單來說,ASDK 解決方案會將 Azure Stack 所有功能、元件、角色以及運作環境,都部署在「1 台」實體伺服器當中進行運作,所以適合企業及組織在評估初期試用 Azure Stack 混合雲平台,以及導入後期用於研發測試環境中。






Microsoft Azure Stack Development Kit 運作架構及硬體需求

原則上,只要採用通過 Windows Server 2012 R2 硬體認證的伺服器即可,詳請參考 Azure Stack Development Kit deployment prerequisites | Microsoft Docs

開始實戰佈署 ASDK(Azure Stack Development Kit)混合雲平台吧 ! 本文採用 ASDK 佈署方式進行實作,也就是只要 1 台實體伺服器便能佈署 Azure Stack 混合雲平台並且實作所有功能。下列為  ASDK 運作架構,詳請參考 Microsoft Azure Stack Development Kit architecture | Microsoft Docs,並在佈署前用 TechNet Deployment Checker for Azure Stack Development Kit 工具檢查一下。

圖、Azure Stack Development Kit 運作架構示意圖





建立 AAD(Azure Active Directory) 環境

目前,在佈署 Azure Stack 混合雲平台時,必須搭配 AAD(Azure Active Directory)ADFS(Active Directory Federation Services)身份驗證機制才行。

在本文實戰環境中,採用 AAD(Azure Active Directory)身份驗證機制,建立的網域名稱為「weithennmas.onmicrosoft.com」,並建立網域使用者帳號「mas-admin」後,指派目錄角色為「全域管理員」以便具備管理者權限。

圖、建立 weithennmas.onmicrosoft.com 的 Azure AD 網域

圖、新增 weithennmas.onmicrosoft.com 網域管理帳號





Azure Portal 建立 Windows Server 2016 DataCenter VM

由於,手邊並沒有一台至少 16 Cores / 128 GB 記憶體的硬體伺服器讓我安裝及測試 ASDK,所以就把腦筋動到 Azure 環境建立了 😈。簡單來說,採用支援 Nested Virtualization in AzureDv3 或 Ev3 規模的 VM 虛擬主機,就可以完成本文的實作環境了。
【免責聲明】請注意,本文只是為了測試上方便的實作筆記。此實作方式並不被任何微軟官方所支援。

圖、Nested Virtualization in Azure

首先,登入 Azure Portal 建立 Windows Server 2016 DataCenter VM,主要是下列設定:
  • VM Name: MAS-Host
  • Size: 標準 E16s v3

圖、新增 E16s v3 系列 VM 虛擬主機

並且,額外新增「256 GB、1 TB」的資料磁碟,以便屆時建立的巢狀式 VM 虛擬主機,能夠符合 ASDK 混合雲平台對於磁碟空間的要求。MAS-Host 佈署完畢之後,新增給屆時 MAS-VM (安裝 ASDK 的 Nested VM) 需要的硬碟 (參考 ASDK 硬體需求):








MAS-Host 基礎設定

登入 MAS-Host 之後,將剛才新增給稍後用於 MAS-VM 的硬碟初始化及格式化採用 NTFS、256GB (M:) /  1TB (N:)
  • 256GB (M:) 稍後 MAS-VM 用來放 OS Diks CloudBuilder.vhdx
  • 1TB (N:) 稍後 MAS-VM 用來放 Data Disk 250GB *4


接著進行下列基礎設定:
  • Computer Name: MAS-Host
  • TimeZone: UTC + 8

安裝 Hyper-V Role
Add-WindowsFeature Hyper-V -IncludeManagementTools -Restart

安裝完 Hyper-V Role 重新啟動後,在 MAS-Host (Azure VM) 中建立 NAT Switch,以便屆時 MAS-VM (Azure VM 的 Nested VM) 能夠出 Internet (因為 MAS-Host 的上層是 Azure 無法用 MAC Address Spoofing 來處理,詳請參考 133 期 - 實作 Hyper-V 巢狀虛擬化測試研發效率大提升)。
New-VMSwitch -Name "MAS-NATSwitch" -SwitchType Internal
New-NetNat -Name "MAS-VMsNAT" -InternalIPInterfaceAddressPrefix "10.10.75.0/24"
Get-NetAdapter "vEthernet (MAS-NATSwitch)" | New-NetIPAddress -IPAddress 10.10.75.1 -AddressFamily IPv4 -PrefixLength 24








下載 Azure Stack Development Kit

透過 Azure Stack Development Kit Downloaders 開始下載 (放到暫存的 D: Azure Temp Volume 即可)。


執行 AzureStackDevelopmentKit.exe 即可解開出 CloudBuilder.vhdx (大約 21.6 GB),倘若想保留 CloudBuilder.vhdx 記得複製到 C:\ 不然 Azure VM 關機/重新啟動 D: 就清空了 😆。







在 MAS-Host (Azure VM) 中建立 MAS-VM (Nested VM)

待 MAS-Host (Azure VM) 基礎設定及環境準備好之後,便可以準備建立 MAS-VM (Nested VM),以下是 MAS-VM 的組態設定 Generation 2, 14 vCPU, 112640 MB (110GB) vRAM Static, MAS-NATSwitch

MAS-VM OS Disk: M:\CloudBuilder.vhdx,並且擴充為 240 GB,因為使用 CloudBuilder.vhdx  開機後預設 C: 為 120 GB, 但 ASDK 硬體需求 OS 需要 200 GB 以上,並記得將 CloudBuilder.vhdx 調整為開機磁碟。


MAS-VM Data Disk: N:\Data01 ~ 04.vhdx (Dynamic, 每個 250 GB)


MAS-VM 啟用 MAC address spoofing (因為是 Azure VM > Nested VM 的架構,這樣屆時長出來的 AzS-BGPNAT01 虛擬主機就可以直接對外),現在 MAS-Host 是 MAS-VM 的上層,所以啟用 MAC Address Spoofing 就可以讓 MAS-VM 長出來的 Nested VM (AzS-BGPNAT01) 出 Internet。詳請參考 133 期 - 實作 Hyper-V 巢狀虛擬化測試研發效率大提升)。這個部分一定要處理好,一開始實作時就是這邊沒處好,屆時 MAS-VM 在安裝 ASDK 時就會一直錯誤或 BSOD


Disable MAS-VM 的 Time Synchronization


假設硬碟空間不太足夠的話,請把 MAS-VM 關機選項調整為 Save -> Shutdown,這樣 MAS-Host Hyper-V 才不會把 VM 儲存成 .bin (Memory 大小) 然後塞爆硬碟。


最後,為 MAS-VM 啟用 Nested VM 機制。
Set-VMProcessor -VMName MAS-VM -ExposeVirtualizationExtensions $true
Get-VMProcessor -VMName MAS-VM | fl ExposeVirtualizationExtensions







MAS-VM 基礎設定

完成 MAS-VM 的 Nested VM 功能啟用後便可以啟動,預設跑完 Sysprep 然後組態設定下列項目:

  • IE Enhanced Security ConfigurationOff (不然等一下要打 AAD 帳號會有麻煩,稍後連 ASDK Admin/User Portal 也麻煩)
  • TimeZoneUTC + 8
  • Power OptionsHigh Performance
  • C: 記得 Extend 成剛才擴充後的 240GB,另外那 4 顆 250GB 不要動它們
  • Computer NameMAS-VM  (不可以叫 AzureStack 否則安裝會出錯)
  • IP Address10.10.75.241  (使用剛才 MAS-NATSwitch 的網段 10.10.75.0/24)
  • Subnet mask255.255.255.0
  • Default Gateway10.10.75.1  (使用剛才 MAS-NATSwitch 指定的 Gateway)
  • Prefered DNS server: 8.8.8.8   (時會被取代為 192.168.200.224 (AzS-DC01)
  • Firewall:Disabled
  • 確認可 ping 8.8.8.8 (出 Internet)






MAS-VM 佈署 ASDK

佈署前看一下 ASDK Release Notes 以免踩到雷,例如,ASDK Build 20180103.2 在佈署時要指定 Time Server (IP Address) 才行。環境都了解後,準備執行下列 PowerShell 開始佈署 ASDK:

  • ASDK 佈署程序會把過程寫入到 C:\CloudDeployment\Logs
  • 指定屆時 BGP VM 使用 10.10.75.240 (因為 MAS 架構中都透過 BGP VM 對外存取)
  • 記得是要跑 InstallAzureStackPOC.ps1 才會跑 DeploySingleNode.ps1, 若是跑 InstallAzureStack.ps1 就變成跑 DeployMultiNode.ps1
  • 開始佈署前,解析 tw.pool.ntp.org 的 NTP Server IP 位址,這次實作為 61.216.153.105。


執行下列 PowerShell 開始 ASDK 安裝程序,首先會請你指定 AdminPassword 為屆時網域管理者密碼,例如,網域管理者帳號 AzureStack.local\AzureStackAdmin
cd C:\CloudDeployment\Setup
.\InstallAzureStackPOC.ps1 -InfraAzureDirectoryTenantName weithennmas.onmicrosoft.com -NATIPv4Subnet 10.10.75.0/24 -NATIPv4Address 10.10.75.240 -NATIPv4DefaultGateway 10.10.75.1 -TimeServer 61.216.153.105 -Verbose



系統會自動測試,剛才所設定的 NATIPv4Address (10.10.75.240) 是否真的沒在使用。


詢問 AAD 的管理帳密時,預設情況下稍後的 Phase 0 - Step PhysicalMachineAndInitialConfiguration.12,會檢查安裝 ASDK 的主機是否為 Virtual Machine 若是則安裝作業停止。因為剛才的安裝程序中,已經將 Microsoft.AzureStack.Solution.Deploy.CloudDeployment.1.0.626.22.nupkg 解開,所以請修改 C:\CloudDeployment\Roles\PhysicalMachines\Tests\BareMetal.Tests.ps1 內容,讓安裝程序允許 VM 也能佈署,請將 if (-not $isVirtualizedDeployment) 修改成 ​if ($isVirtualizedDeployment) 3 筆要取代 (預設若偵測為 VM 則無法繼續安裝)。


完成修改後,再鍵入 AAD 的管理帳密。


Step PhysicalMachineAndInitialConfiguration.12 - Validate Physical Machines,剛才若未修改 BareMetal.Tests.ps1 內容,讓安裝程序允許 VM 也能裝的話這裡就會錯誤然後安裝停止。


理論上經過 5 ~ 6 小時之後,完成 Step 302 並顯示 COMPLETE: Action 'Deployment' 訊息就佈署完畢了。






Azure Stack Administration Portal 

完成 ASDK 佈署作業後,連結 https://adminportal.local.azurestack.external 網址即可瀏覽 Azure Stack Administration Portal






Azure Stack User Portal 

完成 ASDK 佈署作業後,連結 https://portal.local.azurestack.external 網址即可瀏覽 Azure Stack User Portal






參考資源






Azure Stack Development Kit 攻略系列文章