Tworzenie niestandardowej puli obrazów przy użyciu galerii zasobów obliczeniowych platformy Azure

Podczas tworzenia puli usługi Azure Batch przy użyciu konfiguracji maszyny wirtualnej należy określić obraz maszyny wirtualnej, który udostępnia system operacyjny dla każdego węzła obliczeniowego w puli. Możesz utworzyć pulę maszyn wirtualnych z obsługiwanym obrazem witryny Azure Marketplace lub utworzyć obraz niestandardowy z obrazem galerii obliczeń platformy Azure.

W przypadku korzystania z galerii obliczeń platformy Azure dla obrazu niestandardowego masz kontrolę nad typem i konfiguracją systemu operacyjnego, a także typem dysków danych. Udostępniony obraz może zawierać aplikacje i dane referencyjne, które staną się dostępne we wszystkich węzłach puli usługi Batch natychmiast po ich aprowizacji.

Możesz również mieć wiele wersji obrazu zgodnie z potrzebami dla danego środowiska. Gdy używasz wersji obrazu do utworzenia maszyny wirtualnej, wersja obrazu jest używana do tworzenia nowych dysków dla maszyny wirtualnej.

Użycie obrazu udostępnionego pozwala zaoszczędzić czas na przygotowaniu węzłów obliczeniowych puli do uruchomienia obciążenia usługi Batch. Po aprowizacji można użyć obrazu witryny Azure Marketplace i zainstalować oprogramowanie w każdym węźle obliczeniowym, ale użycie obrazu udostępnionego jest zwykle bardziej wydajne. Ponadto można określić wiele replik dla obrazu udostępnionego, aby podczas tworzenia pul z wieloma maszynami wirtualnymi (ponad 600 maszyn wirtualnych) zaoszczędzisz czas tworzenia puli.

Użycie obrazu udostępnionego skonfigurowanego dla danego scenariusza może zapewnić kilka korzyści:

  • Użyj tych samych obrazów w różnych regionach. Repliki obrazów udostępnionych można utworzyć w różnych regionach, aby wszystkie pule używały tego samego obrazu.
  • Konfigurowanie systemu operacyjnego. Konfigurację dysku systemu operacyjnego obrazu można dostosować.
  • Aplikacje przed zainstalowaniem. Wstępne instalowanie aplikacji na dysku systemu operacyjnego jest bardziej wydajne i mniej podatne na błędy niż instalowanie aplikacji po aprowizacji węzłów obliczeniowych przy użyciu zadania uruchamiania.
  • Skopiuj duże ilości danych raz. Utwórz część danych statycznych zarządzanego obrazu udostępnionego, kopiując je na dyski danych obrazu zarządzanego. Należy to zrobić tylko raz i udostępnić dane każdemu węzłowi puli.
  • Zwiększ pule do większych rozmiarów. W galerii zasobów obliczeniowych platformy Azure można tworzyć większe pule z dostosowanymi obrazami wraz z większą pulą udostępnionych replik obrazów.
  • Lepsza wydajność niż używanie tylko obrazu zarządzanego jako obrazu niestandardowego. W przypadku niestandardowej puli obrazów udostępnionych czas osiągnięcia stałego stanu wynosi do 25% szybciej, a opóźnienie bezczynności maszyny wirtualnej wynosi do 30%.
  • Przechowywanie wersji obrazów i grupowanie w celu łatwiejszego zarządzania. Definicja grupowania obrazów zawiera informacje o tym, dlaczego obraz został utworzony, do czego służy system operacyjny, oraz informacje o korzystaniu z obrazu. Grupowanie obrazów umożliwia łatwiejsze zarządzanie obrazami. Aby uzyskać więcej informacji, zobacz Definicje obrazów.

Wymagania wstępne

Uwaga

Wymagane jest uwierzytelnianie przy użyciu identyfikatora Entra firmy Microsoft. Jeśli używasz uwierzytelniania klucza współdzielonego, zostanie wyświetlony błąd uwierzytelniania.

  • obraz galerii obliczeniowej platformy Azure. Aby utworzyć obraz udostępniony, musisz mieć lub utworzyć zasób obrazu zarządzanego. Obraz powinien zostać utworzony na podstawie migawek dysku systemu operacyjnego maszyny wirtualnej i opcjonalnie dołączonych dysków danych.

