Udostępnij za pomocą


Konfigurowanie skalowania

Możesz zarządzać wydajnością i kosztami swojej instancji Managed DevOps Pools, konfigurując ustawienia skalowania. Aby uzyskać informacje na temat cen i wydajności, zobacz Zarządzanie kosztami i wydajnością.

Stan agenta

Można skonfigurować pule jako:

  • Stateless: udostępnij nowego agenta dla każdego zadania.
  • Stanowe: zezwalaj na udostępnianie agentów między wieloma zadaniami.

Domyślnym ustawieniem dla puli jest ustawienie bezstanowe, które można osiągnąć, używając opcji Świeży agent za każdym razem. W niektórych przypadkach zespoły mogą chcieć ponownie użyć agentów do ponownego użycia pakietów lub plików utworzonych podczas poprzedniego uruchomienia potoku. Obciążenie kompilacji to typowy scenariusz, w którym zespoły chcą zachować stan i użyć ponownie agentów. Pule stanowe można osiągnąć za pomocą zarządzanych pul DevOps, równoważąc je przy użyciu najlepszych rozwiązań w zakresie zabezpieczeń. Agent może być domyślnie ponownie używany przez maksymalnie siedem dni, ale można go skonfigurować do ponownego recyklingu wcześniej.

Uwaga

Agenci zabezpieczeń zalecają użytkownikom używanie pul bezstanowych jako obrony przed atakami łańcucha dostaw. Użyj ustawienia stanu agenta Odśwież agenta za każdym razem.

Pule bezstanowe

Podczas konfigurowania bezstanowego agenta, dla każdego zadania jest przydzielany nowy agent. Agent zostanie odrzucony po zakończeniu zadania.

Aby dowiedzieć się więcej na temat cyklu życia agentów bezstanowych i sposobu ich użycia w usłudze Azure Pipelines, zobacz sekcję Cykl życia agentów i potencjalne opóźnienia w alokacji .

Zrzut ekranu przedstawiający bezstanowego agenta.

Po ustawieniu stanu agenta na Nowy agent za każdym razem nowy agent jest pozyskiwany dla każdego zadania. Agent zostanie odrzucony po zakończeniu zadania.

Pule stanowe

Zrzut ekranu przedstawiający agenta stanowego.

Po włączeniu tego samego agenta można używać przez wiele kompilacji ( "kind": "stateful" ustawienie w szablonach zasobów lub { "stateful": {...} } ustawienie w interfejsie wiersza polecenia platformy Azure), agenci w puli są stanowi. Pule stanowe można skonfigurować przy użyciu następujących ustawień:

  • Maksymalny czas życia dla agentów rezerwowych (maxAgentLifetime) konfiguruje maksymalny czas działania agenta w puli z zachowaniem stanu, zanim zostanie zamknięty i odrzucony. Format maksymalnego czasu wygaśnięcia dla agentów rezerwowych to dd.hh:mm:ss. Wartość domyślna maksymalna czasu wygaśnięcia dla agentów rezerwowych jest ustawiona na maksymalny dozwolony czas trwania siedmiu dni (7.00:00:00).

  • Okres prolongaty (gracePeriodTimeSpan) konfiguruje czas oczekiwania agenta w puli stanowej na nowe zadania przed zamknięciem po zakończeniu wszystkich bieżących i w kolejce zadań. Format okresu prolongaty to dd.hh:mm:ss i domyślny okres prolongaty nie jest okresem prolongaty.

    Ważne

    Jeśli zadanie jest uruchomione, gdy wygaśnie maksymalny czas życia dla agentów rezerwowych, agent nie zostanie zamknięty do momentu zakończenia zadania, chyba że zadanie trwa dłużej niż dwa dni. Pojedyncze zadania w zarządzanych pulach DevOps mogą działać maksymalnie przez dwa dni, nawet jeśli są uruchamiane na agencie rezerwowym, którego ustawienie maksymalnego czasu życia przekracza dwa dni dla agentów rezerwowych. Skontaktuj się z pomocą techniczną, jeśli przepływ pracy wymaga uruchomienia pojedynczego zadania, które trwa dłużej niż dwa dni.

