Tworzenie maszyny wirtualnej z systemem Windows z wieloma kartami sieciowymi i zarządzanie nimi

Dotyczy: ✔️ Maszyny wirtualne z systemem Windows — elastyczne zestawy ✔️ skalowania

Maszyny wirtualne na platformie Azure mogą mieć dołączone wiele wirtualnych kart sieciowych. Typowym scenariuszem jest posiadanie różnych podsieci na potrzeby łączności frontonu i zaplecza. Można skojarzyć wiele kart sieciowych na maszynie wirtualnej z wieloma podsieciami, ale wszystkie te podsieci muszą znajdować się w tej samej sieci wirtualnej (vNet). W tym artykule szczegółowo opisano sposób tworzenia maszyny wirtualnej z dołączonymi wieloma kartami sieciowymi. Dowiesz się również, jak dodawać lub usuwać karty sieciowe z istniejącej maszyny wirtualnej. Różne rozmiary maszyn wirtualnych obsługują różną liczbę kart sieciowych, więc odpowiednio rozmieścić maszynę wirtualną.

Uwaga

Jeśli w scenariuszu nie jest wymaganych wiele podsieci, korzystanie z wielu konfiguracji adresów IP na jednej karcie sieciowej może być prostsze. Instrukcje dotyczące tej konfiguracji można znaleźć tutaj.

Wymagania wstępne

W poniższych przykładach zastąp przykładowe nazwy parametrów własnymi wartościami. Przykładowe nazwy parametrów obejmują myResourceGroup, myVnet i myVM.

Tworzenie maszyny wirtualnej z wieloma kartami sieciowymi

Najpierw utwórz grupę zasobów. Poniższy przykład tworzy grupę zasobów o nazwie myResourceGroup w lokalizacji EastUs :

New-AzResourceGroup -Name "myResourceGroup" -Location "EastUS"

Tworzenie sieci wirtualnej i podsieci

Typowym scenariuszem jest, aby sieć wirtualna miała co najmniej dwie podsieci. Jedna podsieć może być dla ruchu frontonu, a druga dla ruchu zaplecza. Aby nawiązać połączenie z obiema podsieciami, użyj wielu kart sieciowych na maszynie wirtualnej.

  1. Zdefiniuj dwie podsieci sieci wirtualnej za pomocą polecenia New-AzVirtualNetworkSubnetConfig. W poniższym przykładzie zdefiniowano podsieci dla podsieci mySubnetFrontEnd i mySubnetBackEnd:

    $mySubnetFrontEnd = New-AzVirtualNetworkSubnetConfig -Name "mySubnetFrontEnd" `
        -AddressPrefix "192.168.1.0/24"
    $mySubnetBackEnd = New-AzVirtualNetworkSubnetConfig -Name "mySubnetBackEnd" `
        -AddressPrefix "192.168.2.0/24"
    
  2. Utwórz sieć wirtualną i podsieci za pomocą polecenia New-AzVirtualNetwork. Poniższy przykład tworzy sieć wirtualną o nazwie myVnet:

    $myVnet = New-AzVirtualNetwork -ResourceGroupName "myResourceGroup" `
        -Location "EastUs" `
        -Name "myVnet" `
        -AddressPrefix "192.168.0.0/16" `
        -Subnet $mySubnetFrontEnd,$mySubnetBackEnd
    

Tworzenie wielu kart sieciowych

Utwórz dwie karty sieciowe przy użyciu polecenia New-AzNetworkInterface. Dołącz jedną kartę sieciową do podsieci frontonu i jedną kartę sieciową do podsieci zaplecza. Poniższy przykład tworzy karty sieciowe o nazwach myNic1 i myNic2:

$frontEnd = $myVnet.Subnets|?{$_.Name -eq 'mySubnetFrontEnd'}
$myNic1 = New-AzNetworkInterface -ResourceGroupName "myResourceGroup" `
    -Name "myNic1" `
    -Location "EastUs" `
    -SubnetId $frontEnd.Id

$backEnd = $myVnet.Subnets|?{$_.Name -eq 'mySubnetBackEnd'}
$myNic2 = New-AzNetworkInterface -ResourceGroupName "myResourceGroup" `
    -Name "myNic2" `
    -Location "EastUs" `
    -SubnetId $backEnd.Id

Zazwyczaj tworzysz również sieciową grupę zabezpieczeń , aby filtrować ruch sieciowy do maszyny wirtualnej i moduł równoważenia obciążenia w celu dystrybucji ruchu między wieloma maszynami wirtualnymi.

Tworzenie maszyny wirtualnej

