Sdílet prostřednictvím


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

Balíčky aplikací můžou zjednodušit kód v řešení Azure Batch a usnadnit správu aplikací, které vaše úlohy spouští. S balíčky aplikací můžete nahrát a spravovat více verzí aplikací, které vaše úlohy spouští, včetně jejich podpůrných souborů. Pak můžete automaticky nasadit jednu nebo více těchto aplikací do výpočetních uzlů 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í na webu 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 propojit účet Azure Storage s vaším účtem Batch.

Existuje omezení 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 cloudových služeb). 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í

Ve službě Azure Batch se aplikace vztahuje 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ů aplikací, 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í zobrazení aplikací a balíčků aplikací

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

  • Balíčky aplikací fondu se nasazují na každý uzel ve fondu. Aplikace se nasadí, když se uzel připojí k fondu a když se restartuje nebo znovu zmage.

    Balíčky aplikací fondu jsou vhodné, když všechny uzly ve fondu spouštějí ú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 balíčky existujícího fondu. Pokud chcete nainstalovat nový balíček do existujícího fondu, musíte restartovat jeho uzly.

  • Balíčky aplikací úloh se nasazují pouze do výpočetního uzlu naplánovaného ke spuštění úlohy těsně před spuštěním příkazového řádku úkolu. Pokud je zadaný balíček aplikace a verze již v uzlu, není nasazený 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 se různé úlohy spouštějí v jednom fondu a po dokončení úlohy se fond neodstraní. Pokud má vaše úloha méně úkolů než uzly ve fondu, balíčky aplikací úkolů můžou minimalizovat přenos dat, protože vaše aplikace je nasazená jenom na uzly, které spouští úkoly.

    Další scénáře, které můžou těžit z balíčků aplikací úloh, jsou úlohy, které spouštějí velkou aplikaci, ale jenom pro několik úloh. Aplikace úloh můžou být například užitečné pro fázi předběžného zpracování těžkého výkonu nebo pro slučovací úkol.

U balíčků aplikací nemusí spouštěcí úloha 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 ani na uzlech. A nemusíte si dělat starosti s generováním adres URL SAS , abyste měli přístup k souborům ve vašem účtu Azure Storage. Služba Batch funguje na pozadí se službou Azure Storage pro 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 použití balíčků aplikací jinou možností. Můžete také vytvořit .zip soubor obsahující vaše 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í úlohy.

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

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

Poznámka:

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

Pokud chcete používat balíčky aplikací, musíte propojit účet Azure Storage s účtem Batch. 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ě, na webu Azure Portal se při prvním výběru aplikací z levé navigační nabídky ve vašem účtu Batch zobrazí upozornění. Pokud potřebujete propojit účet úložiště s účtem Batch:

  1. Vyberte okno Upozornění , které uvádí, že pro tento účet Batch není nakonfigurovaný žádný účet úložiště.
  2. Pak zvolte Nastavení účtu úložiště... na další stránce.
  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 použít s tímto účtem Batch.
  5. Pak vyberte Uložit v levém horním rohu stránky.

Po propojení těchto dvou účtů může 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 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 objektu blob bloku se vám účtují normální 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ě 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

Pokud chcete vytvořit novou aplikaci, přidáte balíček aplikace a zadáte jedinečné ID aplikace.

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

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

Zadejte následující informace:

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

ID averze aplikace, které zadáte, musí splňovat tyto požadavky:

  • V uzlech Windows může ID obsahovat libovolnou kombinaci alfanumerických znaků, pomlček a podtržítka. Na linuxových uzlech jsou povoleny pouze alfanumerické znaky a podtržítka.
  • Nemůže obsahovat více než 64 znaků.
  • Musí být jedinečný v rámci účtu Batch.
  • ID nerozlišují velká a malá a velká písmena.

Až budete připraveni, vyberte Odeslat. Po nahrání souboru .zip do účtu služby Azure Storage se na portálu zobrazí oznámení. V závislosti na velikosti souboru, který nahráváte, a rychlosti síťového připojení 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 na webu 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 k dispozici, je nainstalovaná verze aplikace, pokud není při nasazování aplikace zadaná žádná verze.
  • Povolit aktualizace: Určuje, jestli jsou povolené aktualizace a odstranění balíčků.

