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

Balíčky aplikací mohou zjednodušit kód ve vašem Azure Batch a usnadnit správu aplikací, které vaše úkoly spouštěly. Pomocí balíčků aplikací můžete nahrávat a spravovat více verzí aplikací, které vaše úkoly spouštějí, včetně jejich podpůrných souborů. Potom můžete jednu nebo více těchto aplikací automaticky nasadit 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é 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 propojit Azure Storage s účtem Batch.

Existují 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í pro službu Azure Batch .

Poznámka

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

Principy aplikací a balíčků aplikací

V Azure Batch aplikace odkazuje na sadu binárních souborů s verzí, které je možné automaticky stáhnout do výpočetních uzlů ve fondu. Aplikace obsahuje jeden nebo více balíčků aplikací, které představují různé verze aplikace.

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

Diagram znázorňující zobrazení aplikací a balíčků aplikací na nejvyšší úrovni

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

  • Balíčky aplikací fondu se nasadí do každého uzlu ve fondu. Aplikace se nasadí, když se uzel připojí k fondu a když se restartuje nebo znovu z image.

    Balíčky aplikací fondu jsou vhodné, když všechny uzly ve fondu spustí ú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 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í úkolů se nasadí jenom do výpočetního uzlu, na který 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í úkolů jsou užitečné v prostředích se sdíleným fondem, kde se různé úlohy spouštěly v jednom fondu a fond se po dokončení úlohy odstraní. Pokud má vaše úloha méně úkolů než uzlů ve fondu, balíčky aplikací úkolů mohou minimalizovat přenos dat, protože aplikace je nasazena pouze na uzly, které úkoly spouštěly.

    Další scénáře, které mohou využívat balíčky aplikací úkolů, jsou úlohy, ve které běží velká aplikace, ale pouze pro několik úkolů. Aplikace úloh mohou být například užitečné pro fázi předběžného zpracování těžké váhy nebo úlohu sloučení.

V případě balíčků aplikací nemusí úkol spuštění fondu zadat dlouhý seznam jednotlivých souborů prostředků, které se mají nainstalovat na uzly. Není nutné ručně spravovat více verzí souborů aplikace v Azure Storage nebo na uzlech. Nemusíte si dělat starosti s generováním adres URL SAS, abyste měli přístup k souborům ve vašem Storage účtu. Služba Batch pracuje na pozadí s 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 nesmí přesahovat 32768 znaků, včetně souborů prostředků a proměnných prostředí. Pokud váš úkol spuštění tento limit překročí, je další možností použití balíčků aplikací. Můžete také vytvořit soubor .zip obsahující soubory prostředků, nahrát ho jako objekt blob do Azure Storage a pak ho rozbalit z příkazového řádku počátečního úkolu.

Upload a správa aplikací

Ke správě balíčků aplikací v Azure Portal Batch můžete použít rozhraní API pro správu služby Batch. Následující části popisují, jak propojit účet úložiště a 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é použít šablonu ARM k nahrání balíčků aplikací pro použití ve vašem účtu Batch. Musíte je nahrát do propojeného účtu úložiště, jak je popsáno níže.

Pokud chcete používat balíčky aplikací, musíte propojit Azure Storage s účtem Batch. Služba Batch bude k ukládání balíčků aplikací používat přidružený účet úložiště. Doporučujeme 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 při prvním výběru aplikace v účtu Batch zobrazí upozornění. Pokud chcete propojit účet úložiště s účtem Batch, vyberte Storage v okně Upozornění a pak znovu vyberte Storage Účet.

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

Důležité

Nemůžete použít balíčky aplikací s účty Azure Storage nakonfigurovaných pravidly brány firewallnebo 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 objekty blob bloku. Za data objektů 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 Azure Storage škálovatelnosti a výkonnostních cílů pro účty úložiště. Pokud chcete minimalizovat náklady, nezapomeňte vzít v úvahu velikost a počet balíčků aplikací a pravidelně odebírat zastaralé balíčky.

