Azure Stack - Potęga Azure w firmowym datacenter - część 2
W części pierwszej utworzyliśmy kontekst dla wykorzystania Azure Stack w firmie. Poniżej garść notatek z pola jak samemu uruchomić Proof of Concept Azure Stack . Wersja TP1 daje przedsmak możliwości platformy, której pojawienie się wersji produkcyjnej planowane jest już na początek 2017 roku.
UWAGA: Artykuł w oparciu o Azure Stack Technical Preview 1
Czym jest Azure Stack?
Azure Stack to platforma hybrydowa działająca w oparciu o technologie wykorzystywane w publicznym Azure. Pozwala firmie na świadczenie usług Azure wykorzystując własne centrum przetwarzania danych.
Metody zarządzania Azure Stack
- Azure Portal
- Integracja z PowerShell, Azure SDK, Visual Studio
Chmurowy Model Aplikacyjny
- Azure Resource Manager
Budowanie ofert w oparciu o następujący model usługowy (w wersji finalnej)
- IaaS: Compute (Virtual Machines i Virtual Machine Extensions), Storage (Blobs i Tables), Networking (Virtual Network, Load Balancer, VPN Gateway)
- PaaS: App Service - Web Apps, Logic Apps, API apps, oraz Mobile Apps, Service Fabric
Myślę, że jesteśmy gotowi zaczynać przygodę z Azure Stack i wypróbować publicznie już dostępną wersję TP1.
https://azure.microsoft.com/en-us/overview/azure-stack/
Poniżej garść notatek z laboratorium i specyfikacja mojej platformy sprzętowej:
- DELL PowerEdge R720 DX150
- 64 GB RAM
- 5x SSD, 1x HDD
Instalacja Azure Stack w pigułce
- Download (Azure Stack POC TP1.exe)
- Extract (WindowsServer2016Datacenter.vhdx, WindowsServer2012R2DatacenterEval.vhd, SQLServer2014.vhdx, MicrosoftAzureStackPOC.vhdx, DeployAzureStack.ps1)
- Boot from VHD (bcdboot <mounted drive letter>:\windows)
- Deploy (PS C:\AzureStack> .\DeployAzureStack.ps1 -Verbose)
Potrafię sobie wyobrazić, że cześć z nas rozbija się potencjalnie już na początku o następujące blokady:
Zgodnie z dokumentacją minimalne wymagania Azure Stack to 96 GB RAM. Rekomendowane 128 GB RAM.
A czy mogę uruchomić na mniej potężnej konfiguracji sprzętowej?
Możesz, oczywiście nie jest to zalecane ani wspierane. Za chwilę pokażę co zrobić aby zmylić skrypt sprawdzający minimalną konfigurację.
Czy jeśli nie mam 4 fizycznych dysków, mogę uruchomić Azure Stack?
Możesz, oczywiście nie jest to zalecane ani wspierane. Za chwilę pokażę co zrobić aby zmylić skrypt sprawdzający minimalną konfigurację.
Czy jeśli nie mam fizycznej maszyny, to czy mogę uruchomić Azure Stack wykorzystując Nested Virtualization?
Jak wyżej, możesz. Nie ma gwarancji, że będzie działać zgodnie z oczekiwaniami, ale Azure Stack zainstaluje się i uruchomi.
Zachęcam więc do uruchomienia czystej sesji swojej ulubionej przeglądarki z otwartymi następującymi kartami:
- Microsoft Azure Stack - Download https://azure.microsoft.com/en-us/overview/azure-stack/
- The Azure Stack Channel https://channel9.msdn.com/Blogs/azurestack
- Deploy Azure Stack POC https://azure.microsoft.com/en-us/documentation/articles/azure-stack-run-powershell-script/
- Azure Stack deployment prerequisites https://azure.microsoft.com/en-us/documentation/articles/azure-stack-deploy/
- Known Issues, common pitfalls, tips and a FAQ for Microsoft Azure Stack https://blogs.technet.microsoft.com/azurestack/2016/02/15/known-issues-common-pitfalls-tips-and-a-faq-for-microsoft-azure-stack/
- Microsoft Azure Stack troubleshooting https://azure.microsoft.com/en-us/documentation/articles/azure-stack-troubleshooting/
- Azure Stack Forum https://social.msdn.microsoft.com/Forums/vstudio/en-US/home?forum=AzureStack
- Azure Stack PowerShell Modules https://aka.ms/azStackPsh
- Azure Stack Quick Templates https://github.com/Azure/AzureStack-QuickStart-Templates
Na uruchomienie Azure Stack potrzebujemy kilkadziesiąt minut, a potem około 2h na dokonanie procesu "zrzutu" tj. wdrożenia, który jest w pełni automatyczny. Ukłony dla Charles'a Joy, który w sesji Microsoft Azure Stack TP1 POC Deployment Tutorial na Channel9 (link powyżej) przeprowadza nas za rączkę w całym procesie od A do Z. Na wszelki wypadek, po obejrzeniu sesji, należy upewnić się, że mamy przygotowane:
- Odpowiednio potężną maszynę, najlepiej fizyczną
- Zegar w BIOS wskazuje taką samą godzinę jak host Hyper-V
- Sugeruje w ramach Hosta Hyper-V skorzystać z Boot from VHD używając dysku wirtualnego Windows 2016 TP4 dostępnego w paczce z Azure Stack
- Serwer DHCP, który przydzieli części maszyn wirtualnych adresy IP w procesie wdrożenia wraz z dostępem do Internetu
- Dostęp do Internetu zarówno dla hosta Hyper-V jak i maszyn wirtualnych, które zostaną powołane przez skrypty
- Subskrypcję Azure i użytkownika z uprawnieniami administracyjnymi - tak, może być Trial
- Hosta Hyper-V nie jest podłączony do sieci 192.168.200.0/24, 192.168.100.0/24, lub 192.168.133.0/24
A teraz notatka jak wykiwać proces sprawdzania wymagań wstępnych, który bezceremonialnie przerwie proces wdrożenia jeśli nie spełnimy oficjalnych rekomendacji:
Component | Minimum | Recommended |
Compute: CPU | Dual-Socket: 12 Physical Cores | Dual-Socket: 16 Physical Cores |
Compute: Memory | 96 GB RAM | 128 GB RAM |
Compute: BIOS | Hyper-V Enabled (with SLAT support) | Hyper-V Enabled (with SLAT support) |
Network: NIC | Windows Server 2012 R2 Certification required for NIC; no specialized features required | Windows Server 2012 R2 Certification required for NIC; no specialized features required |
Disk drives: Operating System | 1 OS disk with minimum of 200 GB available for system partition (SSD or HDD) | 1 OS disk with minimum of 200 GB available for system partition (SSD or HDD) |
HW logo certification | Certified for Windows Server 2012 R2 | Certified for Windows Server 2012 R2 |
Jeśli nie posiadamy 128 GB RAM, 96 GB, ani nawet 64 GB kroki do wykonania poniżej.
W pliku Invoke-AzureStackDeploymentPrecheck.ps1 należy dostosować odpowiednio
function CheckRam {
Write-Verbose "Check RAM."
$mem = Get-WmiObject -Class Win32_ComputerSystem
$totalMemoryInGB = [Math]::Round($mem.TotalPhysicalMemory / (1024 * 1024 * 1024))
if ($totalMemoryInGB -lt 32) {
throw "Check system memory requirement failed. At least 64GB physical memory is required."
}
Następnie w pliku PoCFabricSettings.xml pamiętając o zmianach powyżej, konfigurujemy wielkość maszyn wirtualnych, które za chwilę powstaną. W tym celu otwieramy xml w edytorze tekstu i wyszukujemy po elemencie <RAM> modyfikując przypisaną pamięć operacyjną oraz wartości minimalnie i maksymalne dla każdej z maszyn np.:
Jeśli zamierzamy wypróbować Azure Stack, ale nie posiadamy 4 fizycznych HDD, a chcielibyśmy podłączyć dynamiczne dyski wirtualne, znów otwieramy Invoke-AzureStackDeploymentPrecheck.ps1:
$physicalDisks = Get-PhysicalDisk | Where-Object { $_.CanPool -eq $true -and ($_.BusType -eq 'RAID' -or $_.BusType -eq 'SAS' -or $_.BusType -eq 'SATA') }
Upewniamy się, że fragment poniżej przedstawia się następująco:
$physicalDisks = Get-PhysicalDisk | Where-Object { $_.CanPool -eq $true -and ($_.BusType -eq 'RAID' -or $_.BusType -eq 'SAS' -or $_.BusType -eq 'SATA' -or $_.BusType -eq 'File Backed Virtual) }
Dodatkowo garść notatek, które mogą okazać się pomocne:
- Jeśli wdrożenie za pierwszym razem nie powiedzie się, można ponownie wywoływać .\DeployAzureStack.ps1 –Verbose aż do skutku
- Podłączenie do Azure Stack z poziomu PowerShell i uruchomienie przykładowego wdrożenia z wykorzystaniem szablonu opisane jest tu: https://github.com/Azure/AzureStack-QuickStart-Templates/tree/master/201-Comprehensive
- Należy odinstalować na ClientVM moduły Azure PowerShell zainstalowane na VM, zanim zainstalujemy Azure Stack PowerShell Module https://aka.ms/azStackPsh
- Logi instalacji dostępne są w lokalizacji na hoście Hyper-V C:\ProgramData\Microsoft\AzureStack\Logs
- Na chwilę obecną nie da się Azure Stack podłączyć do produkcyjnej domeny. Instalator utworzy nową czystą domenę AD AzureStack.local
- Jeśli z jakiegoś powodu Deployment VM przestanie działać, wykonaj na hoście Hyper-V komendę:
$Credential=Get-Credential
Invoke-Command -VMName "xRPVM" -Credential $Credential -ScriptBlock{
Get-Service CRP|Start-Service -Verbose
Get-Service AvailabilitySetController|Start-Service -Verbose
Get-Service BlobManager|Start-Service -Verbose
Get-Service ClusterManager|Start-Service -Verbose
Get-Service ComputeController|Start-Service -Verbose
Get-Service DiagnosabilityManager|Start-Service -Verbose
Get-Service ExtensionManager|Start-Service -Verbose
Get-Service GuestArtifactRepository|Start-Service -Verbose
Get-Service IsoManager|Start-Service -Verbose
Get-Service ManifestProvider|Start-Service -Verbose
Get-Service MetadataServer|Start-Service -Verbose
Get-Service NetworkManager|Start-Service -Verbose
Get-Service PlacementManager|Start-Service -Verbose
Get-Service PlatformImageRepository|Start-Service -Verbose
Get-Service TopologyManager|Start-Service -Verbose
Pamiętając i w razie potrzeby wykonując powyższe kroki wkrótce będziemy cieszyć się możliwościami publicznego Azure w swoim własnym Datacenter. Zanim upubliczniona zostanie wersja finalna mamy okazję przekonać się jak w Azure/Azure Stack działa:
- Wdrażanie systemów Linux
- Wdrażanie systemów Windows
- Dowolna konfiguracja powyższych za pomocą DSC
- Zarządzanie Azure Stack z poziomu Windows i Linux
- Wykorzystywanie własnych obrazów VHD systemów operacyjnych
- Powoływania do życia całych infrastruktur za pomocą szablonów
- Rozszerzenia
- PaaS On-Premises
- Tworzenie Planów, Ofert, Subskrypcji
- Oraz wielu innych.
Powodzenia!
/Tomasz Gościmiński