Nasazení aplikací do výpočetních uzlů pomocí balíčků aplikací Batch

Balíčky aplikací mohou zjednodušit kód v řešení Azure Batch a usnadnit správu aplikací, které vaše úlohy spouští. Pomocí balíčků aplikací můžete nahrát a spravovat více verzí aplikací, které vaše úkoly spouští, včetně jejich podpůrných souborů. Pak můžete automaticky nasadit jednu nebo více těchto aplikací na výpočetní uzly ve vašem fondu.

Rozhraní API pro vytváření a správu balíčků aplikací jsou součástí knihovny Batch Management .NET . Rozhraní API pro instalaci balíčků aplikací na výpočetní uzel jsou součástí knihovny Batch .NET . Srovnatelné funkce jsou v dostupných rozhraních API služby Batch pro jiné programovací jazyky.

Tento článek vysvětluje, jak nahrát a spravovat balíčky aplikací v Azure Portal. Ukazuje také, jak je nainstalovat na výpočetní uzly fondu pomocí knihovny Batch .NET .

Požadavky na balíček aplikace

Pokud chcete používat balíčky aplikací, musíte s účtem Batch propojit účet Azure Storage .

Existují omezení týkající se počtu aplikací a balíčků aplikací v rámci účtu Batch a maximální velikosti balíčku aplikace. Další informace najdete v tématu Kvóty a omezení služby Batch.

Poznámka

Fondy batch vytvořené před 5. červencem 2017 nepodporují balíčky aplikací (pokud nebyly vytvořeny po 10. březnu 2016 pomocí konfigurace Cloud Services). Funkce balíčků aplikací popsaná zde nahrazuje funkci Batch Apps dostupnou v předchozích verzích služby.

Principy aplikací a balíčků aplikací

V rámci Azure Batch aplikace odkazuje na sadu binárních souborů s verzemi, které se dají automaticky stáhnout do výpočetních uzlů ve vašem fondu. Aplikace obsahuje jeden nebo více balíčků aplikace, které představují různé verze aplikace.

Každý balíček aplikace je .zip soubor, který obsahuje binární soubory aplikace a všechny podpůrné soubory. Podporuje se pouze formát .zip.

Diagram znázorňující základní pohled na aplikace a balíčky aplikací

Balíčky aplikací můžete zadat na úrovni fondu nebo úkolu.

  • Balíčky aplikací fondu se nasazují do všech uzlů ve fondu. Aplikace se nasazují, když se uzel připojí k fondu a když se restartuje nebo znovu z image.

    Balíčky aplikací fondu jsou vhodné, pokud všechny uzly ve fondu spouští úkoly úlohy. Při vytváření fondu můžete zadat jeden nebo více balíčků aplikací, které se mají nasadit. Můžete také přidat nebo aktualizovat existující balíčky fondu. Chcete-li nainstalovat nový balíček do existujícího fondu, je nutné restartovat jeho uzly.

  • Balíčky aplikací úloh se nasazují jenom do výpočetního uzlu, na kterém je naplánované spuštění úlohy, těsně před spuštěním příkazového řádku úkolu. Pokud se zadaný balíček aplikace a verze už na uzlu nachází, nenasadí se znovu a použije se existující balíček.

    Balíčky aplikací úloh jsou užitečné v prostředích sdíleného fondu, kde různé úlohy běží v jednom fondu a fond se po dokončení úlohy neodstraní. Pokud má vaše úloha méně úkolů než počet uzlů ve fondu, můžou balíčky aplikací úkolů minimalizovat přenos dat, protože aplikace je nasazená jenom na uzlech, které úlohy spouští.

    Balíčky aplikací úloh můžou využívat i další scénáře, ve kterých běží velká aplikace, ale jenom pro několik úloh. Aplikace úkolů mohou být například užitečné pro úlohu předběžného zpracování nebo slučovací úlohu.

U balíčků aplikací nemusí spouštěcí úkol vašeho fondu zadávat dlouhý seznam jednotlivých souborů prostředků, které se mají nainstalovat na uzly. Nemusíte ručně spravovat více verzí souborů aplikace ve službě Azure Storage nebo na uzlech. A nemusíte si dělat starosti s generováním adres URL SAS , které poskytují přístup k souborům ve vašem účtu Azure Storage. Batch pracuje na pozadí se službou Azure Storage k ukládání balíčků aplikací a jejich nasazení do výpočetních uzlů.

Poznámka