Teraz zacznij kompilować konfigurację maszyny wirtualnej. Każdy rozmiar maszyny wirtualnej ma limit całkowitej liczby kart sieciowych, które można dodać do maszyny wirtualnej. Aby uzyskać więcej informacji, zobacz Rozmiary maszyn wirtualnych z systemem Windows.

  1. Ustaw poświadczenia maszyny wirtualnej na zmienną w $cred następujący sposób:

    $cred = Get-Credential
    
  2. Zdefiniuj maszynę wirtualną za pomocą polecenia New-AzVMConfig. W poniższym przykładzie zdefiniowano maszynę wirtualną o nazwie myVM i użyto rozmiaru maszyny wirtualnej obsługującej więcej niż dwie karty sieciowe (Standard_DS3_v2):

    $vmConfig = New-AzVMConfig -VMName "myVM" -VMSize "Standard_DS3_v2"
    
  3. Utwórz pozostałą część konfiguracji maszyny wirtualnej za pomocą polecenia Set-AzVMOperatingSystem i Set-AzVMSourceImage. Poniższy przykład tworzy maszynę wirtualną Windows Server 2016:

    $vmConfig = Set-AzVMOperatingSystem -VM $vmConfig `
        -Windows `
        -ComputerName "myVM" `
        -Credential $cred `
        -ProvisionVMAgent `
        -EnableAutoUpdate
    $vmConfig = Set-AzVMSourceImage -VM $vmConfig `
        -PublisherName "MicrosoftWindowsServer" `
        -Offer "WindowsServer" `
        -Skus "2016-Datacenter" `
        -Version "latest"
    
  4. Dołącz dwie karty sieciowe utworzone wcześniej za pomocą polecenia Add-AzVMNetworkInterface:

    $vmConfig = Add-AzVMNetworkInterface -VM $vmConfig -Id $myNic1.Id -Primary
    $vmConfig = Add-AzVMNetworkInterface -VM $vmConfig -Id $myNic2.Id
    
  5. Utwórz maszynę wirtualną za pomocą polecenia New-AzVM:

    New-AzVM -VM $vmConfig -ResourceGroupName "myResourceGroup" -Location "EastUs"
    
  6. Dodaj trasy dla pomocniczych kart sieciowych do systemu operacyjnego, wykonując kroki opisane w temacie Konfigurowanie systemu operacyjnego dla wielu kart sieciowych.

Dodawanie karty sieciowej do istniejącej maszyny wirtualnej

Aby dodać wirtualną kartę sieciową do istniejącej maszyny wirtualnej, cofnij przydział maszyny wirtualnej, dodaj wirtualną kartę sieciową, a następnie uruchom maszynę wirtualną. Różne rozmiary maszyn wirtualnych obsługują różną liczbę kart sieciowych, więc odpowiednio rozmieścić maszynę wirtualną. W razie potrzeby można zmienić rozmiar maszyny wirtualnej.

  1. Cofanie przydziału maszyny wirtualnej za pomocą polecenia Stop-AzVM. Poniższy przykład cofa przydział maszyny wirtualnej o nazwie myVM w grupie myResourceGroup:

    Stop-AzVM -Name "myVM" -ResourceGroupName "myResourceGroup"
    
  2. Pobierz istniejącą konfigurację maszyny wirtualnej za pomocą polecenia Get-AzVm. Poniższy przykład pobiera informacje dotyczące maszyny wirtualnej o nazwie myVM w grupie myResourceGroup:

    $vm = Get-AzVm -Name "myVM" -ResourceGroupName "myResourceGroup"
    
  3. Poniższy przykład tworzy wirtualną kartę sieciową za pomocą polecenia New-AzNetworkInterface o nazwie myNic3 dołączonej do mySubnetBackEnd. Wirtualna karta sieciowa jest następnie dołączona do maszyny wirtualnej o nazwie myVM w grupie myResourceGroup za pomocą polecenia Add-AzVMNetworkInterface:

    # Get info for the back end subnet
    $myVnet = Get-AzVirtualNetwork -Name "myVnet" -ResourceGroupName "myResourceGroup"
    $backEnd = $myVnet.Subnets|?{$_.Name -eq 'mySubnetBackEnd'}
    
    # Create a virtual NIC
    $myNic3 = New-AzNetworkInterface -ResourceGroupName "myResourceGroup" `
        -Name "myNic3" `
        -Location "EastUs" `
        -SubnetId $backEnd.Id
    
    # Get the ID of the new virtual NIC and add to VM
    $nicId = (Get-AzNetworkInterface -ResourceGroupName "myResourceGroup" -Name "MyNic3").Id
    Add-AzVMNetworkInterface -VM $vm -Id $nicId | Update-AzVm -ResourceGroupName "myResourceGroup"
    

    Podstawowe wirtualne karty sieciowe

    Jedna z kart sieciowych na maszynie wirtualnej z wieloma kartami sieciowymi musi być podstawowa. Jeśli jedna z istniejących wirtualnych kart sieciowych na maszynie wirtualnej jest już ustawiona jako podstawowa, możesz pominąć ten krok. W poniższym przykładzie przyjęto założenie, że dwie wirtualne karty sieciowe są teraz obecne na maszynie wirtualnej i chcesz dodać pierwszą kartę sieciową ([0]) jako podstawową:

    # List existing NICs on the VM and find which one is primary
    $vm.NetworkProfile.NetworkInterfaces
    
    # Set NIC 0 to be primary
    $vm.NetworkProfile.NetworkInterfaces[0].Primary = $true
    $vm.NetworkProfile.NetworkInterfaces[1].Primary = $false
    
    # Update the VM state in Azure
    Update-AzVM -VM $vm -ResourceGroupName "myResourceGroup"
    
  4. Uruchom maszynę wirtualną za pomocą polecenia Start-AzVm:

    Start-AzVM -ResourceGroupName "myResourceGroup" -Name "myVM"
    
  5. Dodaj trasy dla pomocniczych kart sieciowych do systemu operacyjnego, wykonując kroki opisane w temacie Konfigurowanie systemu operacyjnego dla wielu kart sieciowych.

