Udostępnij przez


Wdrażanie aplikacji w węzłach obliczeniowych przy użyciu pakietów aplikacyjnych Batch

Pakiety aplikacji mogą uprościć kod w rozwiązaniu usługi Azure Batch i ułatwić zarządzanie aplikacjami uruchamianymi przez zadania. Za pomocą pakietów aplikacji można przekazywać wiele wersji uruchomionych zadań i zarządzać nimi, w tym ich plików pomocniczych. Następnie można automatycznie wdrożyć co najmniej jedną z tych aplikacji do węzłów obliczeniowych w swojej puli.

Interfejsy API do tworzenia i zarządzania pakietami aplikacji są częścią biblioteki Batch Management .NET. Interfejsy API do instalowania pakietów aplikacji na węźle obliczeniowym są częścią biblioteki Batch .NET. Porównywalne funkcje znajdują się w dostępnych interfejsach API usługi Batch dla innych języków programowania.

W tym artykule wyjaśniono, jak przekazywać pakiety aplikacji i zarządzać nimi w witrynie Azure Portal. Pokazano również, jak zainstalować je na węzłach obliczeniowych puli przy użyciu biblioteki Batch .NET.

Wymagania dotyczące pakietu aplikacji

Aby używać pakietów aplikacji, musisz połączyć konto usługi Azure Storage z kontem usługi Batch.

Istnieją ograniczenia dotyczące liczby aplikacji i pakietów aplikacji w ramach konta usługi Batch oraz maksymalnego rozmiaru pakietu aplikacji. Aby uzyskać więcej informacji, zobacz Limity i ograniczenia usługi Batch.

Uwaga

Pule usługi Batch utworzone przed 5 lipca 2017 r. nie obsługują pakietów aplikacji (chyba że zostały utworzone po 10 marca 2016 r. przy użyciu konfiguracji usług Cloud Services). Funkcja pakietów aplikacji opisana tutaj zastępuje funkcję Usługi Batch Apps dostępną w poprzednich wersjach usługi.

Omówienie aplikacji i pakietów aplikacji

W usłudze Azure Batch aplikacja odwołuje się do zestawu wersji plików binarnych, które można automatycznie pobrać do węzłów obliczeniowych w puli. Aplikacja zawiera co najmniej jeden pakiet aplikacji reprezentujący różne wersje aplikacji.

Każdy pakiet aplikacji jest plikiem .zip zawierającym pliki binarne aplikacji i wszelkie pliki pomocnicze. Obsługiwany jest tylko format .zip.

Diagram przedstawiający ogólny widok aplikacji i pakietów aplikacji.

Pakiety aplikacji można określić na poziomie puli lub zadania.

  • Pakiety aplikacji zbioru są wdrażane na każdym węźle zbioru. Aplikacje są wdrażane, gdy węzeł dołącza do puli oraz gdy jest ponownie uruchamiany lub ponownie obrazowany.

    Pakiety aplikacji puli są odpowiednie w przypadku, gdy wszystkie węzły w puli uruchamiają zadania. Podczas tworzenia puli można określić co najmniej jeden pakiet aplikacji do wdrożenia. Można również dodawać lub aktualizować pakiety istniejącej puli. Aby zainstalować nowy pakiet w istniejącej puli, należy ponownie uruchomić jego węzły.

  • Pakiety aplikacji zadań są wdrażane tylko w węźle obliczeniowym zaplanowanym do uruchomienia zadania tuż przed uruchomieniem wiersza polecenia zadania. Jeśli określony pakiet aplikacji i wersja są już w węźle, nie jest ponownie wdrażany i używany jest istniejący pakiet.

    Pakiety aplikacji zadań są przydatne w środowiskach puli udostępnionej, w których różne zadania są uruchamiane w jednej puli, a pula nie jest usuwana po zakończeniu zadania. Jeśli twoja praca ma mniej zadań niż jest węzłów w puli, pakiety aplikacyjne zadań mogą zminimalizować transfer danych, ponieważ aplikacja jest wdrażana tylko na węzłach, które uruchamiają zadania.

    Inne scenariusze, które mogą korzystać z pakietów aplikacji zadań, to zadania, które uruchamiają dużą aplikację, ale tylko dla kilku zadań. Na przykład aplikacje zadań mogą być przydatne w przypadku intensywnego etapu przetwarzania wstępnego lub zadania scalania.