Celková velikost spouštěcího úkolu musí být menší nebo rovna 32 768 znakům, včetně souborů prostředků a proměnných prostředí. Pokud spouštěcí úkol překročí tento limit, je další možností použití balíčků aplikací. Můžete také vytvořit .zip soubor obsahující soubory prostředků, nahrát ho jako objekt blob do služby Azure Storage a pak ho rozbalit z příkazového řádku spouštěcího úkolu.

Nahrávání a správa aplikací

Ke správě balíčků aplikací v účtu Batch můžete použít Azure Portal nebo rozhraní API pro správu služby Batch. V následujících částech se dozvíte, jak propojit účet úložiště. Dozvíte se, jak přidat a spravovat aplikace a balíčky aplikací v Azure Portal.

Poznámka

I když můžete definovat hodnoty aplikace v prostředku Microsoft.Batch/batchAccountsšablony ARM, v současné době není možné šablonu ARM použít k nahrání balíčků aplikací pro použití ve vašem účtu Batch. Musíte je nahrát do svého propojeného účtu úložiště, jak je popsáno v tématu Přidání nové aplikace.

Pokud chcete používat balíčky aplikací, musíte s účtem Batch propojit účet Azure Storage . Služba Batch používá přidružený účet úložiště k ukládání balíčků aplikací. V ideálním případě byste měli vytvořit účet úložiště speciálně pro použití s účtem Batch.

Pokud jste ještě nenakonfigurovali účet úložiště, Azure Portal zobrazí upozornění při prvním výběru možnosti Aplikace v levé navigační nabídce vašeho účtu Batch. Pokud potřebujete propojit účet úložiště s účtem Batch:

  1. Vyberte okno Upozornění se zprávou Pro tento účet Batch není nakonfigurovaný žádný účet úložiště.
  2. Pak na další stránce zvolte Nastavení účtu úložiště .
  3. V části Informace o účtu úložiště zvolte odkaz Vybrat účet úložiště.
  4. V seznamu v podokně Zvolit účet úložiště vyberte účet úložiště, který chcete s tímto účtem Batch použít.
  5. Pak v levém horním rohu stránky vyberte Uložit .

Po propojení těchto dvou účtů může služba Batch automaticky nasadit balíčky uložené v propojeném účtu úložiště do výpočetních uzlů.

Důležité

Balíčky aplikací nemůžete používat s účty Azure Storage nakonfigurovanými s pravidly brány firewall nebo s hierarchickým oborem názvů nastaveným na Povoleno.

Služba Batch používá Azure Storage k ukládání balíčků aplikací jako objektů blob bloku. Za data objektů blob bloku se účtují běžné poplatky a velikost každého balíčku nesmí překročit maximální velikost objektu blob bloku. Další informace najdete v tématu Škálovatelnost a cíle výkonu pro úložiště objektů blob. Pokud chcete minimalizovat náklady, nezapomeňte zvážit velikost a počet balíčků aplikací a pravidelně odebírat zastaralé balíčky.

Přidání nové aplikace

Chcete-li vytvořit novou aplikaci, přidejte balíček aplikace a zadejte jedinečné ID aplikace.

V účtu Batch v levé navigační nabídce vyberte Aplikace a pak vyberte Přidat.

Snímek obrazovky s procesem vytvoření nové aplikace v Azure Portal

Zadejte následující informace:

  • ID aplikace: ID nové aplikace.
  • Version": Verze balíčku aplikace, který nahráváte.
  • Balíček aplikace: .zip soubor obsahující binární soubory aplikace a podpůrné soubory potřebné ke spuštění aplikace.

Zadané ID averze aplikace musí splňovat tyto požadavky:

  • Na uzlech Windows může ID obsahovat libovolnou kombinaci alfanumerických znaků, spojovníků a podtržítků. Na linuxových uzlech jsou povolené jenom alfanumerické znaky a podtržítka.
  • Nemůže obsahovat více než 64 znaků.
  • Musí být jedinečný v rámci účtu Batch.
  • ID zachovávají malá a velká písmena a nerozlišují se malá a velká písmena.

Až budete připraveni, vyberte Odeslat. Po nahrání souboru .zip do vašeho účtu Azure Storage se na portálu zobrazí oznámení. V závislosti na velikosti nahrávaného souboru a rychlosti připojení k síti může tento proces nějakou dobu trvat.

Zobrazení aktuálních aplikací

Pokud chcete zobrazit aplikace v účtu Batch, vyberte Aplikace v levé navigační nabídce.

Snímek obrazovky s položkou nabídky Aplikace v Azure Portal

