Wdrażanie aplikacji w węzłach obliczeniowych przy użyciu pakietów aplikacji usługi Batch
Pakiety aplikacji mogą uprościć kod w rozwiązaniu 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 plikami pomocniczymi. Następnie można automatycznie wdrożyć co najmniej jedną z tych aplikacji w węzłach obliczeniowych w puli.
Interfejsy API do tworzenia pakietów aplikacji i zarządzania nimi są częścią biblioteki .NET zarządzania usługą Batch . Interfejsy API do instalowania pakietów aplikacji w węźle obliczeniowym są częścią biblioteki .NET usługi Batch . Porównywalne funkcje są dostępne w 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 Azure Portal. Pokazano również, jak zainstalować je w węzłach obliczeniowych puli za pomocą 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 Batch service quotas and limits (Limity przydziału i limity 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 Cloud Services Configuration). 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 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 pliki pomocnicze. Obsługiwany jest tylko format .zip.
Pakiety aplikacji można określić na poziomie puli lub zadania.
Pakiety aplikacji puli są wdrażane w każdym węźle w puli. Aplikacje są wdrażane po dołączeniu węzła do puli i ponownym uruchomieniu lub ponownym uruchomieniu.
Pakiety aplikacji puli są odpowiednie, gdy wszystkie węzły w puli uruchamiają zadania podrzędne zadania. Podczas tworzenia puli można określić co najmniej jeden pakiet aplikacji do wdrożenia. Możesz również dodać lub zaktualizować 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 zadanie ma mniej zadań niż węzły w puli, pakiety aplikacji zadań mogą zminimalizować transfer danych, ponieważ aplikacja jest wdrażana tylko w węzłach, w których są uruchamiane zadania podrzędne.
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 ciężkiego 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 sygnatur dostępu współdzielonego , aby zapewnić dostęp do plików na koncie usługi Azure Storage. Usługa Batch działa w tle z usługą Azure Storage w celu przechowywania pakietów aplikacji i wdrażania ich 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
Do zarządzania pakietami aplikacji na koncie usługi Batch można użyć Azure Portal lub interfejsów API zarządzania usługą 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 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 przekazywania pakietów aplikacji do użycia na koncie usługi Batch. Należy przekazać je do połączonego konta magazynu zgodnie z opisem w temacie Dodawanie nowej aplikacji.
Łączenie konta magazynu
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, Azure Portal wyświetli ostrzeżenie przy pierwszym wybraniu pozycji Aplikacje z menu nawigacji po lewej stronie na koncie usługi Batch. Aby połączyć konto magazynu z kontem usługi Batch:
- Wybierz okno Ostrzeżenie z komunikatem "Brak konta magazynu skonfigurowanego dla tego konta usługi Batch".
- Następnie wybierz pozycję Konto magazynu... na następnej stronie.
- Wybierz link Wybierz konto magazynu w sekcji Informacje o koncie magazynu .
- Wybierz konto magazynu, którego chcesz użyć z tym kontem usługi Batch, na liście w okienku Wybierz konto magazynu .
- Następnie wybierz pozycję Zapisz w lewym górnym rogu strony.
Po połączeniu tych dwóch kont usługa Batch może automatycznie wdrożyć pakiety przechowywane na połączonym koncie magazynu w węzłach 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 używa usługi Azure Storage do przechowywania pakietów aplikacji jako blokowych obiektów blob. 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 dotyczące 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.
Wprowadź następujące informacje:
- Identyfikator aplikacji: identyfikator nowej aplikacji.
- Version": wersja przekazywanego pakietu aplikacji.
- 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 w ramach konta usługi Batch.
- Identyfikatory są zachowywane przy użyciu wielkości liter i bez uwzględniania wielkości 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.
Wybranie tej opcji menu powoduje otwarcie okna Aplikacje . W tym oknie zostanie wyświetlony identyfikator każdej aplikacji na koncie i 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 i usunięcia pakietów są dozwolone.
Aby wyświetlić strukturę plików pakietu aplikacji w węźle obliczeniowym, przejdź do konta usługi Batch w Azure Portal. Wybierz pozycję Pule. Następnie wybierz pulę zawierającą węzeł obliczeniowy. Wybierz węzeł obliczeniowy, na którym jest zainstalowany pakiet aplikacji, i otwórz folder applications .
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 jest ustawiona wartość Nie, nie można aktualizować ani usuwać istniejących pakietów aplikacji, ale nadal można dodawać nowe wersje pakietów aplikacji.
- Wersja domyślna: domyślny pakiet aplikacji do użycia podczas wdrażania aplikacji, jeśli nie określono 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óra jest dostarczana 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ć.
Jeśli wybierzesz pozycję Aktualizuj, możesz przekazać nowy plik .zip. Ten plik zastępuje poprzedni plik .zip przekazany 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, dla tej aplikacji zostanie usunięte ustawienie Wersja domyślna .
Instalowanie aplikacji w węzłach obliczeniowych
Wiesz już, jak zarządzać pakietami aplikacji w Azure Portal. Teraz możesz dowiedzieć się, jak wdrożyć je w węzłach obliczeniowych i uruchomić je za pomocą zadań usługi Batch.
Instalowanie pakietów aplikacji puli
Aby zainstalować pakiet aplikacji we wszystkich węzłach obliczeniowych w puli, określ co najmniej jedno odwołanie do pakietu aplikacji dla puli. Pakiety aplikacji określone dla puli są instalowane w każdym węźle obliczeniowym, który łączy pulę i w dowolnym węźle, który jest ponownie uruchamiany lub odtwarzany z obrazu.
Na platformie .NET usługi Batch określ co najmniej jedną aplikację CloudPool.ApplicationPackageReferences podczas tworzenia nowej puli lub w przypadku korzystania z istniejącej puli. Klasa ApplicationPackageReference określa identyfikator i wersję aplikacji 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 oznacza węzeł bezużyteczny i nie zaplanowano żadnych zadań 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ć odwołania 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 zostanie pobrany i zostanie użyty 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 w węźle AZ_BATCH_ROOT_DIR
. Usługa Batch tworzy również zmienną środowiskową zawierającą ścieżkę do nazwanego katalogu. Wiersze polecenia zadania używają tej zmiennej środowiskowej podczas odwoływania się do aplikacji w 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 liczbowe (#) są spłaszczone do podkreśleń 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 polecenia zadania będą używać tej zmiennej środowiskowej do uzyskiwania dostępu do jego 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ślono domyślną wersję aplikacji, możesz pominąć sufiks wersji podczas odwoływanie się do aplikacji. Domyślną wersję aplikacji można określić w Azure Portal w oknie Aplikacje, jak pokazano w sekcji Przekazywanie aplikacji i zarządzanie nimi.
Jeśli na przykład ustawisz 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);
Porada
Aby uzyskać więcej informacji na temat ustawień środowiska węzła obliczeniowego, zobacz Ustawienia środowiska dla zadań.
Aktualizowanie pakietów aplikacji puli
Jeśli istniejąca pula została już skonfigurowana z pakietem aplikacji, możesz określić nowy pakiet dla puli. Składają się na to następujące elementy:
- Usługa Batch instaluje nowo określony pakiet we wszystkich nowych węzłach, które dołączają do puli i na dowolnym istniejącym węźle, który jest ponownie uruchamiany lub odtwarzany z obrazu.
- Węzły obliczeniowe, które znajdują się już w puli podczas aktualizacji odwołań do pakietu, nie instalują automatycznie nowego pakietu aplikacji. Te węzły obliczeniowe muszą zostać ponownie uruchomione lub ponownie z obrazu, aby otrzymać nowy pakiet.
- 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 blendera skonfigurowaną jako jedna z jej aplikacji CloudPool.ApplicationPackageReferences. Aby zaktualizować węzły puli w wersji 2.76b, określ nową wersję ApplicationPackageReference przy użyciu nowej 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 przyłączanego do puli. Aby zainstalować program 2.76b w węzłach, które znajdują się już w puli, uruchom je ponownie lub ponownie z obrazu. 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
- Interfejs API REST usługi Batch zapewnia również obsługę pracy z pakietami aplikacji. Zobacz na przykład element applicationPackageReferences , aby dowiedzieć się, jak określać pakiety do zainstalowania, i Aplikacje , aby uzyskać informacje o aplikacji.
- Dowiedz się, jak programowo zarządzać kontami i przydziałami Azure Batch za pomocą programu Batch Management .NET. Biblioteka .NET zarządzania usługą Batch umożliwia tworzenie i usuwanie kont dla aplikacji lub usługi Batch.