Agenci w pulach bezstanowych są zamykani i odrzucani po każdym zadaniu. Agenci w pulach stanowych nadal działają, jeżeli spełniony jest którykolwiek z następujących warunków:

  • Jeśli kolejne zadanie jest w kolejce po zakończeniu pierwszego zadania, Zarządzana pula DevOps przekazuje kolejne zadanie do agenta, który obsłużył pierwsze zadanie, zamiast go zamknąć.
  • Jeśli dla puli skonfigurowano okres prolongaty, agenci czekają na nowe zadania na czas określony przez okres prolongaty przed zamknięciem.
  • Jeśli agenci rezerwowi są włączeni, a obraz agenta spełnia kryteria aktywnego okresu aprowizacji, agent będzie nadal działać i czekać na zadania.

Agenci, którzy działają w pulach stanowych, są zamykani i odrzucani, jeśli są one uruchamiane w sposób ciągły przez czas określony przez maksymalny czas wygaśnięcia dla agentów rezerwowych, nawet jeśli poprzednie warunki są spełnione. Jeśli na przykład maksymalny czas życia agentów rezerwowych jest skonfigurowany na trzy dni, a tryb agenta rezerwowego jest ustawiony na Manual, All Week Scheme (Maszyny dostępne 24/7), agenci zostają ponownie uruchomieni po trzech ciągłych dniach pracy.

Ważne

Agenci w stanowych pulach mogą być nadal zamykani i odrzucani po zakończeniu zadania, jeśli nie ma przyznanego okresu łaski, czynnego okresu przydziału dla agentów rezerwowych oraz jeśli nie ma zadań w kolejce pasujących do agenta. Gdy agent zostanie odrzucony, każdy stan zostanie utracony.

Okresy karencji umożliwiają najbardziej efektywny sposób działania zespołów z zachowaniem stanu dla potoków ze spójnym obciążeniem. Okresy prolongaty nie wymagają korzystania z trybu oczekiwania agenta, aby agenci pozostali online i gotowi do przyjmowania zadań.

Tryb agenta rezerwowego

Podczas tworzenia puli tryb agenta rezerwowego jest domyślnie wyłączony. Gdy tryb rezerwowego agenta jest wyłączony, nie ma agentów rezerwowych do natychmiastowego przypisania do potoków. Twoje potoki mogą czasem wymagać odczekania od kilku chwil do 15 minut, zanim agent zostanie przydzielony na żądanie. Aby uzyskać lepszą wydajność, włącz tryb agenta rezerwowego i skonfiguruj harmonogram agenta rezerwowego, który zapewnia pojemność dla obciążenia.

Podczas konfigurowania harmonogramu agenta rezerwowego, Managed DevOps Pools okresowo porównuje liczbę aprowizowanych agentów z liczbą agentów rezerwowych określoną w bieżącym schemacie aprowizacji. Uruchamia nowych agentów zgodnie z wymaganiami, aby zachować liczbę agentów rezerwowych. Bieżący stan i liczba agentów w puli można wyświetlić przy użyciu okienka Agenci .

Ważne

Liczba aprowizacji w schemacie nie może być większa niż wartość Maksymalna liczba agentów, którą skonfigurowano w ustawieniach puli.

Tryb agenta rezerwowego można skonfigurować przy użyciu następujących ustawień:

  • Wyłączone: Tryb agenta w stanie gotowości jest wyłączony, a agenci są przydzielani na żądanie w momencie kolejkowania zadań.
  • Ręczne: Skonfiguruj ręczny harmonogram trybu oczekiwania.
  • Automatyczne: użyj automatycznego harmonogramu rezerwowego na podstawie historii użycia agenta. Można go skonfigurować pod kątem kosztów i wydajności.

Zrzut ekranu przedstawiający opcje trybu agenta rezerwowego.

Ręcznie

Tryb ręczny jest najlepszy dla zespołów, które znają wzorce wykorzystywania potoków ciągłej integracji i ciągłego dostarczania (CI/CD). W przypadku korzystania z opcji ręcznej należy zdefiniować schemat wstępnej aprowizacji. Schemat można zdefiniować na podstawie zrozumienia, jakich agentów w puli najprawdopodobniej będzie używanych i ilu agentów prawdopodobnie będzie używanych. Należy określić liczbę agentów, którzy spełniają przewidywane zapotrzebowanie.

Możesz utworzyć własny harmonogram aprowizacji lub wybrać jeden ze wstępnie zdefiniowanych harmonogramów. Możesz skonfigurować strefę czasową, która będzie używana do określania harmonogramów. Wartość domyślna wstępnego aprowizowania strefy czasowej to (UTC) uniwersalny czas koordynowany.

