Konfigurace škálování

Výkon a náklady instance spravovaných DevOps Pools můžete spravovat konfigurací nastavení škálování. Informace o cenách a výkonu najdete v tématu Správa nákladů a výkonu.

Stav agenta

Fondy můžete nakonfigurovat takto:

  • Bezstavové: Zajistěte pro každou úlohu nový agent.
  • Stavové: Umožňuje sdílení agentů mezi více úlohami.

Výchozí nastavení poolu je bezstavové, čehož můžete dosáhnout nastavením Fresh agenta pokaždé. V některých případech mohou týmy chtít znovu použít agenty a tím i balíčky nebo soubory vytvořené během předchozího běhu pipeline. Úloha sestavení je běžný scénář, kdy týmy chtějí zachovat stav a opakovaně používat agenty. Stavové fondy můžete vytvořit pomocí spravovaných fondů DevOps, zatímco zachováte rovnováhu s osvědčenými postupy zabezpečení. Ve výchozím nastavení je možné agenta opakovaně používat maximálně sedm dní, ale můžete ho nakonfigurovat tak, aby se recykloval dříve.

Poznámka:

Agenti zabezpečení doporučují, aby uživatelé používali bezstavové fondy jako ochranu před útoky na dodavatelský řetězec. Pokaždé použijte nastavení stavu agenta Fresh.

Bezstavové fondy

Při konfiguraci bezstavového agenta se pro každou úlohu zajišťuje nový agent. Po dokončení úlohy se agent zahodí.

Další informace o životním cyklu bezstavových agentů a o tom, jak se používají v rámci Azure Pipelines, najdete v části Životní cyklus agentů a potenciální zpoždění při přidělování.

Snímek obrazovky znázorňující bezstavového agenta

Když nastavíte stav agentana Fresh agent pokaždé, pro každou úlohu se zařídí nový agent. Po dokončení úlohy se agent zahodí.

Stavové fondy

Snímek obrazovky znázorňující stavového agenta.

Když povolíte Stejný agent může používat více sestavení (nastavení "kind": "stateful" v šablonách prostředků nebo nastavení { "stateful": {...} } v Azure CLI), agenti ve fondu jsou stavoví. Stavové fondy můžete nakonfigurovat pomocí následujících nastavení:

  • Maximální doba provozu pro pohotovostní agenty (maxAgentLifetime) konfiguruje maximální dobu trvání agenta ve stavovém fondu, než se vypne a zahodí. Formát maximální doby platnosti pro záložní agenty je dd.hh:mm:ss. Výchozí hodnota Max time to live pro agenty v pohotovostním režimu je nastavena na maximální povolenou dobu trvání sedm dnů (7.00:00:00).

  • Odkladová doba (gracePeriodTimeSpan) určuje dobu, kterou agent ve stavovém fondu vyčkává na nové úlohy, než se po dokončení všech aktuálních úloh a úloh ve frontě vypne. Formát pro období odkladu je dd.hh:mm:ss a výchozí nastavení je bez období odkladu.

    Důležité

    Pokud je úloha spuštěná, když vyprší maximální doba živosti pro pohotovostní agenty, agent se nevypne, dokud se úloha nedokončí, není-li úloha již spuštěna déle než dva dny. Jednotlivé úlohy ve spravovaných fondech DevOps se můžou spouštět maximálně dva dny, i když jsou spuštěné v pohotovostním agentovi s více než dvěma dny nakonfigurovanými pro maximální dobu provozu pro pohotovostní agenty. (Spravovaný fond DevOps podporuje kanály, které běží déle než dva dny, jejich rozdělením do několika kratších úloh, které se dokončí za dva dny nebo méně.)