Uwaga

Jeśli obraz udostępniony nie znajduje się w tej samej subskrypcji co konto usługi Batch, musisz zarejestrować dostawcę zasobów Microsoft.Batch dla tej subskrypcji. Dwie subskrypcje muszą znajdować się w tej samej dzierżawie firmy Microsoft Entra.

Obraz może znajdować się w innym regionie, o ile ma repliki w tym samym regionie co konto usługi Batch.

Jeśli używasz aplikacji Firmy Microsoft Entra do tworzenia niestandardowej puli obrazów z obrazem galerii obliczeń platformy Azure, ta aplikacja musi mieć przypisaną wbudowaną rolę platformy Azure, która zapewnia jej dostęp do obrazu udostępnionego. Dostęp ten można udzielić w witrynie Azure Portal, przechodząc do pozycji Obraz udostępniony, wybierając pozycję Kontrola dostępu (Zarządzanie dostępem i tożsamościami) i dodając przypisanie roli dla aplikacji.

Uwaga

Uprawnienia czytelnika dla obrazu z galerii obliczeniowej platformy Azure są nieodpowiednie, ponieważ wymagają wykonania następującej minimalnej akcji: Microsoft.Compute/disks/beginGetAccess/action w celu uzyskania odpowiedniego dostępu.

Przygotowywanie udostępnionego obrazu

Na platformie Azure można przygotować udostępniony obraz z obrazu zarządzanego, który można utworzyć na podstawie:

  • Migawki dysków systemu operacyjnego i danych maszyny wirtualnej platformy Azure
  • Uogólniona maszyna wirtualna platformy Azure z dyskami zarządzanymi
  • Uogólniony lokalny dysk VHD przekazany do chmury

Uwaga

Usługa Batch obsługuje tylko uogólnione obrazy udostępnione; Wyspecjalizowany obraz udostępniony nie może służyć do tworzenia puli.

W poniższych krokach pokazano, jak przygotować maszynę wirtualną, utworzyć migawkę i utworzyć obraz na podstawie migawki.

Przygotowywanie maszyny wirtualnej

Jeśli tworzysz nową maszynę wirtualną dla obrazu, użyj obrazu witryny Azure Marketplace obsługiwanego przez usługę Batch jako obrazu podstawowego dla obrazu zarządzanego.

Aby uzyskać pełną listę bieżących odwołań do obrazów witryny Azure Marketplace obsługiwanych przez usługę Azure Batch, użyj jednego z następujących interfejsów API, aby zwrócić listę obrazów maszyn wirtualnych z systemem Windows i Linux:

Postępuj zgodnie z poniższymi wytycznymi podczas tworzenia maszyn wirtualnych:

  • Upewnij się, że maszyna wirtualna została utworzona przy użyciu dysku zarządzanego. Jest to domyślne ustawienie magazynu podczas tworzenia maszyny wirtualnej.
  • Nie instaluj rozszerzeń platformy Azure, takich jak rozszerzenie niestandardowego skryptu, na maszynie wirtualnej. Jeśli obraz zawiera wstępnie zainstalowane rozszerzenie, platforma Azure może napotkać problemy podczas wdrażania puli usługi Batch.
  • W przypadku korzystania z dołączonych dysków danych należy zainstalować i sformatować dyski z maszyny wirtualnej, aby ich używać.
  • Upewnij się, że podstawowy obraz systemu operacyjnego używany jest domyślny dysk tymczasowy. Agent węzła usługi Batch oczekuje obecnie domyślnego dysku tymczasowego.
  • Upewnij się, że dysk systemu operacyjnego nie jest zaszyfrowany.
  • Po uruchomieniu maszyny wirtualnej połącz się z nią za pośrednictwem protokołu RDP (dla systemu Windows) lub SSH (dla systemu Linux). Zainstaluj wszelkie niezbędne oprogramowanie lub skopiuj żądane dane.
  • Aby szybciej aprowizować pulę, użyj ustawienia ReadWrite disk cache dla dysku systemu operacyjnego maszyny wirtualnej.

