Bereitstellen von VMs auf dedizierten Hosts über Azure PowerShellDeploy VMs to dedicated hosts using the Azure PowerShell

Dieser Artikel führt Sie durch die Erstellung eines dedizierten Azure-Hosts zum Hosten Ihrer virtuellen Computer (VMs).This article guides you through how to create an Azure dedicated host to host your virtual machines (VMs).

Vergewissern Sie sich, dass die Azure PowerShell-Version 2.8.0 oder höher installiert ist und Sie mithilfe von Connect-AzAccount bei einem Azure-Konto angemeldet wurden.Make sure that you have installed Azure PowerShell version 2.8.0 or later, and you are signed in to an Azure account in with Connect-AzAccount.

EinschränkungenLimitations

  • Die verfügbaren Größen und Hardwaretypen für dedizierte Hosts variieren je nach Region.The sizes and hardware types available for dedicated hosts vary by region. Weitere Informationen finden Sie unter Azure Dedicated Host – Preise.Refer to the host pricing page to learn more.

Erstellen einer HostgruppeCreate a host group

Eine Hostgruppe ist eine Ressource, die eine Sammlung dedizierter Hosts darstellt.A host group is a resource that represents a collection of dedicated hosts. Sie erstellen eine Hostgruppe in einer Region und einer Verfügbarkeitszone und fügen ihr Hosts hinzu.You create a host group in a region and an availability zone, and add hosts to it. Bei der Planung für Hochverfügbarkeit stehen zusätzliche Optionen zur Verfügung.When planning for high availability, there are additional options. Sie können eine oder beide der folgenden Optionen mit Ihren dedizierten Hosts verwenden:You can use one or both of the following options with your dedicated hosts:

  • Ausdehnen über mehrere Verfügbarkeitszonen.Span across multiple availability zones. In diesem Fall muss in jeder Zone, die Sie verwenden möchten, eine Hostgruppe vorhanden sein.In this case, you are required to have a host group in each of the zones you wish to use.
  • Ausdehnen über mehrere Fehlerdomänen, die physischen Racks zugeordnet sind.Span across multiple fault domains which are mapped to physical racks.

In beiden Fällen müssen Sie die Anzahl der Fehlerdomänen für Ihre Hostgruppe angeben.In either case, you are need to provide the fault domain count for your host group. Wenn Ihre Gruppe keine Fehlerdomänen umfassen soll, verwenden Sie die Anzahl 1 von Fehlerdomänen.If you do not want to span fault domains in your group, use a fault domain count of 1.

Sie können auch sowohl Verfügbarkeitszonen als auch Fehlerdomänen verwenden.You can also decide to use both availability zones and fault domains. In diesem Beispiel wird eine Hostgruppe in Zone 1 mit zwei Fehlerdomänen erstellt.This example creates a host group in zone 1, with 2 fault domains.

$rgName = "myDHResourceGroup"
$location = "EastUS"