Výběrem této možnosti nabídky se otevře okno Aplikace . V tomto okně se zobrazí ID každé aplikace ve vašem účtu a následující vlastnosti:

  • Balíčky: Počet verzí přidružených k této aplikaci.
  • Výchozí verze: Pokud je to možné, verze aplikace, která se nainstaluje, pokud se při nasazování aplikace nezadá žádná verze.
  • Povolit aktualizace: Určuje, jestli jsou povolené aktualizace a odstraňování balíčků.

Pokud chcete zobrazit strukturu souborů balíčku aplikace na výpočetním uzlu, přejděte na svůj účet Batch v Azure Portal. Vyberte Fondy. Pak vyberte fond, který obsahuje výpočetní uzel. Vyberte výpočetní uzel, na kterém je nainstalovaný balíček aplikace, a otevřete složku applications .

Zobrazení podrobností o aplikaci

Pokud chcete zobrazit podrobnosti o aplikaci, vyberte ji v okně Aplikace . Aplikaci můžete nakonfigurovat tak, že v levé navigační nabídce vyberete Nastavení .

  • Povolit aktualizace: Označuje, jestli je možné aktualizovat nebo odstranit balíčky aplikací. Výchozí hodnota je Yes (Ano). Pokud je tato možnost nastavená na Ne, stávající balíčky aplikací se nedají aktualizovat ani odstranit, ale stále je možné přidat nové verze balíčků aplikací.
  • Výchozí verze: Výchozí balíček aplikace, který se použije při nasazení aplikace, pokud není zadaná žádná verze.
  • Zobrazovaný název: Popisný název, který může řešení Batch použít, když zobrazuje informace o aplikaci. Tento název lze například použít v uživatelském rozhraní služby, kterou poskytujete zákazníkům prostřednictvím služby Batch.

Přidání nového balíčku aplikace

Pokud chcete přidat verzi balíčku aplikace pro existující aplikaci, vyberte aplikaci na stránce Aplikace vašeho účtu Batch. Pak vyberte Přidat.

Stejně jako u nové aplikace zadejte verzi nového balíčku, nahrajte soubor .zip do pole Balíček aplikace a pak vyberte Odeslat.

Aktualizace nebo odstranění balíčku aplikace

Pokud chcete aktualizovat nebo odstranit existující balíček aplikace, vyberte aplikaci na stránce Aplikace vašeho účtu Batch. Vyberte tři tečky na řádku balíčku aplikace, který chcete upravit. Pak vyberte akci, kterou chcete provést.

Snímek obrazovky znázorňující možnosti aktualizace a odstranění balíčků aplikací v Azure Portal

Pokud vyberete Aktualizovat, můžete nahrát nový soubor .zip. Tento soubor nahrazuje předchozí .zip soubor, který jste pro danou verzi nahráli.

Pokud vyberete Odstranit, zobrazí se výzva k potvrzení odstranění této verze. Jakmile vyberete OK, služba Batch odstraní soubor .zip z vašeho účtu služby Azure Storage. Pokud odstraníte výchozí verzi aplikace, odebere se pro tuto aplikaci nastavení Výchozí verze .

Instalace aplikací na výpočetní uzly

Naučili jste se spravovat balíčky aplikací v Azure Portal. Teď se můžete naučit, jak je nasadit na výpočetní uzly a spouštět je pomocí úkolů služby Batch.

Instalace balíčků aplikací fondu

Pokud chcete nainstalovat balíček aplikace na všechny výpočetní uzly ve fondu, zadejte pro fond jeden nebo více odkazů na balíčky aplikací. Balíčky aplikací, které zadáte pro fond, se nainstalují na každý výpočetní uzel, který se připojí k fondu, a na jakýkoli uzel, který se restartuje nebo přeinstaluje z image.

V batch .NET zadejte jeden nebo více CloudPool.ApplicationPackageReferences při vytváření nového fondu nebo při použití existujícího fondu. Třída ApplicationPackageReference určuje ID a verzi aplikace, která se má nainstalovat na výpočetní uzly fondu.

// 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();

Důležité

Pokud nasazení balíčku aplikace selže, služba Batch označí uzel jako nepoužitelný a na daném uzlu nejsou naplánované žádné úlohy. Pokud k tomu dojde, restartujte uzel, aby se nasazení balíčku obnovilo. Restartování uzlu také umožní opětovné plánování úkolů na uzlu.

Instalace balíčků aplikací úloh