Aby udostępnić obraz niestandardowy, musisz utworzyć galerię zasobów obliczeniowych platformy Azure. Wybierz tę galerię podczas tworzenia obrazu w poniższych krokach. Aby dowiedzieć się, jak utworzyć galerię obliczeń platformy Azure dla obrazów, zobacz Tworzenie galerii obliczeń platformy Azure.

Tworzenie obrazu

Aby utworzyć obraz na podstawie maszyny wirtualnej w portalu, zobacz Przechwytywanie obrazu maszyny wirtualnej.

Aby utworzyć obraz przy użyciu źródła innego niż maszyna wirtualna, zobacz Tworzenie obrazu.

Uwaga

Jeśli obraz podstawowy zawiera informacje o planie zakupu, upewnij się, że obraz galerii zawiera identyczne informacje o planie zakupu jako obraz podstawowy. Aby uzyskać więcej informacji na temat tworzenia obrazu z planem zakupu, zobacz Dostarczanie informacji o planie zakupu w witrynie Azure Marketplace podczas tworzenia obrazów.

Jeśli obraz podstawowy nie zawiera informacji o planie zakupu, należy unikać określania informacji o planie zakupu dla obrazu galerii.

Aby uzyskać informacje o planie zakupu na temat tych obrazów witryny Marketplace, zobacz wskazówki dotyczące maszyn wirtualnych z systemem Linux lub Windows .

Użyj programu Azure PowerShell Get-AzGalleryImageDefinition lub az sig image-definition show interfejsu wiersza polecenia platformy Azure, aby sprawdzić, czy obraz galerii ma poprawne informacje o planie.

Tworzenie puli na podstawie obrazu udostępnionego przy użyciu interfejsu wiersza polecenia platformy Azure

Aby utworzyć pulę na podstawie obrazu udostępnionego przy użyciu interfejsu wiersza polecenia platformy Azure, użyj az batch pool create polecenia . Określ identyfikator udostępnionego --image obrazu w polu. Upewnij się, że typ systemu operacyjnego i jednostka SKU są zgodne z wersjami określonymi przez --node-agent-sku-id

Ważne

Identyfikator jednostki SKU agenta węzła musi być zgodny z wydawcą/ofertą/jednostkaMI SKU w celu uruchomienia węzła.

az batch pool create \
    --id mypool --vm-size Standard_A1_v2 \
    --target-dedicated-nodes 2 \
    --image "/subscriptions/{sub id}/resourceGroups/{resource group name}/providers/Microsoft.Compute/galleries/{gallery name}/images/{image definition name}/versions/{version id}" \
    --{node-agent-sku-id}

Tworzenie puli na podstawie obrazu udostępnionego przy użyciu języka C#

Alternatywnie można utworzyć pulę na podstawie obrazu udostępnionego przy użyciu zestawu SDK języka C#.

private static VirtualMachineConfiguration CreateVirtualMachineConfiguration(ImageReference imageReference)
{
    return new VirtualMachineConfiguration(
        imageReference: imageReference,
        nodeAgentSkuId: {});
}

private static ImageReference CreateImageReference()
{
    return new ImageReference(
        virtualMachineImageId: "/subscriptions/{sub id}/resourceGroups/{resource group name}/providers/Microsoft.Compute/galleries/{gallery name}/images/{image definition name}/versions/{version id}");
}

private static void CreateBatchPool(BatchClient batchClient, VirtualMachineConfiguration vmConfiguration)
{
    try
    {
        CloudPool pool = batchClient.PoolOperations.CreatePool(
            poolId: PoolId,
            targetDedicatedComputeNodes: PoolNodeCount,
            virtualMachineSize: PoolVMSize,
            virtualMachineConfiguration: vmConfiguration);

        pool.Commit();
    }
    ...
}

Tworzenie puli na podstawie obrazu udostępnionego przy użyciu języka Python

Pulę można również utworzyć na podstawie obrazu udostępnionego przy użyciu zestawu SDK języka Python:

# Import the required modules from the
# Azure Batch Client Library for Python
import azure.batch as batch
import azure.batch.models as batchmodels
from azure.common.credentials import ServicePrincipalCredentials