New-AzResourceGroup -Location $location -Name $rgName
$hostGroup = New-AzHostGroup `
   -Location $location `
   -Name myHostGroup `
   -PlatformFaultDomain 2 `
   -ResourceGroupName $rgName `
   -Zone 1

Fügen Sie den Parameter -SupportAutomaticPlacement true hinzu, damit Ihre VMs und Skalierungsgruppeninstanzen automatisch auf Hosts innerhalb einer Hostgruppe platziert werden.Add the -SupportAutomaticPlacement true parameter to have your VMs and scale set instances automatically placed on hosts, within a host group. Weitere Informationen finden Sie unter Manuelle und automatische Platzierung im Vergleich.For more information, see Manual vs. automatic placement .

Erstellen eines HostsCreate a host

Nun erstellen Sie einen dedizierten Host in der Hostgruppe.Now let's create a dedicated host in the host group. Zusätzlich zu einem Namen müssen Sie die SKU für den Host angeben.In addition to a name for the host, you are required to provide the SKU for the host. Die Host-SKU erfasst die unterstützte VM-Serie sowie die Hardwaregenerierung für Ihren dedizierten Host.Host SKU captures the supported VM series as well as the hardware generation for your dedicated host.

Weitere Informationen zu den Host-SKUs und Preisen finden Sie unter Azure Dedicated Host – Preise.For more information about the host SKUs and pricing, see Azure Dedicated Host pricing.

Beim Festlegen der Anzahl der Fehlerdomänen für die Hostgruppe werden Sie aufgefordert, die Fehlerdomäne für den Host anzugeben.If you set a fault domain count for your host group, you will be asked to specify the fault domain for your host. In diesem Beispiel wird die Fehlerdomäne für den Host auf „1“ festgelegt.In this example, we set the fault domain for the host to 1.

$dHost = New-AzHost `
   -HostGroupName $hostGroup.Name `
   -Location $location -Name myHost `
   -ResourceGroupName $rgName `
   -Sku DSv3-Type1 `
   -AutoReplaceOnFailure 1 `
   -PlatformFaultDomain 1

Erstellen einer VMCreate a VM

Erstellen Sie einen virtuellen Computer auf dem dedizierten Host.Create a virtual machine on the dedicated host.

Wenn Sie beim Erstellen der Hostgruppe eine Verfügbarkeitszone angegeben haben, müssen Sie beim Erstellen des virtuellen Computers dieselbe Zone verwenden.If you specified an availability zone when creating your host group, you are required to use the same zone when creating the virtual machine. Da sich in diesem Beispiel die Hostgruppe in Zone 1 befindet, müssen wir die VM in Zone 1 erstellen.For this example, because our host group is in zone 1, we need to create the VM in zone 1.

$cred = Get-Credential
New-AzVM `
   -Credential $cred `
   -ResourceGroupName $rgName `
   -Location $location `
   -Name myVM `
   -HostId $dhost.Id `
   -Image Win2016Datacenter `
   -Zone 1 `
   -Size Standard_D4s_v3

Warnung

Wenn Sie einen virtuellen Computer auf einem Host erstellen, der nicht über ausreichende Ressourcen verfügt, wird der virtuelle Computer im Zustand „Fehler“ erstellt.If you create a virtual machine on a host which does not have enough resources, the virtual machine will be created in a FAILED state.

Überprüfen des Status des HostsCheck the status of the host

Sie können mit GetAzHost mit dem Parameter -InstanceView den Integritätsstatus des Hosts sowie die Anzahl von virtuellen Computern überprüfen, die Sie noch auf dem Host bereitstellen können.You can check the host health status and how many virtual machines you can still deploy to the host using GetAzHost with the -InstanceView parameter.

Get-AzHost `
   -ResourceGroupName $rgName `
   -Name myHost `
   -HostGroupName $hostGroup.Name `
   -InstanceView

Die Ausgabe sieht etwa wie folgt aus:The output will look similar to this:

ResourceGroupName      : myDHResourceGroup
PlatformFaultDomain    : 1
AutoReplaceOnFailure   : True
HostId                 : 12345678-1234-1234-abcd-abc123456789
ProvisioningTime       : 7/28/2019 5:31:01 PM
ProvisioningState      : Succeeded
InstanceView           : 
  AssetId              : abc45678-abcd-1234-abcd-123456789abc
  AvailableCapacity    : 
    AllocatableVMs[0]  : 
      VmSize           : Standard_D2s_v3
      Count            : 32
    AllocatableVMs[1]  : 
      VmSize           : Standard_D4s_v3
      Count            : 16
    AllocatableVMs[2]  : 
      VmSize           : Standard_D8s_v3
      Count            : 8
    AllocatableVMs[3]  : 
      VmSize           : Standard_D16s_v3
      Count            : 4
    AllocatableVMs[4]  : 
      VmSize           : Standard_D32-8s_v3
      Count            : 2
    AllocatableVMs[5]  : 
      VmSize           : Standard_D32-16s_v3
      Count            : 2
    AllocatableVMs[6]  : 
      VmSize           : Standard_D32s_v3
      Count            : 2
    AllocatableVMs[7]  : 
      VmSize           : Standard_D64-16s_v3
      Count            : 1
    AllocatableVMs[8]  : 
      VmSize           : Standard_D64-32s_v3
      Count            : 1
    AllocatableVMs[9]  : 
      VmSize           : Standard_D64s_v3
      Count            : 1
  Statuses[0]          : 
    Code               : ProvisioningState/succeeded
    Level              : Info
    DisplayStatus      : Provisioning succeeded
    Time               : 7/28/2019 5:31:01 PM
  Statuses[1]          : 
    Code               : HealthState/available
    Level              : Info
    DisplayStatus      : Host available
Sku                    : 
  Name                 : DSv3-Type1
Id                     : /subscriptions/10101010-1010-1010-1010-101010101010/re
sourceGroups/myDHResourceGroup/providers/Microsoft.Compute/hostGroups/myHostGroup/hosts
/myHost
Name                   : myHost
Location               : eastus
Tags                   : {}

Erstellen einer SkalierungsgruppeCreate a scale set

Wenn Sie eine Skalierungsgruppe bereitstellen, geben Sie die Hostgruppe an.When you deploy a scale set, you specify the host group.

New-AzVmss `
  -ResourceGroupName "myResourceGroup" `
  -Location "EastUS" `
  -VMScaleSetName "myDHScaleSet" `
  -VirtualNetworkName "myVnet" `
  -SubnetName "mySubnet" `
  -PublicIpAddressName "myPublicIPAddress" `
  -LoadBalancerName "myLoadBalancer" `
  -UpgradePolicyMode "Automatic"`
  -HostGroupId $hostGroup.Id

Wenn Sie den Host, auf dem die Skalierungsgruppe bereitgestellt werden soll, manuell auswählen möchten, fügen Sie --host und den Namen des Hosts hinzu.If you want to manually choose which host to deploy the scale set to, add --host and the name of the host.

Hinzufügen eines vorhandenen virtuellen ComputersAdd an existing VM