Podobně jako u fondu zadáte odkazy na balíčky aplikací pro úlohu. Když je naplánované spuštění úlohy na uzlu, balíček se stáhne a extrahuje těsně před spuštěním příkazového řádku úkolu. Pokud je na uzlu již nainstalovaný zadaný balíček a jeho verze, balíček se nestáhne a použije se existující balíček.

Pokud chcete nainstalovat balíček aplikace úkolu, nakonfigurujte vlastnost CloudTask.ApplicationPackageReferences úlohy:

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"
    }
};

Spouštění nainstalovaných aplikací

Balíčky, které zadáte pro fond nebo úkol, se stáhnou a extrahují do pojmenovaného adresáře v rámci AZ_BATCH_ROOT_DIR uzlu. Batch také vytvoří proměnnou prostředí, která obsahuje cestu k pojmenované adresáři. Příkazové řádky úkolů používají tuto proměnnou prostředí při odkazování na aplikaci v uzlu.

Na uzlech Windows je proměnná v následujícím formátu:

Windows:
AZ_BATCH_APP_PACKAGE_APPLICATIONID#version

Na linuxových uzlech se formát mírně liší. Tečky (.), spojovníky (-) a znaky čísel (#) se v proměnné prostředí zploštěly na podtržítka. Zachovají se také případy ID aplikace. Příklad:

Linux:
AZ_BATCH_APP_PACKAGE_applicationid_version

APPLICATIONID a version jsou hodnoty, které odpovídají verzi aplikace a balíčku, které jste zadali pro nasazení. Pokud například určíte, že na uzlech Windows má být nainstalovaná verze 2.7 aplikace blender , příkazové řádky úkolů budou pro přístup k souborům používat tuto proměnnou prostředí:

Windows:
AZ_BATCH_APP_PACKAGE_BLENDER#2.7

Na uzlech s Linuxem zadejte proměnnou prostředí v tomto formátu. Zploštěte tečky (.), spojovníky (-) a znaky čísel (#) na podtržítka a zachovejte velikost písmen ID aplikace:

Linux:
AZ_BATCH_APP_PACKAGE_blender_2_7

Když nahrajete balíček aplikace, můžete zadat výchozí verzi pro nasazení do výpočetních uzlů. Pokud jste pro aplikaci zadali výchozí verzi, můžete při odkazování na aplikaci vynechat příponu verze. Výchozí verzi aplikace můžete zadat v Azure Portal v okně Aplikace, jak je znázorněno v části Nahrávání a správa aplikací.

Pokud například nastavíte "2.7" jako výchozí verzi pro blender aplikací a vaše úkoly odkazují na následující proměnnou prostředí, pak uzly Windows používají verzi 2.7:

AZ_BATCH_APP_PACKAGE_BLENDER

Následující fragment kódu ukazuje ukázkový příkazový řádek úlohy, který spustí výchozí verzi aplikace blenderu :

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

Tip

Další informace o nastavení prostředí výpočetního uzlu najdete v tématu Nastavení prostředí pro úlohy.

Aktualizace balíčků aplikací fondu

Pokud už je existující fond nakonfigurovaný s balíčkem aplikace, můžete pro fond zadat nový balíček. To znamená, že:

  • Služba Batch nainstaluje nově zadaný balíček na všechny nové uzly, které se připojují k fondu, a na všechny existující uzly, které se restartují nebo přeinstalují z image.
  • Výpočetní uzly, které už jsou ve fondu, když aktualizujete odkazy na balíčky, nenainstalují automaticky nový balíček aplikace. Tyto výpočetní uzly je potřeba restartovat nebo obnovit image, aby se nový balíček dostal.
  • Když se nasadí nový balíček, vytvořené proměnné prostředí odrážejí odkazy na nový balíček aplikací.

V tomto příkladu má existující fond verzi 2.7 aplikace blenderu nakonfigurovanou jako jednu ze svých CloudPool.ApplicationPackageReferences. Pokud chcete aktualizovat uzly fondu na verzi 2.76b, zadejte nový ApplicationPackageReference s novou verzí a potvrďte změnu.

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();

Teď, když je nakonfigurovaná nová verze, služba Batch nainstaluje verzi 2.76b na jakýkoli nový uzel, který se připojí k fondu. Pokud chcete nainstalovat 2.76b na uzly, které už jsou ve fondu, restartujte je nebo je znovu nainstalujte z image. V restartovaných uzlech se zachovají soubory z předchozích nasazení balíčků.

Výpis aplikací v účtu Batch

Seznam aplikací a jejich balíčků v účtu Batch můžete zobrazit pomocí 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);
    }
}

Další kroky