# Specify Batch account and service principal account credentials
account = "{batch-account-name}"
batch_url = "{batch-account-url}"
ad_client_id = "{sp-client-id}"
ad_tenant = "{tenant-id}"
ad_secret = "{sp-secret}"

# Pool settings
pool_id = "LinuxNodesSamplePoolPython"
vm_size = "STANDARD_D2_V3"
node_count = 1

# Initialize the Batch client with Azure AD authentication
creds = ServicePrincipalCredentials(
    client_id=ad_client_id,
    secret=ad_secret,
    tenant=ad_tenant,
    resource="https://batch.core.windows.net/"
)
client = batch.BatchServiceClient(creds, batch_url)

# Configure the start task for the pool
start_task = batchmodels.StartTask(
    command_line="printenv AZ_BATCH_NODE_STARTUP_DIR"
)
start_task.run_elevated = True

# Create an ImageReference which specifies the image from
# Azure Compute Gallery to install on the nodes.
ir = batchmodels.ImageReference(
    virtual_machine_image_id="/subscriptions/{sub id}/resourceGroups/{resource group name}/providers/Microsoft.Compute/galleries/{gallery name}/images/{image definition name}/versions/{version id}"
)

# Create the VirtualMachineConfiguration, specifying
# the VM image reference and the Batch node agent to
# be installed on the node.
vmc = batchmodels.VirtualMachineConfiguration(
    image_reference=ir,
    {node_agent_sku_id}
)

# Create the unbound pool
new_pool = batchmodels.PoolAddParameter(
    id=pool_id,
    vm_size=vm_size,
    target_dedicated_nodes=node_count,
    virtual_machine_configuration=vmc,
    start_task=start_task
)

# Create pool in the Batch service
client.pool.add(new_pool)

Tworzenie puli na podstawie obrazu udostępnionego lub obrazu niestandardowego przy użyciu witryny Azure Portal

Wykonaj poniższe kroki, aby utworzyć pulę na podstawie obrazu udostępnionego w witrynie Azure Portal.

  1. Otwórz portal Azure Portal.
  2. Przejdź do pozycji Konta usługi Batch i wybierz swoje konto.
  3. Wybierz pozycję Pule , a następnie pozycję Dodaj , aby utworzyć nową pulę.
  4. W sekcji Typ obrazu wybierz pozycję Galeria obliczeń platformy Azure.
  5. Uzupełnij pozostałe sekcje informacjami na temat obrazu zarządzanego.
  6. Wybierz przycisk OK.
  7. Po przydzieleniu węzła użyj Połączenie, aby wygenerować użytkownika i plik RDP dla systemu Windows LUB użyć protokołu SSH dla systemu Linux, aby zalogować się do przydzielonego węzła i zweryfikować.

Utwórz pulę na podstawie obrazu udostępnionego w portalu.

Zagadnienia dotyczące dużych pul

Jeśli planujesz utworzyć pulę z setkami lub tysiącami maszyn wirtualnych lub więcej przy użyciu udostępnionego obrazu, skorzystaj z poniższych wskazówek.

  • Numery replik z galerii obliczeń platformy Azure. Dla każdej puli z maksymalnie 300 wystąpieniami zalecamy zachowanie co najmniej jednej repliki. Jeśli na przykład tworzysz pulę z 3000 maszynami wirtualnymi, zachowaj co najmniej 10 replik obrazu. Zawsze zalecamy utrzymanie większej liczby replik niż minimalne wymagania w celu uzyskania lepszej wydajności.

  • Zmień rozmiar limitu czasu. Jeśli pula zawiera stałą liczbę węzłów (jeśli nie zostanie ona automatycznie skalowana), zwiększ resizeTimeout właściwość puli w zależności od rozmiaru puli. W przypadku każdej 1000 maszyn wirtualnych zalecany limit czasu zmiany rozmiaru wynosi co najmniej 15 minut. Na przykład zalecany limit czasu zmiany rozmiaru puli z 2000 maszynami wirtualnymi wynosi co najmniej 30 minut.

Następne kroki

  • Aby zapoznać się ze szczegółowym omówieniem usługi Batch, zobacz Przepływ pracy i zasoby usługi Batch.
  • Dowiedz się więcej o galerii zasobów obliczeniowych platformy Azure.