W przypadku pakietów aplikacji zadanie uruchamiania puli nie musi określać długiej listy pojedynczych plików zasobów do zainstalowania w węzłach. Nie musisz ręcznie zarządzać wieloma wersjami plików aplikacji w usłudze Azure Storage ani w węzłach. Nie musisz się martwić o generowanie adresów URL z sygnaturą dostępu współdzielonego, aby zapewnić dostęp do plików w swoim koncie usługi Azure Storage. Usługa Batch działa w tle z usługą Azure Storage, aby przechowywać pakiety aplikacji i wdrażać je w węzłach obliczeniowych.

Uwaga

Całkowity rozmiar zadania początkowego musi być mniejszy lub równy 32 768 znaków, w tym plików zasobów i zmiennych środowiskowych. Jeśli zadanie uruchamiania przekroczy ten limit, użycie pakietów aplikacji jest inną opcją. Możesz również utworzyć plik .zip zawierający pliki zasobów, przekazać plik jako obiekt blob do usługi Azure Storage, a następnie rozpakuj go z wiersza polecenia zadania uruchamiania.

Przekazywanie aplikacji i zarządzanie nimi

Możesz użyć portalu Azure lub interfejsów API zarządzania usługą Batch, aby zarządzać pakietami aplikacji w koncie Batch. W poniższych sekcjach wyjaśniono, jak połączyć konto magazynu, dowiesz się, jak dodawać aplikacje i pakiety aplikacji oraz zarządzać nimi w witrynie Azure Portal.

Uwaga

Chociaż można zdefiniować wartości aplikacji w zasobie Microsoft.Batch/batchAccountsszablonu usługi ARM, obecnie nie można użyć szablonu usługi ARM do przekazania pakietów aplikacji do użycia na koncie usługi Batch. Musisz załadować je do połączonego konta magazynu zgodnie z opisem w Dodaj nową aplikację.

Aby korzystać z pakietów aplikacji, musisz połączyć konto usługi Azure Storage z kontem usługi Batch. Usługa Batch używa skojarzonego konta magazynu do przechowywania pakietów aplikacji. W idealnym przypadku należy utworzyć konto magazynu przeznaczone specjalnie do użycia z kontem usługi Batch.

Jeśli konto magazynu nie zostało jeszcze skonfigurowane, w portalu Azure zostanie wyświetlone ostrzeżenie podczas pierwszego wybrania pozycji Aplikacje z lewego menu nawigacyjnego w koncie usługi Batch. Aby połączyć konto pamięci masowej z kontem usługi Batch:

  1. Wybierz okno Ostrzeżenie z komunikatem "Brak konta pamięci masowej skonfigurowanego dla tego konta wsadowego".
  2. Następnie wybierz Konto magazynowania... na następnej stronie.
  3. Wybierz link Wybierz konto magazynu w sekcji Informacje o koncie magazynu .
  4. Wybierz konto magazynu, którego chcesz użyć dla tego konta wsadowego, z listy w okienku Wybierz konto magazynu.
  5. Następnie wybierz pozycję Zapisz w lewym górnym rogu strony.

Po połączeniu tych dwóch kont, usługa Batch może automatycznie rozmieszczać pakiety przechowywane na połączonym koncie magazynowym do węzłów obliczeniowych.

Ważne

Nie można używać pakietów aplikacji z kontami usługi Azure Storage skonfigurowanymi z regułami zapory lub hierarchiczną przestrzenią nazw ustawioną na wartość Włączone.

Usługa Batch korzysta z chmury Azure Storage do przechowywania pakietów aplikacji jako obiektów blob typu blokowego. Opłaty są naliczane normalnie dla danych blokowych obiektów blob, a rozmiar każdego pakietu nie może przekraczać maksymalnego rozmiaru blokowych obiektów blob. Aby uzyskać więcej informacji, zobacz Cele skalowalności i wydajności dla usługi Blob Storage. Aby zminimalizować koszty, należy wziąć pod uwagę rozmiar i liczbę pakietów aplikacji oraz okresowo usuwać przestarzałe pakiety.

Dodawanie nowej aplikacji

Aby utworzyć nową aplikację, należy dodać pakiet aplikacji i określić unikatowy identyfikator aplikacji.

Na koncie usługi Batch wybierz pozycję Aplikacje z menu nawigacji po lewej stronie, a następnie wybierz pozycję Dodaj.

Zrzut ekranu przedstawiający proces tworzenia nowej aplikacji w witrynie Azure Portal.

Wprowadź następujące informacje:

  • Identyfikator aplikacji: identyfikator nowej aplikacji.
  • Wersja": wersja pakietu aplikacji, który przekazujesz.
  • Pakiet aplikacji: plik .zip zawierający pliki binarne aplikacji i pliki pomocnicze wymagane do uruchomienia aplikacji.