Agenti v bezstavových poolech se po každé úloze vypnou a zahodí. Pokud jsou splněny některé z následujících podmínek, agenti ve stavových fondech budou nadále spuštěni:

  • Pokud se po dokončení první úlohy zařadí jiná úloha do fronty, spravované fondy DevOps odešlou úlohu zařazenou do fronty agentovi, který spustil první úlohu, místo aby ji vypnul.
  • Pokud je pro fond nakonfigurované období odkladu, agenti před vypnutím čekají na nové úlohy po dobu trvání určenou obdobím odkladu.
  • Pokud jsou povoleni pohotovostní agenti a image agenta splňuje kritéria aktivního období zřizování, agent pokračuje v běhu a čeká na úlohy.

Agenti, kteří běží ve stavových skupinách, jsou vypnuti a zahozeni, pokud běží nepřetržitě po dobu trvání určenou maximální dobou provozu pro agenty v pohotovostním režimu, i když jsou splněny předchozí podmínky. Pokud je například pro pohotovostní agenty nakonfigurovaný maximální doba provozu po dobu tří dnů a režim pohotovostního agenta je nastavený na ručně, režim celého týdne (počítače dostupné 24/7) se agenti restartují po třech nepřetržitých dnech provozu.

Důležité

Agenty ve stavových skupinách lze po dokončení úlohy vypnout a odstranit, pokud neexistuje žádná doba odkladu, žádné aktivní období zřizování pro pohotovostní agenty ani žádné úlohy ve frontě určené pro agenta. Při zahození agenta dojde ke ztrátě stavu.

Období odkladu umožňují nákladově nejefektivnější způsob spouštění stavových fondů pro kanály s konzistentním zatížením. Období odkladu nevyžadují použití pohotovostního režimu agenta, aby agenti zůstali online a připravení přijímat úlohy.

Pohotovostní režim agenta

Při vytváření fondu je režim pohotovostního agenta ve výchozím nastavení vypnutý. Když je režim pohotovostního agenta vypnutý, nejsou k dispozici žádní pohotovostní agenti, které by bylo možné okamžitě přiřadit k pipeline. Vaše kanály mohou muset čekat od několika sekund do 15 minut, než bude zřízen agent na požádání. Pokud chcete dosáhnout lepšího výkonu, povolte režim pohotovostního agenta a nakonfigurujte plán pohotovostního agenta, který poskytuje kapacitu pro vaši úlohu.

Když konfigurujete plán pohotovostního agenta, spravované fondy DevOps pravidelně porovnávají počet zřízených agentů s počtem pohotovostních agentů, které zadáte v aktuálním schématu zřizování. Spustí nové agenty podle potřeby pro zachování počtu pohotovostních agentů. Pomocí podokna Agenti můžete zobrazit aktuální stav a počet agentů ve vašem fondu.

Důležité

Počet zřizování ve schématu nemůže být větší než maximální počet agentů, kterou nakonfigurujete v nastavení fondu.

Režim pohotovostního agenta můžete nakonfigurovat pomocí následujících nastavení:

  • Vypnuto: Režim pohotovostního agenta je vypnutý a agenti jsou zřizováni na vyžádání, když jsou úlohy zařazeny do fronty.
  • Ruční: Nakonfigurujte plán ručně pohotovostního režimu.
  • Automaticky: Použijte automatický pohotovostní plán založený na historii využití agenta. Můžete ho nakonfigurovat pro náklady a výkon.

Snímek obrazovky znázorňující výběry pro režim pohotovostního agenta

Příručka

Ruční režim je nejvhodnější pro týmy, které znají vzory využití kanálů kontinuální integrace a průběžného doručování (CI/CD). Při použití ruční možnosti je potřeba definovat schéma předběžného zřizování. Schéma definujete na základě vašeho porozumění tomu, jaké agenty ve fondu se budou pravděpodobně používat a kolik agentů se bude pravděpodobně používat. Zadáte počet agentů pro zajištění, kteří splňují projektovanou poptávku.

Můžete vytvořit vlastní plán nasazení nebo si vybrat některý z předdefinovaných. Časové pásmo můžete nakonfigurovat tak, aby používalo k určení plánů. Výchozí hodnota pro časové pásmo předběžného nastavení je (UTC) Koordinovaný univerzální čas.