Sie können einem dedizierten Host eine VM hinzufügen. Diese muss allerdings zuerst beendet bzw. Ihre Zuordnung muss aufgehoben werden.You can add an existing VM to a dedicated host, but the VM must first be Stop\Deallocated. Vergewissern Sie sich vor dem Verschieben eines virtuellen Computers auf einen dedizierten Host, dass die VM-Konfiguration unterstützt wird:Before you move a VM to a dedicated host, make sure that the VM configuration is supported:

  • Die VM-Größe muss sich in der gleichen Größenfamilie befinden wie der dedizierte Host.The VM size must be in the same size family as the dedicated host. Wenn der dedizierte Host z. B. DSv3 ist, kann die VM-Größe Standard_D4s_v3, aber nicht Standard_A4_v2 sein.For example, if your dedicated host is DSv3, then the VM size could be Standard_D4s_v3, but it could not be a Standard_A4_v2.
  • Der virtuelle Computer muss sich in der gleichen Region befinden wie der dedizierte Host.The VM needs to be located in same region as the dedicated host.
  • Der virtuelle Computer darf nicht Teil einer Näherungsplatzierungsgruppe sein.The VM can't be part of a proximity placement group. Entfernen Sie den virtuellen Computer aus der Näherungsplatzierungsgruppe, bevor Sie ihn auf einen dedizierten Host verschieben.Remove the VM from the proximity placement group before moving it to a dedicated host. Weitere Informationen finden Sie unter Verschieben einer vorhandenen VM aus einer Näherungsplatzierungsgruppe.For more information, see Move a VM out of a proximity placement group
  • Der virtuelle Computer darf sich nicht in einer Verfügbarkeitsgruppe befinden.The VM can't be in an availability set.
  • Wenn sich der virtuelle Computer in einer Verfügbarkeitszone befindet, muss es sich dabei um die gleiche Verfügbarkeitszone handeln wie bei der Hostgruppe.If the VM is in an availability zone, it must be the same availability zone as the host group. Die Verfügbarkeitszoneneinstellungen für den virtuellen Computer und die Hostgruppe müssen identisch sein.The availability zone settings for the VM and the host group must match.

Ersetzen Sie die Werte der Variablen durch Ihre eigenen Informationen.Replace the values of the variables with your own information.

$vmRGName = "movetohost"
$vmName = "myVMtoHost"
$dhRGName = "myDHResourceGroup"
$dhGroupName = "myHostGroup"
$dhName = "myHost"

$myDH = Get-AzHost `
   -HostGroupName $dhGroupName `
   -ResourceGroupName $dhRGName `
   -Name $dhName
   
$myVM = Get-AzVM `
   -ResourceGroupName $vmRGName `
   -Name $vmName
   
$myVM.Host = New-Object Microsoft.Azure.Management.Compute.Models.SubResource

$myVM.Host.Id = "$myDH.Id"

Stop-AzVM `
   -ResourceGroupName $vmRGName `
   -Name $vmName -Force
   
Update-AzVM `
   -ResourceGroupName $vmRGName `
   -VM $myVM -Debug
   
Start-AzVM `
   -ResourceGroupName $vmRGName `
   -Name $vmName

BereinigungClean up

Ihre dedizierten Hosts werden Ihnen auch dann in Rechnung gestellt, wenn keine virtuellen Computer bereitgestellt sind.You are being charged for your dedicated hosts even when no virtual machines are deployed. Sie sollten, um Kosten zu sparen, alle Hosts löschen, die Sie zurzeit nicht verwenden.You should delete any hosts you are currently not using to save costs.

Ein Host kann nur gelöscht werden, wenn er nicht mehr von virtuellen Computern verwendet wird.You can only delete a host when there are no any longer virtual machines using it. Löschen Sie die VMs mit Remove-AzVM.Delete the VMs using Remove-AzVM.

Remove-AzVM -ResourceGroupName $rgName -Name myVM

Nachdem Sie die VMs gelöscht haben, können Sie den Host mithilfe von Remove-AzHost löschen.After deleting the VMs, you can delete the host using Remove-AzHost.

Remove-AzHost -ResourceGroupName $rgName -Name myHost

Wenn Sie alle Hosts gelöscht haben, können Sie die Hostgruppe mit Remove-AzHostGroup löschen.Once you have deleted all of your hosts, you may delete the host group using Remove-AzHostGroup.

Remove-AzHost -ResourceGroupName $rgName -Name myHost

Sie können mithilfe von Remove-AzResourceGroup auch die gesamte Ressourcengruppe mit einem einzigen Befehl löschen.You can also delete the entire resource group in a single command using Remove-AzResourceGroup. Dabei werden alle in der Gruppe erstellten Ressourcen gelöscht, einschließlich aller VMs, Hosts und Hostgruppen.This will delete all resources created in the group, including all of the VMs, hosts and host groups.

Remove-AzResourceGroup -Name $rgName

Nächste SchritteNext steps

  • Hier finden Sie eine Beispielvorlage, die sowohl Zonen als auch Fehlerdomänen für maximale Resilienz in einer Region verwendet.There is sample template, found here, that uses both zones and fault domains for maximum resiliency in a region.

  • Sie können dedizierte Hosts auch über das Azure-Portal bereitstellen.You can also deploy dedicated hosts using the Azure portal.