Wprowadzony identyfikator aplikacji i wersja muszą spełniać następujące wymagania:

  • W węzłach systemu Windows identyfikator może zawierać dowolną kombinację znaków alfanumerycznych, łączników i podkreśleń. W węzłach systemu Linux dozwolone są tylko znaki alfanumeryczne i podkreślenia.
  • Nie może zawierać więcej niż 64 znaków.
  • Musi być unikatowa na koncie usługi Batch.
  • Identyfikatory zachowują oryginalną wielkość liter, ale są nieczułe na wielkość liter.

Gdy wszystko będzie gotowe, wybierz pozycję Prześlij. Po przekazaniu pliku .zip na konto usługi Azure Storage w portalu zostanie wyświetlone powiadomienie. W zależności od rozmiaru przekazywanego pliku i szybkości połączenia sieciowego ten proces może zająć trochę czasu.

Wyświetlanie bieżących aplikacji

Aby wyświetlić aplikacje na koncie usługi Batch, wybierz pozycję Aplikacje w menu nawigacji po lewej stronie.

Zrzut ekranu przedstawiający element menu Aplikacje w witrynie Azure Portal.

Wybranie tej opcji menu powoduje otwarcie okna Aplikacje . W tym oknie zostanie wyświetlony identyfikator każdej aplikacji na koncie oraz następujące właściwości:

  • Pakiety: liczba wersji skojarzonych z tą aplikacją.
  • Wersja domyślna: jeśli ma to zastosowanie, wersja aplikacji zainstalowana, jeśli podczas wdrażania aplikacji nie określono żadnej wersji.
  • Zezwalaj na aktualizacje: określa, czy aktualizacje pakietów i usunięcia są dozwolone.

Aby wyświetlić strukturę plików pakietu aplikacji w węźle obliczeniowym, przejdź do konta usługi Batch w witrynie Azure Portal. Wybierz pozycję Pule. Następnie wybierz pulę zawierającą węzeł obliczeniowy. Wybierz węzeł obliczeniowy, w którym zainstalowano pakiet aplikacji, i otwórz folder aplikacji .

Wyświetlanie szczegółów aplikacji

Aby wyświetlić szczegóły aplikacji, wybierz ją w oknie Aplikacje . Aplikację można skonfigurować, wybierając pozycję Ustawienia w menu nawigacji po lewej stronie.

  • Zezwalaj na aktualizacje: wskazuje, czy pakiety aplikacji można aktualizować, czy usuwać. Wartość domyślna to Tak. Jeśli ustawiono wartość Nie, nie można zaktualizować ani usunąć istniejących pakietów aplikacji, ale nadal można dodać nowe wersje pakietów aplikacji.
  • Wersja domyślna: domyślny pakiet aplikacji używany podczas wdrażania aplikacji, jeśli nie określono żadnej wersji.
  • Nazwa wyświetlana: przyjazna nazwa, która może być używana przez rozwiązanie usługi Batch podczas wyświetlania informacji o aplikacji. Na przykład ta nazwa może być używana w interfejsie użytkownika usługi, którą udostępniasz klientom za pośrednictwem usługi Batch.

Dodawanie nowego pakietu aplikacji

Aby dodać wersję pakietu aplikacji dla istniejącej aplikacji, wybierz aplikację na stronie Aplikacje konta usługi Batch. Następnie wybierz pozycję Dodaj.

Tak jak w przypadku nowej aplikacji, określ wersję nowego pakietu, przekaż plik .zip w polu Pakiet aplikacji , a następnie wybierz pozycję Prześlij.

Aktualizowanie lub usuwanie pakietu aplikacji

Aby zaktualizować lub usunąć istniejący pakiet aplikacji, wybierz aplikację na stronie Aplikacje konta usługi Batch. Wybierz wielokropek w wierszu pakietu aplikacji, który chcesz zmodyfikować. Następnie wybierz akcję, którą chcesz wykonać.

Zrzut ekranu przedstawiający opcje aktualizacji i usuwania pakietów aplikacji w witrynie Azure Portal.

Jeśli wybierzesz Aktualizuj, możesz załadować nowy plik .zip. Ten plik zastępuje poprzedni plik .zip, który przesłałeś dla tej wersji.

Jeśli wybierzesz pozycję Usuń, zostanie wyświetlony monit o potwierdzenie usunięcia tej wersji. Po wybraniu przycisku OK usługa Batch usunie plik .zip z konta usługi Azure Storage. Jeśli usuniesz domyślną wersję aplikacji, ustawienie Wersja domyślna zostanie usunięte dla tej aplikacji.

