Notatka
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Dotyczy: ✔️ maszyny wirtualne z systemem Windows
Maszyna wirtualna platformy Azure wymaga kilku zasobów pomocniczych platformy Azure. W tym artykule opisano tworzenie i usuwanie zasobów maszyn wirtualnych oraz zarządzanie nimi przy użyciu języka Java. Nauczysz się, jak:
- Tworzenie projektu Maven
- Dodawanie zależności
- Utwórz poświadczenia
- Tworzenie zasobów
- Wykonywanie zadań zarządzania
- Usuwanie zasobów
- Uruchamianie aplikacji
Wykonanie tych kroków zajmuje około 20 minut.
Tworzenie projektu Maven
Jeśli jeszcze tego nie zrobiono, zainstaluj środowisko Java.
Zainstaluj narzędzie Maven.
Utwórz nowy folder i projekt:
mkdir java-azure-test cd java-azure-test mvn archetype:generate -DgroupId=com.fabrikam -DartifactId=testAzureApp -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false
Dodawanie zależności
W folderze
testAzureAppotwórz plikpom.xmli dodaj konfigurację kompilacji do <projektu> aby umożliwić kompilowanie aplikacji:<build> <plugins> <plugin> <groupId>org.codehaus.mojo</groupId> <artifactId>exec-maven-plugin</artifactId> <configuration> <mainClass>com.fabrikam.testAzureApp.App</mainClass> </configuration> </plugin> </plugins> </build>Dodaj zależności wymagane do uzyskania dostępu do zestawu Azure Java SDK.
<dependency> <groupId>com.azure</groupId> <artifactId>azure-identity</artifactId> <version>1.3.6</version> </dependency> <dependency> <groupId>com.azure.resourcemanager</groupId> <artifactId>azure-resourcemanager</artifactId> <version>2.8.0</version> </dependency>Zapisz plik.
Konfigurowanie uwierzytelniania
Dowiedz się, jak skonfigurować uwierzytelnianie.
Tworzenie klienta zarządzania
App.javaOtwórz plik w obszarzesrc\main\java\com\fabrikami upewnij się, że ta instrukcja pakietu znajduje się u góry:package com.fabrikam.testAzureApp;Tworzenie AzureResourceManager:
TokenCredential credential = new EnvironmentCredentialBuilder() .authorityHost(AzureAuthorityHosts.AZURE_PUBLIC_CLOUD) .build(); // Please finish 'Set up authentication' step first to set the four environment variables: AZURE_SUBSCRIPTION_ID, AZURE_CLIENT_ID, AZURE_CLIENT_SECRET, AZURE_TENANT_ID AzureProfile profile = new AzureProfile(AzureEnvironment.AZURE); AzureResourceManager azureResourceManager = AzureResourceManager.configure() .withLogLevel(HttpLogDetailLevel.BASIC) .authenticate(credential, profile) .withDefaultSubscription();
Tworzenie zasobów
Tworzenie grupy zasobów
Wszystkie zasoby muszą znajdować się w grupie zasobów.
Aby określić wartości aplikacji i utworzyć grupę zasobów, dodaj ten kod do bloku try w metodzie main:
System.out.println("Creating resource group...");
ResourceGroup resourceGroup = azure.resourceGroups()
.define("myResourceGroup")
.withRegion(Region.US_EAST)
.create();
Tworzenie zestawu dostępności
Zestawy dostępności ułatwiają konserwację maszyn wirtualnych używanych przez aplikację.
Aby utworzyć zestaw dostępności, dodaj ten kod do bloku try w metodzie main:
System.out.println("Creating availability set...");
AvailabilitySet availabilitySet = azure.availabilitySets()
.define("myAvailabilitySet")
.withRegion(Region.US_EAST)
.withExistingResourceGroup("myResourceGroup")
.create();
Tworzenie publicznego adresu IP
Publiczny adres IP jest wymagany do komunikowania się z maszyną wirtualną.
Aby utworzyć publiczny adres IP maszyny wirtualnej, dodaj ten kod do bloku try w metodzie main:
System.out.println("Creating public IP address...");
PublicIpAddress publicIPAddress = azure.publicIpAddresses()
.define("myPublicIP")
.withRegion(Region.US_EAST)
.withExistingResourceGroup("myResourceGroup")
.withDynamicIP()
.create();
Tworzenie sieci wirtualnej
Maszyna wirtualna musi znajdować się w podsieci sieci wirtualnej.
Aby utworzyć podsieć i sieć wirtualną, dodaj ten kod do bloku try w metodzie main:
System.out.println("Creating virtual network...");
Network network = azure.networks()
.define("myVN")
.withRegion(Region.US_EAST)
.withExistingResourceGroup("myResourceGroup")
.withAddressSpace("10.0.0.0/16")
.withSubnet("mySubnet", "10.0.0.0/24")
.create();
Tworzenie interfejsu sieciowego
Maszyna wirtualna wymaga interfejsu sieciowego do komunikacji w sieci wirtualnej.
Aby utworzyć interfejs sieciowy, dodaj ten kod do bloku try w metodzie main:
System.out.println("Creating network interface...");
NetworkInterface networkInterface = azure.networkInterfaces()
.define("myNIC")
.withRegion(Region.US_EAST)
.withExistingResourceGroup("myResourceGroup")
.withExistingPrimaryNetwork(network)
.withSubnet("mySubnet")
.withPrimaryPrivateIPAddressDynamic()
.withExistingPrimaryPublicIPAddress(publicIPAddress)
.create();
Tworzenie maszyny wirtualnej
Po utworzeniu wszystkich zasobów pomocniczych możesz utworzyć maszynę wirtualną.
Aby utworzyć maszynę wirtualną, dodaj ten kod do bloku try w metodzie main:
System.out.println("Creating virtual machine...");
VirtualMachine virtualMachine = azure.virtualMachines()
.define("myVM")
.withRegion(Region.US_EAST)
.withExistingResourceGroup("myResourceGroup")
.withExistingPrimaryNetworkInterface(networkInterface)
.withLatestWindowsImage("MicrosoftWindowsServer", "WindowsServer", "2012-R2-Datacenter")
.withAdminUsername("azureuser")
.withAdminPassword("Azure12345678")
.withComputerName("myVM")
.withExistingAvailabilitySet(availabilitySet)
.withSize("Standard_DS1")
.create();
Scanner input = new Scanner(System.in);
System.out.println("Press enter to get information about the VM...");
input.nextLine();
Uwaga
W tym samouczku zostanie utworzona maszyna wirtualna z uruchomioną wersją systemu operacyjnego Windows Server. Aby dowiedzieć się więcej na temat wybierania innych obrazów, zobacz Navigate and select Azure virtual machine images with Windows PowerShell and the Azure CLI (Nawigowanie i wybieranie obrazów maszyn wirtualnych platformy Azure przy użyciu programu Windows PowerShell i interfejsu wiersza polecenia platformy Azure).
Jeśli chcesz użyć istniejącego dysku zamiast obrazu witryny Marketplace, użyj tego kodu:
Disk managedDisk = azure.disks().define("myosdisk")
.withRegion(Region.US_EAST)
.withExistingResourceGroup("myResourceGroup")
.withWindowsFromVhd("https://mystorage.blob.core.windows.net/vhds/myosdisk.vhd")
.withStorageAccountName("mystorage")
.withSizeInGB(128)
.withSku(DiskSkuTypes.PREMIUM_LRS)
.create();
azure.virtualMachines().define("myVM")
.withRegion(Region.US_EAST)
.withExistingResourceGroup("myResourceGroup")
.withExistingPrimaryNetworkInterface(networkInterface)
.withSpecializedOSDisk(managedDisk, OperatingSystemTypes.WINDOWS)
.withExistingAvailabilitySet(availabilitySet)
.withSize(VirtualMachineSizeTypes.STANDARD_DS1)
.create();
Wykonywanie zadań zarządzania
W trakcie cyklu życia maszyny wirtualnej można uruchamiać zadania zarządzania, takie jak uruchamianie, zatrzymywanie lub usuwanie maszyny wirtualnej. Ponadto możesz utworzyć kod w celu zautomatyzowania powtarzających się lub złożonych zadań.
Jeśli musisz zrobić cokolwiek z maszyną wirtualną, najpierw uzyskaj jej instancję. Dodaj ten kod do bloku try metody main:
VirtualMachine vm = azure.virtualMachines().getByResourceGroup("myResourceGroup", "myVM");
Uzyskiwanie informacji o maszynie wirtualnej
Aby uzyskać informacje o maszynie wirtualnej, dodaj ten kod do bloku try w metodzie main:
System.out.println("hardwareProfile");
System.out.println(" vmSize: " + vm.size());
System.out.println("storageProfile");
System.out.println(" imageReference");
System.out.println(" publisher: " + vm.storageProfile().imageReference().publisher());
System.out.println(" offer: " + vm.storageProfile().imageReference().offer());
System.out.println(" sku: " + vm.storageProfile().imageReference().sku());
System.out.println(" version: " + vm.storageProfile().imageReference().version());
System.out.println(" osDisk");
System.out.println(" osType: " + vm.storageProfile().osDisk().osType());
System.out.println(" name: " + vm.storageProfile().osDisk().name());
System.out.println(" createOption: " + vm.storageProfile().osDisk().createOption());
System.out.println(" caching: " + vm.storageProfile().osDisk().caching());
System.out.println("osProfile");
System.out.println(" computerName: " + vm.osProfile().computerName());
System.out.println(" adminUserName: " + vm.osProfile().adminUsername());
System.out.println(" provisionVMAgent: " + vm.osProfile().windowsConfiguration().provisionVMAgent());
System.out.println(
" enableAutomaticUpdates: " + vm.osProfile().windowsConfiguration().enableAutomaticUpdates());
System.out.println("networkProfile");
System.out.println(" networkInterface: " + vm.primaryNetworkInterfaceId());
System.out.println("vmAgent");
System.out.println(" vmAgentVersion: " + vm.instanceView().vmAgent().vmAgentVersion());
System.out.println(" statuses");
for (InstanceViewStatus status : vm.instanceView().vmAgent().statuses()) {
System.out.println(" code: " + status.code());
System.out.println(" displayStatus: " + status.displayStatus());
System.out.println(" message: " + status.message());
System.out.println(" time: " + status.time());
}
System.out.println("disks");
for (DiskInstanceView disk : vm.instanceView().disks()) {
System.out.println(" name: " + disk.name());
System.out.println(" statuses");
for (InstanceViewStatus status : disk.statuses()) {
System.out.println(" code: " + status.code());
System.out.println(" displayStatus: " + status.displayStatus());
System.out.println(" time: " + status.time());
}
}
System.out.println("VM general status");
System.out.println(" provisioningStatus: " + vm.provisioningState());
System.out.println(" id: " + vm.id());
System.out.println(" name: " + vm.name());
System.out.println(" type: " + vm.type());
System.out.println("VM instance status");
for (InstanceViewStatus status : vm.instanceView().statuses()) {
System.out.println(" code: " + status.code());
System.out.println(" displayStatus: " + status.displayStatus());
}
System.out.println("Press enter to continue...");
input.nextLine();
Zatrzymaj maszynę wirtualną
Możesz zatrzymać maszynę wirtualną i zachować wszystkie jej ustawienia, ale nadal będą naliczane opłaty, lub możesz zatrzymać maszynę wirtualną i zdealokować ją. Gdy maszyna wirtualna zostanie zwolniona, wszystkie skojarzone z nią zasoby również zostaną zwolnione i zakończy się naliczanie opłat.
Aby zatrzymać maszynę wirtualną bez dezasocjowania, dodaj ten kod do bloku try w metodzie main:
System.out.println("Stopping vm...");
vm.powerOff();
System.out.println("Press enter to continue...");
input.nextLine();
Jeśli chcesz cofnąć przydział maszyny wirtualnej, zmień wywołanie usługi PowerOff na następujący kod:
vm.deallocate();
Uruchamianie maszyny wirtualnej
Aby uruchomić maszynę wirtualną, dodaj ten kod do bloku try w metodzie main:
System.out.println("Starting vm...");
vm.start();
System.out.println("Press enter to continue...");
input.nextLine();
Zmiana rozmiaru maszyny wirtualnej
Podczas podejmowania decyzji o rozmiarze maszyny wirtualnej należy wziąć pod uwagę wiele aspektów wdrażania. Aby uzyskać więcej informacji, zobacz Rozmiary maszyn wirtualnych.
Aby zmienić rozmiar maszyny wirtualnej, dodaj ten kod do bloku try w metodzie main:
System.out.println("Resizing vm...");
vm.update()
.withSize(VirtualMachineSizeTypes.STANDARD_DS2)
.apply();
System.out.println("Press enter to continue...");
input.nextLine();
Dodawanie dysku danych do maszyny wirtualnej
Aby dodać dysk danych do maszyny wirtualnej o rozmiarze 2 GB, ma numer LUN 0 i typ buforowania ReadWrite, dodaj ten kod do bloku try w metodzie main:
System.out.println("Adding data disk...");
vm.update()
.withNewDataDisk(2, 0, CachingTypes.READ_WRITE)
.apply();
System.out.println("Press enter to delete resources...");
input.nextLine();
Usuwanie zasobów
Ponieważ opłaty są naliczane za zasoby używane na platformie Azure, zawsze dobrym rozwiązaniem jest usunięcie zasobów, które nie są już potrzebne. Jeśli chcesz usunąć maszyny wirtualne i wszystkie zasoby pomocnicze, wystarczy usunąć grupę zasobów.
Aby usunąć grupę zasobów, dodaj ten kod do bloku try w metodzie main:
System.out.println("Deleting resources..."); azure.resourceGroups().deleteByName("myResourceGroup");Zapisz plik App.java.
Uruchamianie aplikacji
Uruchomienie tej aplikacji konsolowej powinno potrwać około pięciu minut od początku do końca.
Aby uruchomić aplikację, użyj tego polecenia narzędzia Maven:
mvn compile exec:javaZanim naciśniesz Enter aby rozpocząć usuwanie zasobów, możesz poświęcić kilka minut na zweryfikowanie tworzenia zasobów w portalu Azure. Kliknij stan wdrożenia, aby wyświetlić informacje o wdrożeniu.
Następne kroki
- Dowiedz się więcej o korzystaniu z bibliotek platformy Azure dla języka Java.