Usuwanie karty sieciowej z istniejącej maszyny wirtualnej

Aby usunąć wirtualną kartę sieciową z istniejącej maszyny wirtualnej, cofnij przydział maszyny wirtualnej, usuń wirtualną kartę sieciową, a następnie uruchom maszynę wirtualną.

  1. Cofanie przydziału maszyny wirtualnej za pomocą polecenia Stop-AzVM. Poniższy przykład cofa przydział maszyny wirtualnej o nazwie myVM w grupie myResourceGroup:

    Stop-AzVM -Name "myVM" -ResourceGroupName "myResourceGroup"
    
  2. Pobierz istniejącą konfigurację maszyny wirtualnej za pomocą polecenia Get-AzVm. Poniższy przykład pobiera informacje dotyczące maszyny wirtualnej o nazwie myVM w grupie myResourceGroup:

    $vm = Get-AzVm -Name "myVM" -ResourceGroupName "myResourceGroup"
    
  3. Uzyskaj informacje o usuwaniu karty sieciowej za pomocą polecenia Get-AzNetworkInterface. Poniższy przykład pobiera informacje o myNic3:

    # List existing NICs on the VM if you need to determine NIC name
    $vm.NetworkProfile.NetworkInterfaces
    
    $nicId = (Get-AzNetworkInterface -ResourceGroupName "myResourceGroup" -Name "myNic3").Id   
    
  4. Usuń kartę sieciową za pomocą polecenia Remove-AzVMNetworkInterface , a następnie zaktualizuj maszynę wirtualną za pomocą polecenia Update-AzVm. Poniższy przykład usuwa element myNic3 uzyskany w $nicId poprzednim kroku:

    Remove-AzVMNetworkInterface -VM $vm -NetworkInterfaceIDs $nicId | `
        Update-AzVm -ResourceGroupName "myResourceGroup"
    
  5. Uruchom maszynę wirtualną za pomocą polecenia Start-AzVm:

    Start-AzVM -Name "myVM" -ResourceGroupName "myResourceGroup"
    

Tworzenie wielu kart sieciowych przy użyciu szablonów

Szablony usługi Azure Resource Manager umożliwiają tworzenie wielu wystąpień zasobu podczas wdrażania, takich jak tworzenie wielu kart sieciowych. Resource Manager szablony używają deklaratywnych plików JSON do definiowania środowiska. Aby uzyskać więcej informacji, zobacz omówienie usługi Azure Resource Manager. Możesz użyć funkcji kopiowania , aby określić liczbę wystąpień do utworzenia:

"copy": {
    "name": "multiplenics",
    "count": "[parameters('count')]"
}

Aby uzyskać więcej informacji, zobacz tworzenie wielu wystąpień przy użyciu kopii.

Można również użyć copyIndex() funkcji , aby dołączyć liczbę do nazwy zasobu. Następnie możesz utworzyć myNic1, MyNic2 i tak dalej. Poniższy kod przedstawia przykład dołączania wartości indeksu:

"name": "[concat('myNic', copyIndex())]", 

Pełny przykład tworzenia wielu kart sieciowych można przeczytać przy użyciu szablonów Resource Manager.

Dodaj trasy dla pomocniczych kart sieciowych do systemu operacyjnego, wykonując kroki opisane w temacie Konfigurowanie systemu operacyjnego dla wielu kart sieciowych.

Konfigurowanie systemu operacyjnego gościa dla wielu kart sieciowych

Platforma Azure przypisuje bramę domyślną do pierwszego (podstawowego) interfejsu sieciowego dołączonego do maszyny wirtualnej. Platforma Azure domyślnie nie przypisuje domyślnej bramy do dodatkowych interfejsów sieciowych dołączonych do maszyny wirtualnej. Dlatego domyślnie nie można komunikować się z zasobami poza podsiecią, w której znajduje się dodatkowy interfejs sieciowy. Dodatkowe interfejsy sieciowe mogą jednak komunikować się z zasobami poza ich podsiecią, chociaż kroki umożliwiające komunikację różnią się w różnych systemach operacyjnych.

  1. W wierszu polecenia systemu Windows uruchom route print polecenie , które zwraca dane wyjściowe podobne do następujących danych wyjściowych dla maszyny wirtualnej z dwoma dołączonymi interfejsami sieciowymi:

    ===========================================================================
    Interface List
    3...00 0d 3a 10 92 ce ......Microsoft Hyper-V Network Adapter #3
    7...00 0d 3a 10 9b 2a ......Microsoft Hyper-V Network Adapter #4
    ===========================================================================
    

    W tym przykładzie Microsoft Hyper-V karta sieciowa #4 (interfejs 7) jest pomocniczym interfejsem sieciowym, który nie ma przypisanej bramy domyślnej.

  2. W wierszu polecenia uruchom ipconfig polecenie , aby zobaczyć, który adres IP jest przypisany do pomocniczego interfejsu sieciowego. W tym przykładzie 192.168.2.4 jest przypisany do interfejsu 7. Dla pomocniczego interfejsu sieciowego nie jest zwracany żaden domyślny adres bramy.

  3. Aby skierować cały ruch przeznaczony dla adresów spoza podsieci pomocniczego interfejsu sieciowego do bramy dla podsieci, uruchom następujące polecenie:

    route add -p 0.0.0.0 MASK 0.0.0.0 192.168.2.1 METRIC 5015 IF 7
    

    Adres bramy dla podsieci jest pierwszym adresem IP (kończącym się na .1) w zakresie adresów zdefiniowanym dla podsieci. Jeśli nie chcesz kierować całego ruchu poza podsieć, możesz dodać poszczególne trasy do określonych miejsc docelowych. Jeśli na przykład chcesz kierować ruch z pomocniczego interfejsu sieciowego do sieci 192.168.3.0, należy wprowadzić polecenie :

    route add -p 192.168.3.0 MASK 255.255.255.0 192.168.2.1 METRIC 5015 IF 7
    
  4. Aby potwierdzić pomyślną komunikację z zasobem w sieci 192.168.3.0, na przykład wprowadź następujące polecenie, aby wysłać polecenie ping 192.168.3.4 przy użyciu interfejsu 7 (192.168.2.4):

    ping 192.168.3.4 -S 192.168.2.4
    

    Może być konieczne otwarcie protokołu ICMP za pośrednictwem zapory systemu Windows urządzenia, które wysyłasz polecenie ping, za pomocą następującego polecenia:

    netsh advfirewall firewall add rule name=Allow-ping protocol=icmpv4 dir=in action=allow
    
  5. Aby potwierdzić, że dodana trasa znajduje się w tabeli tras, wprowadź route print polecenie , które zwraca dane wyjściowe podobne do następującego tekstu:

    ===========================================================================
    Active Routes:
    Network Destination        Netmask          Gateway       Interface  Metric
              0.0.0.0          0.0.0.0      192.168.1.1      192.168.1.4     15
              0.0.0.0          0.0.0.0      192.168.2.1      192.168.2.4   5015
    

    Trasa wyświetlana na liście 192.168.1.1 w obszarze Brama jest trasą, która jest domyślnie dostępna dla podstawowego interfejsu sieciowego. Trasa z 192.168.2.1 w obszarze Brama jest trasą dodaną.

Następne kroki

Przejrzyj rozmiary maszyn wirtualnych z systemem Windows podczas próby utworzenia maszyny wirtualnej z wieloma kartami sieciowymi. Zwróć uwagę na maksymalną liczbę kart sieciowych, które obsługuje każdy rozmiar maszyny wirtualnej.