Ruční pohotovostní agenty můžete nakonfigurovat jedním z následujících tří způsobů:

Každý úvodní průvodce předběžného nastavení má následující společná nastavení (kromě nastavení specifických pro tohoto úvodního průvodce):

  • Časové pásmo předpřipravení: Umožňuje nakonfigurovat časové pásmo pro časové úseky ve schématu předpřipravení. Výchozí hodnota pro Časové pásmo předběžného zřizování je (UTC) Koordinovaný univerzální čas.
  • Procento pohotovostního agenta: Nakonfiguruje procento pohotovostních agentů, které chcete použít pro každou image. Můžete zadat * , abyste zajistili, že jsou všechny image zřízeny stejně, nebo můžete zadat celé číslo od 0 do 100, které představuje procento. Pokud zadáte procento, musí se součet pro všechny obrázky rovnat 100. Pokud máte jeden obrázek, zadejte * nebo 100. Pokud používáte šablony Azure Resource Manager (šablony ARM), můžete nakonfigurovat nastavení Procento agentaStandby v části images. Další informace najdete v tématu Konfigurace imagí.

Snímek obrazovky s režimem ručního pohotovostního režimu

Začátek od nuly

Pokud se rozhodnete začít úplně od začátku, můžete jako schéma zřizování přidat seznam období zřizování. Každé zřizovací období se skládá z počátečního dne, koncového dne, časového pásma, času zahájení, času ukončení a počtu. Období nasazení se nemůžou vzájemně překrývat.

Vlastnost Popis
Vícedenní Když vyberete tuto možnost, můžete nakonfigurovat den počáteční i den koncový pro schéma zřizování.
Do dalšího období Když vyberete tuto možnost, období zřizování probíhá od hodnoty Počáteční čas až do začátku dalšího období zřizování.
Počáteční den Den, kdy začíná zřizovací období.
Koncový den Den, kdy končí období provisioningu. Vyžaduje se, pokud je zvolena možnost vícedenní.
Počáteční čas Čas, kdy začíná období poskytování.
Čas ukončení Čas ukončení období zřizování Je požadováno, pokud není vybráno "Do příštího období".
Počet Počet pohotovostních agentů, kteří se mají přidělit. Toto číslo musí být větší než nula a nesmí překročit hodnotu Maximální agenti v Nastavení fondu.

Po vytvoření období zřizování můžete období odstranit nebo upravit ze seznamu schémat předběžného zřizování.

Následující příklad ukazuje, jak nakonfigurovat ruční schéma s jedním agentem zřízeným v pondělí ráno od 12:00 do 5:00 EST.

Snímek obrazovky znázorňující schéma ručního škálování

Schéma dne v týdnu

Pokud vyberete schéma dne v týdnu, můžete zadat počáteční a koncový čas, mezi kterými je zadaný počet pohotovostních agentů v pohotovostním režimu každý pracovní den.

Vlastnost Popis
Počáteční čas Čas, kdy začíná období poskytování.
Čas ukončení Čas ukončení období zřizování
Počet provisioningů Počet pohotovostních agentů, kteří se mají přidělit. Toto číslo musí být větší než nula a nesmí být větší než Maximální počet agentů nakonfigurovaná v nastavení poolu.

Následující příklad konfiguruje čtyři agenty pro použití během pracovní doby a žádné agenty mimo pracovní dobu a o víkendech, s využitím východního standardního času (UTC-5).

Snímek obrazovky znázorňující schéma dne v týdnu

Schéma celého týdne

Pokud zvolíte schéma celého týdne, můžete zadat počet agentů, které chcete mít po celou dobu k dispozici.

Snímek obrazovky znázorňující schéma celého týdne

Automaticky