Agentów rezerwowych można skonfigurować na jeden z następujących trzech sposobów:

Każdy z przewodników szybkiego startu dotyczących wstępnej aprowizacji ma następujące wspólne ustawienia (oprócz ustawień specyficznych dla tego konkretnego przewodnika szybkiego startu):

  • Wstępne aprowizowanie strefy czasowej: umożliwia skonfigurowanie strefy czasowej dla okresów w schemacie wstępnej aprowizacji. Wartość domyślna wstępnego aprowizowania strefy czasowej to (UTC) uniwersalny czas koordynowany.
  • Procent agenta rezerwowego: konfiguruje procent agentów rezerwowych, których chcesz użyć dla każdego obrazu. Możesz wprowadzić polecenie * , aby upewnić się, że wszystkie obrazy są aprowidowane w równym stopniu lub można określić liczbę całkowitą z zakresu od 0 do 100, aby reprezentować wartość procentową. Jeśli określisz wartość procentową, suma dla wszystkich obrazów musi być równa 100. Jeśli masz pojedynczy obraz, określ * wartość lub 100. W przypadku korzystania z szablonów Azure Resource Manager (szablonów ARM) można skonfigurować ustawienie procent stanu gotowości agenta w sekcji images. Aby uzyskać więcej informacji, zobacz Konfigurowanie obrazów.

Zrzut ekranu przedstawiający tryb wstrzymania ręcznego.

Rozpoczynanie od zera

Jeśli zdecydujesz się rozpocząć od podstaw, możesz dodać listę okresów prowizjonowania jako swój schemat prowizjonowania. Każdy okres przypisania składa się z dnia rozpoczęcia, dnia zakończenia, strefy czasowej, godziny rozpoczęcia, godziny zakończenia i ilości. Okresy aprowizacji nie mogą się nakładać na siebie.

Właściwości opis
Wiele dni Po wybraniu tej opcji można skonfigurować zarówno dzień rozpoczęcia , jak i dzień zakończenia dla schematu aprowizacji.
Do następnego okresu Po wybraniu tej opcji, przydział rozpoczyna się od wartości Godzina rozpoczęcia i trwa do początku następnego okresu przydziału.
Dzień rozpoczęcia Dzień rozpoczęcia okresu aprowizacji.
Dzień zakończenia Dzień zakończenia okresu udzielania dostępu. Wymagane, jeśli wybrano opcję Multi-Day .
Godzina rozpoczęcia Czas rozpoczęcia okresu przygotowania.
Godzina zakończenia Czas zakończenia okresu aprowizacji. Wymagane, chyba że zostanie wybrane do następnego okresu.
Liczba Liczba agentów rezerwowych do aprowizacji. Ta liczba musi być większa niż zero i nie może być większa niż wartość Maksymalna liczba agentów w ustawieniach puli.

Po utworzeniu okresu aprowizacji można usunąć lub edytować okres z listy Schemat wstępnej aprowizacji .

W poniższym przykładzie pokazano, jak skonfigurować ręczny schemat z jednym agentem zaaprogramowanym na poniedziałek rano od 00:00 do 5:00 czasu wschodniego standardowego (EST).

Zrzut ekranu przedstawiający schemat skalowania ręcznego.

Schemat dni powszedni

W przypadku wybrania szablonu dni roboczych można określić godzinę rozpoczęcia i godzinę zakończenia, między którymi określona liczba agentów rezerwowych jest w gotowości każdy dzień roboczy.

Właściwości opis
Godzina rozpoczęcia Czas rozpoczęcia okresu przygotowania.
Godzina zakończenia Czas zakończenia okresu aprowizacji.
Liczba provisioningu Liczba agentów rezerwowych do aprowizacji. Ta liczba musi być większa niż zero i nie może być większa niż wartość Maksymalna liczba agentów skonfigurowana w ustawieniach puli.

W poniższym przykładzie skonfigurowano czterech agentów do użycia w godzinach pracy, a poza godzinami pracy i w weekendy nie skonfigurowano żadnych agentów, zgodnie z czasem wschodnim (UTC-5).

Zrzut ekranu przedstawiający schemat dni powszedni.

Schemat całotygodniowy

Jeśli wybierzesz schemat całodniowy, możesz określić liczbę agentów, które mają być dostępne przez cały czas.

Zrzut ekranu przedstawiający schemat całotygodniowy.

Automatyczne