Instalowanie aplikacji w węzłach obliczeniowych

Wiesz już, jak zarządzać pakietami aplikacji w witrynie Azure Portal. Teraz możesz dowiedzieć się, jak wdrażać je w węzłach obliczeniowych i uruchamiać je za pomocą zadań usługi Batch.

Zainstaluj pakiety aplikacji w puli

Aby zainstalować pakiet aplikacji na wszystkich węzłach obliczeniowych w puli, określ co najmniej jedno odwołanie do pakietu aplikacji dla puli. Pakiety aplikacji, które określisz dla puli, są instalowane na każdym węźle obliczeniowym, który dołącza do puli oraz na każdym węźle, który jest ponownie uruchamiany lub ponownie obrazowany.

Na platformie .NET usługi Batch określ co najmniej jedną pulę CloudPool.ApplicationPackageReferences podczas tworzenia nowej puli lub korzystania z istniejącej puli. Klasa ApplicationPackageReference określa identyfikator aplikacji i wersję do zainstalowania w węzłach obliczeniowych puli.

// Create the unbound CloudPool
CloudPool myCloudPool =
    batchClient.PoolOperations.CreatePool(
        poolId: "myPool",
        targetDedicatedComputeNodes: 1,
        virtualMachineSize: "standard_d1_v2",
        VirtualMachineConfiguration: new VirtualMachineConfiguration(
            imageReference: new ImageReference(
                                publisher: "MicrosoftWindowsServer",
                                offer: "WindowsServer",
                                sku: "2019-datacenter-core",
                                version: "latest"),
            nodeAgentSkuId: "batch.node.windows amd64");

// Specify the application and version to install on the compute nodes
myCloudPool.ApplicationPackageReferences = new List<ApplicationPackageReference>
{
    new ApplicationPackageReference {
        ApplicationId = "litware",
        Version = "1.1001.2b" }
};

// Commit the pool so that it's created in the Batch service. As the nodes join
// the pool, the specified application package is installed on each.
await myCloudPool.CommitAsync();

Ważne

Jeśli wdrożenie pakietu aplikacji zakończy się niepowodzeniem, usługa Batch oznaczy węzeł jako bezużyteczny , a żadne zadania nie są zaplanowane do wykonania w tym węźle. W takim przypadku uruchom ponownie węzeł, aby ponownie zainicjować wdrożenie pakietu. Ponowne uruchomienie węzła umożliwia również ponowne planowanie zadań w węźle.

Instalowanie pakietów aplikacji zadań

Podobnie jak w przypadku puli, należy określić referencje do pakietu aplikacji dla zadania. Gdy zadanie zostanie zaplanowane do uruchomienia w węźle, pakiet zostanie pobrany i wyodrębniony tuż przed uruchomieniem wiersza polecenia zadania. Jeśli określony pakiet i wersja są już zainstalowane w węźle, pakiet nie jest pobierany i używany jest istniejący pakiet.

Aby zainstalować pakiet aplikacji zadań, skonfiguruj właściwość CloudTask.ApplicationPackageReferences zadania:

CloudTask task =
    new CloudTask(
        "litwaretask001",
        "cmd /c %AZ_BATCH_APP_PACKAGE_LITWARE%\\litware.exe -args -here");

task.ApplicationPackageReferences = new List<ApplicationPackageReference>
{
    new ApplicationPackageReference
    {
        ApplicationId = "litware",
        Version = "1.1001.2b"
    }
};

Wykonywanie zainstalowanych aplikacji

Pakiety określone dla puli lub zadania są pobierane i wyodrębniane do nazwanego katalogu wewnątrz AZ_BATCH_ROOT_DIR węzła. Usługa Batch tworzy również zmienną środowiskową zawierającą ścieżkę do nazwanego katalogu. Polecenia wiersza poleceń używają tej zmiennej środowiskowej podczas odnoszenia się do aplikacji na węźle.

W węzłach systemu Windows zmienna ma następujący format:

Windows:
AZ_BATCH_APP_PACKAGE_APPLICATIONID#version

W węzłach systemu Linux format jest nieco inny. Kropki (.), łączniki (-) i znaki numeru (#) są zamieniane na podkreślenia w zmiennej środowiskowej. Ponadto wielkość liter identyfikatora aplikacji jest zachowywana. Na przykład:

Linux:
AZ_BATCH_APP_PACKAGE_applicationid_version

APPLICATIONID i version są wartościami odpowiadającymi aplikacji i wersji pakietu określonej dla wdrożenia. Jeśli na przykład określisz, że w węzłach systemu Windows powinna być zainstalowana wersja 2.7 programu Application Blender , wiersze poleceń zadania będą używać tej zmiennej środowiskowej w celu uzyskania dostępu do swoich plików:

Windows:
AZ_BATCH_APP_PACKAGE_BLENDER#2.7

W węzłach systemu Linux określ zmienną środowiskową w tym formacie. Spłaszczać kropki (.), łączniki (-) i znaki liczbowe (#) w celu podkreślenia i zachować wielkość liter identyfikatora aplikacji:

Linux:
AZ_BATCH_APP_PACKAGE_blender_2_7

Podczas przekazywania pakietu aplikacji można określić domyślną wersję do wdrożenia w węzłach obliczeniowych. Jeśli określiłeś domyślną wersję aplikacji, możesz pominąć sufiks wersji podczas odwoływania się do aplikacji. Możesz określić domyślną wersję aplikacji w witrynie Azure Portal w oknie Aplikacje , jak pokazano w sekcji Przekazywanie aplikacji i zarządzanie nimi.

Jeśli na przykład ustawiono wartość "2.7" jako domyślną wersję programu Application Blender, a zadania odwołują się do następującej zmiennej środowiskowej, węzły systemu Windows używają wersji 2.7:

AZ_BATCH_APP_PACKAGE_BLENDER

Poniższy fragment kodu przedstawia przykładowy wiersz polecenia zadania, który uruchamia domyślną wersję aplikacji blender :

string taskId = "blendertask01";
string commandLine =
    @"cmd /c %AZ_BATCH_APP_PACKAGE_BLENDER%\blender.exe -args -here";
CloudTask blenderTask = new CloudTask(taskId, commandLine);

Wskazówka

Aby uzyskać więcej informacji na temat ustawień środowiska węzła obliczeniowego, zobacz Ustawienia środowiska dla zadań.

Aktualizuj pakiety aplikacji puli

Jeśli istniejąca pula została już skonfigurowana z pakietem aplikacji, możesz określić nowy pakiet dla puli. Oznacza to:

  • Usługa Batch instaluje nowo zdefiniowany pakiet na wszystkich nowych węzłach, które dołączają do puli, oraz na każdym istniejącym węźle, który jest ponownie uruchamiany lub ponownie konfigurowany.
  • Węzły obliczeniowe, które znajdują się już w puli podczas aktualizowania odwołań do pakietu, nie instalują automatycznie nowego pakietu aplikacji. Aby otrzymać nowy pakiet, należy ponownie uruchomić te węzły obliczeniowe lub odtworzyć je ponownie.
  • Po wdrożeniu nowego pakietu utworzone zmienne środowiskowe odzwierciedlają odwołania do nowego pakietu aplikacji.

W tym przykładzie istniejąca pula ma wersję 2.7 aplikacji blender skonfigurowaną jako jedna z CloudPool.ApplicationPackageReferences. Aby zaktualizować węzły puli do wersji 2.76b, określ nowy ApplicationPackageReference odpowiadający tej wersji i zatwierdź zmianę.

string newVersion = "2.76b";
CloudPool boundPool = await batchClient.PoolOperations.GetPoolAsync("myPool");
boundPool.ApplicationPackageReferences = new List<ApplicationPackageReference>
{
    new ApplicationPackageReference {
        ApplicationId = "blender",
        Version = newVersion }
};
await boundPool.CommitAsync();

Po skonfigurowaniu nowej wersji usługa Batch instaluje wersję 2.76b do dowolnego nowego węzła, który dołącza do puli. Aby zainstalować wersję 2.76b na węzłach, które znajdują się już w puli, uruchom je ponownie lub przeinstaluj. Ponownie uruchomione węzły zachowują pliki z poprzednich wdrożeń pakietów.

Wyświetlanie listy aplikacji na koncie usługi Batch

Aplikacje i ich pakiety można wyświetlić na koncie usługi Batch przy użyciu metody ApplicationOperations.ListApplicationSummaries .

// List the applications and their application packages in the Batch account.
List<ApplicationSummary> applications = await batchClient.ApplicationOperations.ListApplicationSummaries().ToListAsync();
foreach (ApplicationSummary app in applications)
{
    Console.WriteLine("ID: {0} | Display Name: {1}", app.Id, app.DisplayName);

    foreach (string version in app.Versions)
    {
        Console.WriteLine("  {0}", version);
    }
}

Następne kroki