Pokud neznáte vzory využití a chcete se spolehnout na automatické prognózování na základě minulých dat, vyberte Možnost Automaticky. Mezi náklady a výkonem agenta můžete vyrovnávat pomocí posuvníku s následujícími pěti možnostmi. Spravované fondy DevOps provádějí dotaz na základě historických dat z uplynulých tří týdnů (pokud jsou k dispozici). Organizuje relace ve frontě v rámci poolu do pětiminutových období a přiřazuje zadaný percentil ke každé hodině, aby nedocházelo ke špičkám.

  • Nákladově nejefektivnější (MostCostEffective): desátý percentil.
  • Nákladově efektivnější (MoreCostEffective): 25. percentil.
  • Vyvážená (výchozí) (Balanced): 50. percentil.
  • Vyšší výkon (MorePerformance): percentil 75.
  • Nejlepší výkon (BestPerformance): 90. percentil.

Snímek obrazovky znázorňující nastavení automatického škálování

Životní cyklus agentů a potenciální zpoždění přidělení

Pokud povolíte pohotovostní agenty pomocí schématu stateless, musíte nainstalovat a nakonfigurovat agenta Azure Pipelines, než přejdete ze stavu ready do stavu přidělený a spustíte kanál.

Když spravované fondy DevOps zřizují nové agenty, pokusí se stáhnout nejnovějšího agenta Azure Pipelines, aby byl již stažen na pohotovostních agentech, než přejdou do stavu připravenosti. Spuštění, připojení a zahájení úlohy může trvat 10 sekund až minutu v závislosti na rychlosti SKU fondu, použitých obrazech a zatížení sítě. Pokud navíc v pipeline úloze zadáte určitá nastavení, může to vést k opětovnému stažení a spuštění jiného agenta. Regrese a vrácení zpět agenta mohou také způsobit znovustažení agenta.

Připravení agenti mají vždy potenciální zpoždění, protože spravované fondy DevOps používají tohoto agenta efemérním způsobem, což znamená, že zapojujeme a spouštíme agenta úloh jednou na úlohu. Pokud se u připravených agentů při vyzvednutí úloh z Azure DevOps zobrazí zpoždění, zvažte následující otázky:

  • Máte připravené agenty? Nejběžnějším problémem je nedorozumění, kdy by agenti měli být předem zřízeni. Pokud jsou splněny následující podmínky, musí být počítače spuštěny od začátku:
    • Počet úloh zařazených do fronty je větší než počet pohotovostních agentů ve fondu.
    • Úlohy se zařadí do fronty mimo plán předběžného zřizování.
    • Počet pohotovostních agentů je nastavený na prázdný.
  • Správně konfigurujete pohotovostní agenty, kteří mají více imagí? Pokud neurčíte pomocí příkazu ImageOverride, který obrázek má být použit ve vašem kanálu, úlohy budou cílit na první obrázek. V závislosti na nastavení škálování možná nebudete mít k dispozici tolik agentů, kolik očekáváte, protože některé jsou přidělené jiným imagím.
  • Používáte ve svých datových tocích poptávku ImageVersionOverride? Když použijete poptávku ImageVersionOverride k určení jiné verze image, než je nakonfigurovaná v nastavení fondu, spustí se každý agent na vyžádání pomocí zadané verze image. Pohotovostní agenti jsou zřízeni pomocí verzí imagí zadaných v konfiguraci fondu. Pokud použijete ImageVersionOverride, žádní záložní agenti nebudou odpovídat této verzi a spustí se nový agent.
  • Zpomalují nastavení proxy serveru, virtuální sítě nebo brány firewall vašemu fondu? Potenciální zpomalení jakéhokoli nastavení sítě vede k delší době spuštění agenta a jeho připojení k Azure DevOps.
  • Přepisujete agentovu verzi? Spravované fondy DevOps ve výchozím nastavení běží na nejnovější verzi agenta úloh Azure DevOps. Nastavení v YAML pipeline (například Agent.Version požadavek) a nastavení nástroje Azure DevOps organizace můžou vynutit, aby pipeline používaly starší verze správce úloh, které si po přidělení stroje vyžádají opětovné stažení.