Pokud chcete zobrazit strukturu souborů balíčku aplikace na výpočetním uzlu, přejděte na webu Azure Portal ke svému účtu Batch. 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 aplikací .

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 nastavená hodnota Ne, existující balíčky aplikací se nedají aktualizovat ani odstranit, ale nové verze balíčků aplikací je možné přidat.
  • Výchozí verze: Výchozí balíček aplikace, který se použije při nasazení aplikace, pokud není zadána žádná verze.
  • Zobrazovaný název: Popisný název, který může vaše řešení Batch použít, když zobrazí informace o aplikaci. Tento název můžete například použít v uživatelském rozhraní služby, kterou zákazníkům poskytnete 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 v řá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í na webu Azure Portal

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

Pokud vyberete Odstranit, zobrazí se výzva k potvrzení odstranění této verze. Jakmile vyberete OK, Služba Batch odstraní soubor .zip z úč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í na webu Azure Portal. Teď se můžete naučit, jak je nasadit do výpočetních uzlů a spouštět je pomocí úloh Služby Batch.

Instalace balíčků aplikací fondu

Chcete-li nainstalovat balíček aplikace na všechny výpočetní uzly ve fondu, zadejte jeden nebo více odkazů na balíčky aplikací pro fond. Balíčky aplikací, které zadáte pro fond, se nainstalují do každého výpočetního uzlu, který fond připojí, a na všech uzlech, které se restartují nebo znovu zmagí.

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 mají 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 a znovu nasadíte balíček. Restartování uzlu také umožňuje 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. Pokud 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 v uzlu již nainstalovaný zadaný balíček a verze, balíček se nestáhne a použije se existující balíček.

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

Spuštění nainstalovaných aplikací

Balíčky, které zadáte pro fond nebo úlohu, 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ém adresáři. Příkazové řádky úkolů používají tuto proměnnou prostředí při odkazování na aplikaci na 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 (#) jsou zploštěny na podtržítka v proměnné prostředí. Také je zachován případ ID aplikace. Například:

Linux:
AZ_BATCH_APP_PACKAGE_applicationid_version

APPLICATIONID a version jsou hodnoty, které odpovídají verzi aplikace a balíčku, kterou jste zadali pro nasazení. Pokud například zadáte, že na uzlech Windows by se měla nainstalovat blender aplikace verze 2.7, budou příkazové řádky úloh používat tuto proměnnou prostředí pro přístup ke svým souborům:

Windows:
AZ_BATCH_APP_PACKAGE_BLENDER#2.7

Na linuxových uzlech zadejte proměnnou prostředí v tomto formátu. Zploštěte tečky (.), spojovníky (-) a znaky číslic (#) na podtržítka a zachováte případ ID aplikace:

Linux:
AZ_BATCH_APP_PACKAGE_blender_2_7

Když nahrajete balíček aplikace, můžete zadat výchozí verzi, kterou chcete nasadit do výpočetních uzlů. Pokud jste zadali výchozí verzi aplikace, můžete při odkazování na aplikaci vynechat příponu verze. Výchozí verzi aplikace můžete zadat na webu Azure Portal v okně Aplikace , jak je znázorněno v části Nahrá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);

Návod

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

Aktualizace fondových aplikačních balíčků

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

  • Služba Batch nainstaluje nově zadaný balíček na všechny nové uzly, které připojují fond, a na všechny existující uzly, které se restartují nebo znovu zmagí.
  • Výpočetní uzly, které už jsou ve fondu, když aktualizujete odkazy na balíčky, automaticky nenainstalují nový balíček aplikace. Aby bylo možné přijmout nový balíček, musí se tyto výpočetní uzly restartovat nebo obnovit.
  • Když se nasadí nový balíček, vytvořené proměnné prostředí odrážejí odkazy na nový balíček aplikace.

V tomto příkladu má existující fond verzi 2.7 aplikace blenderu nakonfigurovanou jako jednu z jejích CloudPool.ApplicationPackageReferences. Pokud chcete aktualizovat uzly fondu verzí 2.76b, zadejte novou 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 nová verze nakonfigurovaná, služba Batch nainstaluje verzi 2.76b do jakéhokoli nového uzlu, který se připojí k fondu. Pokud chcete nainstalovat verzi 2.76b na uzly, které už jsou ve fondu, restartujte je nebo znovu naimaďte. Restartování uzlů uchovává soubory z předchozích nasazení balíčků.

Výpis aplikací v účtu Batch

Aplikace a jejich balíčky můžete zobrazit v účtu Batch 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