Zobrazení aktuálních aplikací

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

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:

  • Packages (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 není při nasazování aplikace zadaná žá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 aplikace.

Zobrazení podrobností o aplikaci

Pokud chcete zobrazit podrobnosti o aplikaci, vyberte ji v okně Aplikace. Pro svou aplikaci můžete nakonfigurovat následující nastavení.

  • Povolit aktualizace: Určuje, jestli je možné aktualizovat nebo odstranit balíčky aplikací. Výchozí hodnota je Yes (Ano). Pokud je nastavená hodnota Ne, stávající balíčky aplikací není možné 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 při zobrazování informací 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é aplikace

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

V účtu Batch 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 vaší nové aplikace.
  • Verze": Verze balíčku aplikace, který nahráváte.
  • Balíček aplikace:.zip obsahující binární soubory aplikace a podpůrné soubory, které jsou potřebné ke spuštění aplikace.

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

  • Na Windows může ID obsahovat libovolnou kombinaci alfanumerických znaků, spojovníků a podtržítka. Na linuxových uzlech jsou povoleny pouze alfanumerické znaky a podtržítka.
  • Nesmí obsahovat více než 64 znaků.
  • Musí být jedinečný v rámci účtu Batch.
  • ID zachovávají velká a malá písmena a bez rozlišení velkých a malých písmen.

Až budete připraveni, vyberte Submit (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ávanou souboru a rychlosti síťového připojení to může nějakou dobu trvat.

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

Pokud chcete přidat verzi balíčku aplikace pro existující aplikaci, vyberte aplikaci v části Aplikace vašeho účtu Batch a 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 v části Aplikace vašeho účtu Batch. Vyberte tři tečky na řádku balíčku aplikace, který chcete upravit, a 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, budete moct nahrát nový soubor .zip souboru. Tím se nahradí předchozí .zip, který jste nahráli pro tuto verzi.

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

Instalace aplikací na výpočetní uzly

Teď, když jste se naučili spravovat balíčky aplikací v Azure Portal, si můžeme popovídat o tom, jak je nasadit do výpočetních uzlů a jak je spustit pomocí úkolů služby Batch.

Instalace balíčků aplikací fondu

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

V Batch .NET zadejte při vytváření nového fondu nebo pro existující fond jeden nebo více CloudPool.ApplicationPackageReferences. 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 tomto uzlu nejsou naplánované žádné úlohy. Pokud k tomu dojde, restartujte uzel a znovu spusťte nasazení balíčku. Restartováním uzlu se také znovu povolí plánování úkolů na uzlu.

Instalace balíčků aplikací úkolů

Podobně jako u fondu zadáte odkazy na balíček aplikace pro úlohu. Pokud je naplánováno spuštění úkolu na uzlu, balíček se stáhne a extrahuje těsně před provedením příkazového řádku úkolu. Pokud je na uzlu už nainstalovaný zadaný balíček a 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 úkolu:

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é jste zadali pro fond nebo úlohu, se stáhnou a extrahuje do pojmenovaného adresáře AZ_BATCH_ROOT_DIR v rámci uzlu. Batch také vytvoří proměnnou prostředí, která obsahuje cestu k pojmenovanému adresáři. Příkazové řádky úkolu používají tuto proměnnou prostředí při odkazování na aplikaci na uzlu.

V Windows uzlech má proměnná následující formát:

Windows:
AZ_BATCH_APP_PACKAGE_APPLICATIONID#version

Na uzlech s Linuxem se formát mírně liší. Tečky (.), spojovníky (-) a znaky čísel (#) jsou v proměnné prostředí zploštěny na podtržítka. Všimněte si také, že případ ID aplikace je zachován. Například:

Linux:
AZ_BATCH_APP_PACKAGE_applicationid_version

APPLICATIONID``versiona jsou hodnoty, které odpovídají aplikaci a verzi balíčku, kterou jste zadali pro nasazení. Pokud jste například zadali, že na uzlech Windows se má nainstalovat verze 2.7 nástroje Application Blender, příkazové řádky úkolu 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 čísla (#) na podtržítka a zachováte případ ID aplikace:

Linux:
AZ_BATCH_APP_PACKAGE_blender_2_7

Při nahrávání balíčku aplikace můžete zadat výchozí verzi, která se nasadí do výpočetních uzlů. Pokud jste pro aplikaci zadali výchozí verzi, můžete při odkazech na aplikaci tuto příponu verze vynechat. Výchozí verzi aplikace můžete zadat v Azure Portal v okně Aplikace, jak je znázorněno v Upload a správě aplikací.

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

AZ_BATCH_APP_PACKAGE_BLENDER

Následující fragment kódu ukazuje příklad příkazového řádku úkolu, který spouští 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ích uzlů najdete v tématu Nastavení prostředí pro úlohy.

Aktualizace balíčků aplikací fondu

Pokud už byl 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řipojí k fondu, a na všechny existující uzly, které se restartují nebo znovu z image.
  • Výpočetní uzly, které jsou již ve fondu při aktualizaci odkazů na balíček, neinstalují automaticky nový balíček aplikace. Tyto výpočetní uzly musí být restartovány nebo znovu z image, aby se obdržel nový balíček.
  • Při nasazení nového balíčku odrážejí vytvořené proměnné prostředí nové odkazy na balíček aplikace.

V tomto příkladu má existující fond verzi 2.7 aplikace blenderu nakonfigurovanou jako jeden 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 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 2,76b na uzly, které jsou už ve fondu, restartujte je nebo je z image znovu z image. Všimněte si, že restartování uzlů uchovává soubory z předchozích nasazení balíčků.

Zobrazení seznamu 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