Jeśli nie znasz wzorców użycia i chcesz polegać na automatycznym prognozowaniu na podstawie przeszłych danych, wybierz pozycję Automatycznie. Możesz równoważyć koszty i wydajność agenta za pomocą suwaka z następującymi pięcioma opcjami. Zarządzane pule DevOps uruchamiają zapytanie na podstawie danych historycznych z ostatnich trzech tygodni (jeśli są dostępne). Organizuje sesje w kolejce puli w pięciominutowe okresy i przypisuje określony percentyl (aby uniknąć skoków) do każdej godziny.

  • Najbardziej ekonomiczne (MostCostEffective): dziesiąty percentyl.
  • Bardziej ekonomiczne (MoreCostEffective): 25. percentyl.
  • Zrównoważony (wartość domyślna) (Balanced): 50. percentyl.
  • Większa wydajność (MorePerformance): 75. percentyl.
  • Najlepsza wydajność (BestPerformance): 90-ty percentyl.

Zrzut ekranu przedstawiający ustawienie automatycznego skalowania.

Cykl życia agentów i potencjalne opóźnienia alokacji

Po włączeniu agentów rezerwowych przy użyciu schematu bezstanowego należy zainstalować i skonfigurować agenta usługi Azure Pipelines przed przejściem ze stanu gotowego do stanu przydzielonego i uruchomienie potoku.

Gdy zarządzane pule DevOps aprowizują nowych agentów, próbuje pobrać najnowszego agenta usługi Azure Pipelines, aby został już pobrany na agentów oczekujących przed przejściem do stanu gotowości. Uruchamianie, połączenie i rozpoczynanie zadania może potrwać od 10 sekund do minut w zależności od szybkości jednostki SKU puli, użytego obrazu i obciążenia sieciowego. Ponadto po określeniu niektórych ustawień w zadaniu potoku może to spowodować ponowne pobranie i uruchomienie innego agenta. Wycofania i regresje agenta mogą również spowodować jego ponowne pobranie.

Gotowi agenci zawsze mają potencjalne opóźnienie, ponieważ Zarządzane pule DevOps używają tego agenta w sposób tymczasowy, co oznacza, że uruchamiamy agenta zadań jednokrotnie dla każdego zadania. Jeśli widzisz opóźnienia w gotowych agentach odbierających zadania z usługi Azure DevOps, rozważ następujące pytania:

  • Czy masz gotowych agentów? Najczęstszym problemem jest nieporozumienie, kiedy agenci powinni być przygotowani z wyprzedzeniem. Kiedy spełnione są następujące warunki, maszyny muszą być uruchamiane od nowa.
    • Liczba zadań w kolejce jest większa niż liczba agentów rezerwowych w puli.
    • Zadania są kolejkowane poza harmonogramem wstępnego przygotowania.
    • Liczba agentów rezerwowych ma być pusta.
  • Czy prawidłowo konfigurujesz agentów zapasowych, które mają wiele obrazów? Jeśli nie określisz, który obraz użyć w potoku za pomocą żądania ImageOverride, zadania automatycznie korzystają z pierwszego obrazu. W zależności od ustawień skalowania może nie być dostępnych tak wielu agentów, jak oczekiwano, ponieważ niektóre z nich są przydzielane do innych obrazów.
  • Czy używasz ImageVersionOverride żądania w strumieniach danych? Jeśli używasz ImageVersionOverride żądania do określenia innej wersji obrazu niż skonfigurowana w ustawieniach puli, każdy agent uruchamia się na żądanie przy użyciu określonej wersji obrazu. Agenci rezerwowi są aprowizowani przy użyciu wersji obrazów określonych w konfiguracji puli. Jeśli używasz programu ImageVersionOverride, żaden agent rezerwowy nie będzie pasować do tej wersji i zostanie uruchomiony nowy agent.
  • Czy ustawienia serwera proxy, sieci wirtualnej lub zapory spowalniają pulę? Potencjalne spowolnienie z dowolnego ustawienia sieci powoduje, że agenci będą dłużej uruchamiać agenta i łączyć go z usługą Azure DevOps.
  • Czy zastępujesz wersję agenta? Domyślnie zarządzane pule DevOps są uruchamiane na najnowszej wersji agenta zadań Azure DevOps. Ustawienia w potoku YAML (takie jak Agent.Version żądanie) i parametry organizacji usługi Azure DevOps mogą wymusić użycie starszych wersji agenta wykonawczego zadań, co wymaga ponownego pobrania po alokacji maszyny.