Najlepsze rozwiązania dotyczące usługi Azure Batch
W tym artykule omówiono najlepsze rozwiązania i przydatne wskazówki dotyczące efektywnego korzystania z usługi Azure Batch. Te porady mogą pomóc zwiększyć wydajność i uniknąć pułapek projektowych w rozwiązaniach usługi Batch.
Napiwek
Aby uzyskać wskazówki dotyczące zabezpieczeń w usłudze Azure Batch, zobacz Najlepsze rozwiązania dotyczące zabezpieczeń i zgodności usługi Batch.
Pule
Pule to zasoby obliczeniowe do wykonywania zadań w usłudze Batch. Poniższe sekcje zawierają zalecenia dotyczące pracy z pulami usługi Batch.
Konfiguracja i nazewnictwo puli
Tryb alokacji puli: podczas tworzenia konta usługi Batch można wybrać między dwoma trybami alokacji puli: usługą Batch lub subskrypcją użytkownika. W większości przypadków należy użyć domyślnego trybu usługi Batch, w którym pule są przydzielane w tle w subskrypcjach zarządzanych przez usługę Batch. W alternatywnym trybie subskrypcji użytkownika maszyny wirtualne i inne zasoby usługi Batch są tworzone bezpośrednio w Twojej subskrypcji po utworzeniu puli. Konta subskrypcji użytkowników są używane głównie do włączania małego, ale ważnego podzestawu scenariuszy. Aby uzyskać więcej informacji, zobacz konfiguracja trybu subskrypcji użytkownika.
classic
lubsimplified
tryb komunikacji węzła: pule można skonfigurować w jednym z dwóch trybów komunikacji węzłów, klasycznym lub uproszczonym. W klasycznym modelu komunikacji węzłów usługa Batch inicjuje komunikację z węzłami obliczeniowymi, a węzły obliczeniowe również wymagają komunikacji z usługą Azure Storage. W uproszczonym modelu komunikacji węzłów węzły obliczeniowe inicjują komunikację z usługą Batch. Ze względu na ograniczony zakres wymaganych połączeń przychodzących/wychodzących, a nie wymaganie dostępu wychodzącego usługi Azure Storage dla operacji linii bazowej, zaleca się użycie uproszczonego modelu komunikacji węzła. Niektóre przyszłe ulepszenia usługi Batch będą również wymagać uproszczonego modelu komunikacji węzła. Klasyczny model komunikacji węzłów zostanie wycofany 31 marca 2026 r.Zagadnienia dotyczące czasu wykonywania zadań i zadań: jeśli masz zadania składające się głównie z zadań krótko działających, a oczekiwane łączne liczby zadań są małe, tak aby całkowity oczekiwany czas wykonywania zadania nie był długi, nie przydzielaj nowej puli dla każdego zadania. Czas alokacji węzłów zmniejszy czas wykonywania zadania.
Wiele węzłów obliczeniowych: poszczególne węzły nie są zawsze dostępne. Chociaż nietypowe awarie sprzętu, aktualizacje systemu operacyjnego i wiele innych problemów mogą spowodować, że poszczególne węzły będą w trybie offline. Jeśli obciążenie usługi Batch wymaga deterministycznego, gwarantowanego postępu, należy przydzielić pule z wieloma węzłami.
Obrazy z zbliżającą się datą zakończenia życia (EOL): zdecydowanie zaleca się unikanie obrazów z zbliżającą się datą zakończenia wsparcia usługi Batch (EOL). Te daty można odnaleźć za pośrednictwem interfejsu API, programu PowerShell lub interfejsu
ListSupportedImages
wiersza polecenia platformy Azure. Twoim obowiązkiem jest okresowe odświeżanie widoku dat EOL istotnych dla pul i migrowanie obciążeń przed datą EOL. Jeśli używasz obrazu niestandardowego z określonym agentem węzła, upewnij się, że stosujesz daty zakończenia okresu eksploatacji usługi Batch dla obrazu, dla którego jest uzyskiwany lub wyrównany obraz niestandardowy. Obraz bez określonejbatchSupportEndOfLife
daty wskazuje, że taka data nie została jeszcze określona przez usługę Batch. Brak daty nie wskazuje, że odpowiedni obraz będzie obsługiwany na czas nieokreślony. Data EOL może zostać dodana lub zaktualizowana w przyszłości w dowolnym momencie.Jednostki SKU maszyn wirtualnych z zbliżającą się datą zakończenia życia (EOL): Podobnie jak w przypadku obrazów maszyn wirtualnych, jednostek SKU maszyn wirtualnych lub rodzin może również osiągnąć koniec życia wsparcia usługi Batch (EOL). Te daty można odnaleźć za pośrednictwem interfejsu API, programu PowerShell lub interfejsu
ListSupportedVirtualMachineSkus
wiersza polecenia platformy Azure. Zaplanuj migrację obciążenia do jednostki SKU maszyny wirtualnej innej niż EOL, tworząc nową pulę z odpowiednią obsługiwaną jednostkę SKU maszyny wirtualnej. Brak skojarzonejbatchSupportEndOfLife
daty dla jednostki SKU maszyny wirtualnej nie wskazuje, że określona jednostka SKU maszyny wirtualnej będzie obsługiwana przez czas nieokreślony. Data EOL może zostać dodana lub zaktualizowana w przyszłości w dowolnym momencie.Unikatowe nazwy zasobów: zasoby usługi Batch (zadania, pule itp.) często pojawiają się i przechodzą w czasie. Na przykład możesz utworzyć pulę w poniedziałek, usunąć ją we wtorek, a następnie utworzyć inną podobną pulę w czwartek. Każdy utworzony zasób powinien mieć unikatową nazwę, której wcześniej nie użyto. Unikatowość można utworzyć przy użyciu identyfikatora GUID (jako całej nazwy zasobu lub jako jej części) lub przez osadzenie daty i godziny utworzenia zasobu w nazwie zasobu. Usługa Batch obsługuje funkcję DisplayName, która może nadać zasobowi bardziej czytelną nazwę, nawet jeśli rzeczywisty identyfikator zasobu jest czymś, co nie jest przyjazne dla człowieka. Użycie unikatowych nazw ułatwia odróżnienie konkretnego zasobu w dziennikach i metrykach. Spowoduje to również usunięcie niejednoznaczności, jeśli kiedykolwiek trzeba zgłosić zgłoszenie do pomocy technicznej dla zasobu.
Ciągłość podczas konserwacji i awarii puli: najlepiej, aby zadania używały pul dynamicznie. Jeśli zadania używają tej samej puli dla wszystkich elementów, istnieje prawdopodobieństwo, że zadania nie będą uruchamiane, jeśli coś pójdzie nie tak z pulą. Ta zasada jest szczególnie ważna w przypadku obciążeń z uwzględnieniem czasu. Na przykład wybierz lub utwórz pulę dynamicznie podczas planowania każdego zadania lub możesz zastąpić nazwę puli, aby można było pominąć pulę w złej kondycji.
Ciągłość działania podczas konserwacji i awarii puli: istnieje wiele powodów, dla których pula może nie zwiększać się do pożądanego rozmiaru, na przykład błędów wewnętrznych lub ograniczeń pojemności. Upewnij się, że zadania retarget można wykonywać w innej puli (prawdopodobnie z innym rozmiarem maszyny wirtualnej przy użyciu zadania UpdateJob), jeśli to konieczne. Unikaj polegania na identyfikatorze puli statycznej z oczekiwaniem, że nigdy nie zostanie usunięty i nigdy nie ulegnie zmianie.
Zabezpieczenia puli
Granica izolacji
Na potrzeby izolacji, jeśli scenariusz wymaga izolowania zadań lub zadań od siebie, zrób to, mając je w oddzielnych pulach. Pula to granica izolacji zabezpieczeń w usłudze Batch, a domyślnie dwie pule nie są widoczne ani nie mogą się ze sobą komunikować. Unikaj używania oddzielnych kont usługi Batch jako środka izolacji zabezpieczeń, chyba że większe środowisko, z którego działa konto usługi Batch, wymaga izolacji.
Aktualizacje agenta węzła usługi Batch
Agenci węzłów usługi Batch nie są automatycznie uaktualniani dla pul, które mają węzły obliczeniowe niezerowe. Aby zapewnić, że pule usługi Batch otrzymają najnowsze poprawki zabezpieczeń i aktualizacje agenta węzła usługi Batch, musisz zmienić rozmiar puli na zero węzłów obliczeniowych lub utworzyć ponownie pulę. Zaleca się monitorowanie informacji o wersji agenta węzła usługi Batch w celu zrozumienia zmian w nowych wersjach agenta węzła usługi Batch. Regularne sprawdzanie dostępności aktualizacji po ich wydaniu umożliwia zaplanowanie uaktualnień do najnowszej wersji agenta.
Przed ponownym utworzeniem lub zmianą rozmiaru puli należy pobrać dzienniki agenta węzła na potrzeby debugowania, jeśli występują problemy z pulą usługi Batch lub węzłami obliczeniowymi. Ten proces został dokładniej omówiony w sekcji Węzły .
Uwaga
Aby uzyskać ogólne wskazówki dotyczące zabezpieczeń w usłudze Azure Batch, zobacz Najlepsze rozwiązania dotyczące zabezpieczeń i zgodności usługi Batch.
Aktualizacje systemu operacyjnego
Zaleca się, aby obraz maszyny wirtualnej wybrany dla puli usługi Batch był aktualny wraz z najnowszymi aktualizacjami zabezpieczeń udostępnianymi przez wydawcę.
Niektóre obrazy mogą wykonywać automatyczne aktualizacje pakietów podczas rozruchu (lub wkrótce potem), co może zakłócać niektóre akcje kierowane przez użytkownika, apt update
takie jak pobieranie aktualizacji repozytorium pakietów (na przykład ) lub instalowanie pakietów podczas akcji, takich jak StartTask.
Zaleca się włączenie automatycznego uaktualniania systemu operacyjnego dla pul usługi Batch, co umożliwia podstawowej infrastrukturze platformy Azure koordynowanie aktualizacji w puli. Tę opcję można skonfigurować tak, aby nie można było wykonywać zadań. Automatyczne uaktualnianie systemu operacyjnego nie obsługuje wszystkich systemów operacyjnych, które obsługuje usługa Batch. Aby uzyskać więcej informacji, zobacz Macierz obsługi automatycznego uaktualniania systemu operacyjnego zestawów skalowania maszyn wirtualnych.
W przypadku systemów operacyjnych Windows upewnij się, że nie włączasz właściwości virtualMachineConfiguration.windowsConfiguration.enableAutomaticUpdates
podczas korzystania z automatycznego uaktualniania systemu operacyjnego w puli usługi Batch.
Usługa Azure Batch nie weryfikuje ani nie gwarantuje, że obrazy dozwolone do użycia z usługą mają najnowsze aktualizacje zabezpieczeń.
Aktualizacje obrazów znajdują się w widoku wydawcy obrazu, a nie w usłudze Azure Batch. W przypadku niektórych obrazów opublikowanych w ramach programu microsoft-azure-batch
nie ma gwarancji, że te obrazy są na bieżąco z ich nadrzędnym obrazem pochodnym.
Okres istnienia puli i rozliczenia
Okres istnienia puli może się różnić w zależności od metody alokacji i opcji zastosowanych do konfiguracji puli. Pule mogą mieć dowolny okres istnienia i różną liczbę węzłów obliczeniowych w dowolnym momencie. Twoim zadaniem jest jawne zarządzanie węzłami obliczeniowymi w puli lub za pośrednictwem funkcji udostępnianych przez usługę (autoskalowanie lub automatyczne buforowanie).
Rekreacja w basenie: unikaj codziennego usuwania i ponownego tworzenia pul. Zamiast tego utwórz nową pulę, a następnie zaktualizuj istniejące zadania, aby wskazywały nową pulę. Po przeniesieniu wszystkich zadań do nowej puli usuń starą pulę.
Wydajność puli i rozliczenia: sama usługa Batch nie ponosi dodatkowych opłat. Jednak naliczane są opłaty za wykorzystane zasoby platformy Azure, takie jak obliczenia, magazyn, sieć i wszelkie inne zasoby, które mogą być wymagane dla obciążenia usługi Batch. Opłaty są naliczane za każdy węzeł obliczeniowy w puli, niezależnie od stanu, w którym się znajduje. Aby uzyskać więcej informacji, zobacz Analiza kosztów i budżety dla usługi Azure Batch.
Efemeryczne dyski systemu operacyjnego: pule konfiguracji maszyny wirtualnej mogą używać efemerycznych dysków systemu operacyjnego, które tworzą dysk systemu operacyjnego w pamięci podręcznej maszyny wirtualnej lub tymczasowy dysk SSD, aby uniknąć dodatkowych kosztów związanych z dyskami zarządzanymi.
Błędy alokacji puli
Błędy alokacji puli mogą wystąpić w dowolnym momencie podczas pierwszej alokacji lub kolejnych zmian rozmiaru. Te błędy mogą być spowodowane tymczasowym wyczerpaniem pojemności w regionie lub awariami w innych usługach platformy Azure, na których opiera się usługa Batch. Limit przydziału rdzeni nie jest gwarancją, ale raczej limitem.
Nieplanowany przestój
Pule usługi Batch mogą doświadczać zdarzeń przestojów na platformie Azure. Zrozumienie, że mogą wystąpić problemy i należy opracować przepływ pracy, aby był odporny na ponowne wykonywanie. Jeśli węzły kończą się niepowodzeniem, usługa Batch automatycznie próbuje odzyskać te węzły obliczeniowe w Twoim imieniu. To odzyskiwanie może wyzwolić ponowne zaplanowanie wszystkich uruchomionych zadań w węźle, który jest przywracany lub w innym dostępnym węźle. Aby dowiedzieć się więcej o przerwanych zadaniach, zobacz Projektowanie ponownych prób.
Niestandardowe pule obrazów
Podczas tworzenia puli usługi Azure Batch przy użyciu konfiguracji maszyny wirtualnej należy określić obraz maszyny wirtualnej, który udostępnia system operacyjny dla każdego węzła obliczeniowego w puli. Pulę można utworzyć przy użyciu obsługiwanego obrazu witryny Azure Marketplace lub utworzyć obraz niestandardowy przy użyciu obrazu galerii obliczeń platformy Azure. Chociaż można również użyć obrazu zarządzanego do utworzenia niestandardowej puli obrazów, zalecamy tworzenie obrazów niestandardowych przy użyciu galerii obliczeń platformy Azure, jeśli jest to możliwe. Korzystanie z galerii zasobów obliczeniowych platformy Azure ułatwia szybsze aprowizowanie pul, skalowanie większych ilości maszyn wirtualnych i poprawia niezawodność podczas aprowizowania maszyn wirtualnych.
Obrazy innych firm
Pule można tworzyć przy użyciu obrazów innych firm opublikowanych w witrynie Azure Marketplace. W przypadku kont usługi Batch w trybie subskrypcji użytkownika może zostać wyświetlony błąd "Alokacja nie powiodła się z powodu sprawdzenia uprawnień do zakupu na platformie handlowej" podczas tworzenia puli z określonymi obrazami innych firm. Aby rozwiązać ten błąd, zaakceptuj warunki ustawione przez wydawcę obrazu. Możesz to zrobić przy użyciu programu Azure PowerShell lub interfejsu wiersza polecenia platformy Azure.
Pule kontenerów
Podczas tworzenia puli usługi Batch z siecią wirtualną mogą występować skutki uboczne interakcji między określoną siecią wirtualną a domyślnym mostkiem platformy Docker. Docker domyślnie tworzy mostek sieciowy ze specyfikacją podsieci 172.17.0.0/16
. Upewnij się, że między mostem sieci platformy Docker a siecią wirtualną nie istnieją żadne sprzeczne zakresy adresów IP.
Usługa Docker Hub ogranicza liczbę ściągnięcia obrazów. Upewnij się, że obciążenie nie przekracza opublikowanych limitów szybkości dla obrazów opartych na usłudze Docker Hub. Zaleca się bezpośrednie używanie usługi Azure Container Registry lub korzystanie z pamięci podręcznej Artifact w usłudze ACR.
Zależność regionu świadczenia usługi Azure
Nie należy polegać na jednym regionie świadczenia usługi Azure, jeśli masz obciążenie czasowe lub produkcyjne. Chociaż rzadko występują problemy, które mogą mieć wpływ na cały region. Jeśli na przykład przetwarzanie musi rozpocząć się w określonym czasie, rozważ skalowanie puli w górę w regionie podstawowym na długo przed rozpoczęciem. Jeśli skalowanie puli zakończy się niepowodzeniem, możesz wrócić do skalowania puli w górę w regionie kopii zapasowej (lub regionach).
Pule na wielu kontach w różnych regionach zapewniają gotową, łatwo dostępną kopię zapasową, jeśli coś pójdzie nie tak z inną pulą. Aby uzyskać więcej informacji, zobacz Projektowanie aplikacji pod kątem wysokiej dostępności.
Stanowiska
Zadanie to kontener przeznaczony do przechowywania setek, tysięcy, a nawet milionów zadań. Postępuj zgodnie z tymi wytycznymi podczas tworzenia zadań.
Mniejsza liczba zadań, więcej zadań
Uruchamianie pojedynczego zadania przy użyciu zadania jest nieefektywne. Na przykład bardziej wydajne jest użycie pojedynczego zadania zawierającego 1000 zadań zamiast tworzenia 100 zadań zawierających 100 zadań. Jeśli użyto 1000 zadań, każde z jednym zadaniem, które byłoby najmniej wydajne, najwolniejsze i najdroższe podejście do podjęcia.
Unikaj projektowania rozwiązania usługi Batch, które wymaga tysięcy jednocześnie aktywnych zadań. Nie ma limitu przydziału dla zadań, więc wykonywanie wielu zadań w ramach jak najmniejszej liczby zadań, jak to możliwe, efektywnie używa przydziałów zadania i harmonogramu zadań.
Okres istnienia zadania
Zadanie usługi Batch ma nieokreślony okres istnienia, dopóki nie zostanie usunięte z systemu. Jego stan określa, czy może zaakceptować więcej zadań do planowania, czy nie.
Zadanie nie jest automatycznie przenoszone do stanu ukończonego, chyba że jawnie zostało zakończone. Tę akcję można wyzwalać automatycznie za pomocą właściwości onAllTasksComplete lub maxWallClockTime.
Istnieje domyślny aktywny przydział zadania i harmonogramu zadań. Harmonogramy zadań i zadań w stanie ukończenia nie są uwzględniane w tym limitzie przydziału.
Usuń zadania, gdy nie są już potrzebne, nawet jeśli są w stanie ukończonym. Mimo że ukończone zadania nie są uwzględniane w stosunku do aktywnego limitu przydziału zadań, korzystne jest okresowe czyszczenie ukończonych zadań. Na przykład wyświetlanie listy zadań będzie bardziej wydajne, gdy łączna liczba zadań jest mniejszym zestawem (nawet jeśli odpowiednie filtry są stosowane do żądania).
Zadania
Zadania to poszczególne jednostki pracy, które składają się na zadanie. Zadania są przesyłane przez użytkownika i zaplanowane przez usługę Batch w węzłach obliczeniowych. Poniższe sekcje zawierają sugestie dotyczące projektowania zadań w celu obsługi problemów i wydajnego wykonywania.
Zapisywanie danych zadania
Węzły obliczeniowe mają charakter efemeryczny. Funkcje usługi Batch, takie jak automatyczne buforowanie i autoskalowanie , mogą ułatwić zniknięcie węzłów. Gdy węzły opuszczają pulę (ze względu na zmianę rozmiaru lub usunięcie puli), wszystkie pliki w tych węzłach również zostaną usunięte. Ze względu na to zachowanie zadanie powinno przenieść dane wyjściowe z węzła, na którym jest uruchomiona, oraz do trwałego magazynu przed jego ukończeniem. Podobnie, jeśli zadanie zakończy się niepowodzeniem, powinno przenieść dzienniki wymagane do zdiagnozowania awarii trwałego magazynu.
Usługa Batch zintegrowała obsługę usługi Azure Storage w celu przekazywania danych za pośrednictwem plików OutputFiles i różnych udostępnionych systemów plików lub możesz wykonać przekazywanie samodzielnie w zadaniach.
Zarządzanie okresem istnienia zadania
Usuń zadania, gdy nie są już potrzebne lub ustaw ograniczenie zadania retentionTime . Jeśli element retentionTime
jest ustawiony, usługa Batch automatycznie czyści miejsce na dysku używane przez zadanie po retentionTime
wygaśnięciu.
Usuwanie zadań wykonuje dwie rzeczy:
- Gwarantuje, że nie masz kompilacji zadań w zadaniu. Ta akcja pomoże uniknąć trudności w znalezieniu zadania, które cię interesuje, ponieważ trzeba będzie filtrować przez ukończone zadania.
- Czyści odpowiednie dane zadania w węźle (podane
retentionTime
jeszcze nie zostały trafione). Ta akcja pomaga zapewnić, że węzły nie wypełniają danych zadań i nie zabraknie miejsca na dysku.
Uwaga
W przypadku zadań przesłanych do usługi Batch wywołanie interfejsu API DeleteTask trwa do 10 minut. Przed rozpoczęciem działania inne zadania mogą nie być zaplanowane. Jest to spowodowane tym, że harmonogram usługi Batch nadal próbuje zaplanować właśnie usunięte zadania. Jeśli chcesz usunąć jedno zadanie wkrótce po jego przesłaniu, zakończ zadanie zamiast tego (ponieważ żądanie zakończenia zadania zacznie obowiązywać natychmiast). Następnie usuń zadanie 10 minut później.
Przesyłanie dużej liczby zadań w kolekcji
Zadania można przesyłać indywidualnie lub w kolekcjach. Przesyłaj zadania w kolekcjach do 100 naraz podczas zbiorczego przesyłania zadań w celu zmniejszenia nakładu pracy i czasu przesyłania.
Odpowiednio ustaw maksymalne zadania na węzeł
Usługa Batch obsługuje zasubskrybowanie zadań w węzłach (uruchamianie większej liczby zadań niż węzeł ma rdzenie). Musisz mieć pewność, że zadania mają odpowiedni rozmiar dla węzłów w puli. Na przykład może wystąpić obniżona wydajność, jeśli próbujesz zaplanować osiem zadań, które zużywają 25% użycia procesora CPU na jednym węźle (w puli z taskSlotsPerNode = 8
programem ).
Projektowanie pod kątem ponownych prób i ponownego wykonania
Zadania mogą być automatycznie ponawiane przez usługę Batch. Istnieją dwa typy ponownych prób: sterowane przez użytkownika i wewnętrzne. Ponowne próby kontrolowane przez użytkownika są określane przez maxTaskRetryCount zadania. Gdy program określony w zadaniu kończy działanie z kodem zakończenia bezzerowym, zadanie jest ponawiane do wartości maxTaskRetryCount
.
Mimo że rzadko zadanie można ponowić wewnętrznie z powodu awarii w węźle obliczeniowym, takich jak brak możliwości aktualizacji stanu wewnętrznego lub awarii węzła, gdy zadanie jest uruchomione. Zadanie zostanie ponawiane na tym samym węźle obliczeniowym, jeśli to możliwe, do wewnętrznego limitu przed rezygnacją z zadania i odroczenie zadania, które ma zostać ponownie anulowane przez usługę Batch, potencjalnie w innym węźle obliczeniowym.
Nie ma różnic w projekcie podczas wykonywania zadań w dedykowanych lub węzłach typu spot. Niezależnie od tego, czy zadanie jest wywłaszczone podczas uruchamiania w węźle typu spot, czy przerwane z powodu awarii w dedykowanym węźle, oba sytuacje są ograniczane przez zaprojektowanie zadania w celu wytrzymania awarii.
Tworzenie trwałych zadań
Zadania powinny być zaprojektowane tak, aby wytrzymały awarię i obsługiwały ponawianie prób. Ta zasada jest szczególnie ważna w przypadku długotrwałych zadań. Upewnij się, że zadania generują ten sam, pojedynczy wynik, nawet jeśli są uruchamiane więcej niż raz. Jednym ze sposobów osiągnięcia tego wyniku jest uczynienie zadań "szukaniem celów". Innym sposobem jest upewnienie się, że zadania są idempotentne (zadania będą miały taki sam wynik niezależnie od tego, ile razy są uruchamiane).
Typowym przykładem jest zadanie kopiowania plików do węzła obliczeniowego. Proste podejście to zadanie, które kopiuje wszystkie określone pliki za każdym razem, gdy jest uruchamiane, co jest nieefektywne i nie jest kompilowane w celu wytrzymania awarii. Zamiast tego utwórz zadanie, aby upewnić się, że pliki znajdują się w węźle obliczeniowym; zadanie, które nie powoduje ponownego skopiowania plików, które są już obecne. W ten sposób zadanie pobiera miejsce, w którym zostało przerwane, jeśli zostało przerwane.
Unikaj krótkiego czasu wykonywania
Zadania uruchamiane tylko przez jedną do dwóch sekund nie są idealne. Spróbuj wykonać znaczną ilość pracy w pojedynczym zadaniu (minimum 10 sekund, trwa do godzin lub dni). Jeśli każde zadanie jest wykonywane przez jedną minutę (lub więcej), obciążenie związane z planowaniem jako ułamek ogólnego czasu obliczeniowego jest niewielkie.
Używanie zakresu puli dla krótkich zadań w węzłach systemu Windows
Podczas planowania zadania w węzłach usługi Batch można wybrać, czy ma zostać uruchomiony z zakresem zadań, czy zakresem puli. Jeśli zadanie zostanie uruchomione tylko przez krótki czas, zakres zadań może być nieefektywny ze względu na zasoby potrzebne do utworzenia konta autoużytkownika dla tego zadania. Aby zwiększyć wydajność, rozważ ustawienie tych zadań na zakres puli. Aby uzyskać więcej informacji, zobacz Uruchamianie zadania jako autoużytkownika z zakresem puli.
Węzły
Węzeł obliczeniowy to maszyna wirtualna platformy Azure lub maszyna wirtualna usługi w chmurze przeznaczona do przetwarzania części obciążenia aplikacji. Postępuj zgodnie z tymi wytycznymi podczas pracy z węzłami.
Zadania uruchamiania: okres istnienia i idempotentność
Podobnie jak w przypadku innych zadań zadanie uruchamiania węzła powinno być idempotentne. Zadania uruchamiania są uruchamiane ponownie po ponownym uruchomieniu węzła obliczeniowego lub ponownym uruchomieniu agenta usługi Batch. Idempotentne zadanie to po prostu jedno, które generuje spójny wynik po wielokrotnym uruchomieniu.
Zadania uruchamiania nie powinny być długotrwałe ani powiązane z okresem istnienia węzła obliczeniowego. Jeśli musisz uruchomić programy, które są usługami lub usługami jak w naturze, należy utworzyć zadanie uruchamiania, które umożliwia uruchamianie tych programów i zarządzanie nimi przez obiekty systemu operacyjnego, takie jak systemd
w systemach Linux lub Windows Services. Zadanie uruchamiania powinno być nadal konstruowane jako idempotentne, tak aby kolejne wykonanie zadania uruchamiania było obsługiwane prawidłowo, jeśli te programy zostały wcześniej zainstalowane jako usługi.
Napiwek
Gdy usługa Batch ponownie uruchomi zadanie uruchamiania, spróbuje usunąć katalog zadań uruchamiania i utworzyć go ponownie. Jeśli usługa Batch nie utworzy ponownie katalogu zadań podrzędnych uruchamiania, uruchomienie zadania uruchamiania węzła obliczeniowego zakończy się niepowodzeniem.
Te usługi nie mogą przyjmować blokad plików w żadnych plikach w katalogach zarządzanych przez usługę Batch w węźle, ponieważ w przeciwnym razie usługa Batch nie może usunąć tych katalogów z powodu blokad plików. Na przykład zamiast konfigurować uruchamianie usługi bezpośrednio z katalogu roboczego zadania uruchamiania, skopiuj pliki w innym miejscu w sposób idempotentny. Następnie zainstaluj usługę z tej lokalizacji przy użyciu obiektów systemu operacyjnego.
Węzły izolowane
Rozważ użycie izolowanych rozmiarów maszyn wirtualnych dla obciążeń ze zgodnością lub wymaganiami prawnymi. Obsługiwane rozmiary izolowane w trybie konfiguracji maszyny wirtualnej obejmują Standard_E80ids_v4
, , Standard_M128ms
, Standard_F72s_v2
Standard_G5
, , Standard_GS5
i Standard_E64i_v3
. Aby uzyskać więcej informacji na temat izolowanych rozmiarów maszyn wirtualnych, zobacz Izolacja maszyn wirtualnych na platformie Azure.
Unikaj tworzenia skrzyżowań katalogów w systemie Windows
Połączenia katalogów, czasami nazywane twardymi linkami katalogu, są trudne do radzenia sobie podczas oczyszczania zadań i zadań. Użyj linków symlinków (linków miękkich), a nie twardych linków.
Dyski tymczasowe i AZ_BATCH_NODE_ROOT_DIR
Usługa Batch opiera się na dyskach tymczasowych maszyn wirtualnych zgodnych z usługą Batch w celu przechowywania metadanych związanych z wykonywaniem zadań wraz z artefaktami każdego wykonania zadania na tym dysku tymczasowym. Przykłady tych tymczasowych punktów instalacji dysku lub katalogów to: /mnt/batch
, /mnt/resource/batch
i D:\batch\tasks
.
Zastępowanie, ponowne instalowanie, łączenie, łączenie lub przekierowywanie tych punktów instalacji i katalogów lub dowolnych katalogów nadrzędnych nie jest obsługiwane i może prowadzić do niestabilności. Jeśli potrzebujesz więcej miejsca na dysku, rozważ użycie rozmiaru maszyny wirtualnej lub rodziny, która ma tymczasowe miejsce na dysku spełniające wymagania lub dołączanie dysków danych. Aby uzyskać więcej informacji, zobacz następną sekcję dotyczącą dołączania i przygotowywania dysków danych dla węzłów obliczeniowych.
Dołączanie i przygotowywanie dysków z danymi
Każdy węzeł obliczeniowy ma dokładnie taką samą specyfikację dysku danych dołączoną, jeśli określono jako część wystąpienia puli usługi Batch. Tylko nowe dyski danych mogą być dołączone do pul usługi Batch. Te dyski danych dołączone do węzłów obliczeniowych nie są automatycznie partycjonowane, sformatowane ani zainstalowane. Twoim zadaniem jest wykonanie tych operacji w ramach zadania uruchamiania. Te zadania uruchamiania muszą być spreparowane jako idempotentne. Możliwe jest ponowne wykonywanie zadań uruchamiania w węzłach obliczeniowych. Jeśli zadanie uruchamiania nie jest idempotentne, potencjalna utrata danych może wystąpić na dyskach danych.
Napiwek
Podczas instalowania dysku danych w systemie Linux, jeśli zagnieżdżanie punktu instalacji dysku w ramach tymczasowych punktów instalacji platformy Azure, takich jak /mnt
lub /mnt/resource
, należy zadbać o to, aby nie wprowadzono żadnych wyścigów zależności. Jeśli na przykład te instalacji są automatycznie wykonywane przez system operacyjny, może wystąpić wyścig między zainstalowanym dyskiem tymczasowym a dyskami danych instalowanymi w ramach elementu nadrzędnego. Należy wykonać kroki, aby upewnić się, że odpowiednie zależności są wymuszane przez dostępne obiekty, takie jak systemd
instalowanie dysku danych lub odroczenie instalowania dysku danych w zadaniu uruchamiania w ramach skryptu przygotowywania dysku danych idempotentnego.
Przygotowywanie dysków danych w pulach usługi Batch systemu Linux
Dyski danych platformy Azure w systemie Linux są prezentowane jako urządzenia blokowe i przypisane typowy sd[X]
identyfikator. Nie należy polegać na przydziałach statycznych sd[X]
, ponieważ te etykiety są dynamicznie przypisywane podczas rozruchu i nie mają gwarancji spójności między pierwszym i kolejnymi rozruchami. Należy zidentyfikować dołączone dyski za pomocą mapowań przedstawionych w pliku /dev/disk/azure/scsi1/
. Jeśli na przykład określono numer LUN 0 dla dysku danych w interfejsie API AddPool, ten dysk będzie manifestować jako /dev/disk/azure/scsi1/lun0
. Jeśli na przykład chcesz wyświetlić ten katalog, możesz potencjalnie zobaczyć:
user@host:~$ ls -l /dev/disk/azure/scsi1/
total 0
lrwxrwxrwx 1 root root 12 Oct 31 15:16 lun0 -> ../../../sdc
Nie ma potrzeby ponownego sd[X]
tłumaczenia odwołania do mapowania w skryfcie przygotowania, a zamiast tego bezpośrednio odwoływanie się do urządzenia.
W tym przykładzie to urządzenie będzie miało wartość /dev/disk/azure/scsi1/lun0
. Ten identyfikator można podać bezpośrednio do fdisk
elementu , mkfs
i wszelkich innych narzędzi wymaganych dla przepływu pracy. Alternatywnie możesz użyć polecenia lsblk
z elementem , blkid
aby zamapować identyfikator UUID dysku.
Aby uzyskać więcej informacji na temat dysków danych platformy Azure w systemie Linux, w tym alternatywnych metod lokalizowania dysków danych i /etc/fstab
opcji, zobacz ten artykuł. Upewnij się, że nie ma żadnych zależności ani wyścigów zgodnie z opisem w notatce Porada przed podwyższeniem poziomu metody do użycia w środowisku produkcyjnym.
Przygotowywanie dysków danych w pulach usługi Windows Batch
Dyski danych platformy Azure dołączone do węzłów obliczeniowych systemu Windows w usłudze Batch są prezentowane bez partycjonowania i niesformatowane. Należy wyliczyć dyski z partycjami RAW
na potrzeby wykonywania akcji w ramach zadania uruchamiania. Te informacje można pobrać przy użyciu Get-Disk
polecenia cmdlet programu PowerShell.
Na przykład możesz zobaczyć następujące elementy:
PS C:\Windows\system32> Get-Disk
Number Friendly Name Serial Number HealthStatus OperationalStatus Total Size Partition
Style
------ ------------- ------------- ------------ ----------------- ---------- ----------
0 Virtual HD Healthy Online 30 GB MBR
1 Virtual HD Healthy Online 32 GB MBR
2 Msft Virtu... Healthy Online 64 GB RAW
Gdzie numer dysku 2 to niezainicjowany dysk danych dołączony do tego węzła obliczeniowego. Te dyski można następnie zainicjować, podzielić na partycje i sformatować zgodnie z wymaganiami przepływu pracy.
Aby uzyskać więcej informacji na temat dysków danych platformy Azure w systemie Windows, w tym przykładowych skryptów programu PowerShell, zobacz ten artykuł. Przed podwyższeniem poziomu do użycia produkcyjnego upewnij się, że wszystkie przykładowe skrypty są weryfikowane pod kątem idempotencji.
Zbieranie dzienników agenta usługi Batch
Jeśli zauważysz problem z zachowaniem węzła lub zadań uruchomionych w węźle, zbierz dzienniki agenta usługi Batch przed cofnięciem przydziału węzłów. Dzienniki agenta usługi Batch można zbierać przy użyciu interfejsu API przekazywania dzienników usługi Batch. Te dzienniki można dostarczyć jako część biletu pomocy technicznej do firmy Microsoft i pomóc w rozwiązywaniu problemów i rozwiązywaniu problemów.
Batch API
Błędy przekroczenia limitu czasu
Błędy przekroczenia limitu czasu nie muszą wskazywać, że usługa nie może przetworzyć żądania. W przypadku wystąpienia błędu przekroczenia limitu czasu należy ponowić próbę wykonania operacji lub pobrać stan zasobu, odpowiednio do sytuacji, aby sprawdzić stan, czy operacja zakończyła się powodzeniem, czy niepowodzeniem.
Łączność
Zapoznaj się z poniższymi wskazówkami dotyczącymi łączności w rozwiązaniach usługi Batch.
Sieciowe grupy zabezpieczeń i trasy zdefiniowane przez użytkownika
Podczas aprowizowania pul usługi Batch w sieci wirtualnej upewnij się, że ściśle przestrzegasz wytycznych dotyczących korzystania z usługi BatchNodeManagement.tag usługi region , porty, protokoły i kierunek reguły. Zdecydowanie zaleca się użycie tagu usługi; nie używaj bazowych adresów IP usługi Batch, ponieważ mogą się zmieniać w czasie. Użycie adresów IP usługi Batch bezpośrednio może spowodować niestabilność, przerwy lub awarie pul usługi Batch.
W przypadku tras zdefiniowanych przez użytkownika (UDR) zaleca się użycie funkcji BatchNodeManagement.tagi usługi region zamiast adresów IP usługi Batch, ponieważ mogą się zmieniać wraz z upływem czasu.
Honorowanie systemu DNS
Upewnij się, że systemy uznają czas wygaśnięcia (TTL) systemu DNS dla adresu URL usługi Konta usługi Batch. Ponadto upewnij się, że klienci usługi Batch i inne mechanizmy łączności z usługą Batch nie korzystają z adresów IP.
Wszelkie żądania HTTP z kodami stanu na poziomie 5xx wraz z nagłówkiem "Połączenie: zamknij" w odpowiedzi wymagają dostosowania zachowania klienta usługi Batch. Klient usługi Batch powinien obserwować zalecenie, zamykając istniejące połączenie, ponownie rozpoznając adres DNS dla adresu URL usługi Konta usługi Batch i próbując wykonać następujące żądania w nowym połączeniu.
Automatyczne ponawianie żądań
Upewnij się, że klienci usługi Batch mają odpowiednie zasady ponawiania prób w celu automatycznego ponawiania żądań, nawet podczas normalnego działania, a nie wyłącznie w okresach konserwacji usługi. Te zasady ponawiania prób powinny obejmować interwał wynoszący co najmniej 5 minut. Funkcje automatycznego ponawiania prób są dostarczane z różnymi zestawami SDK usługi Batch, takimi jak klasa .NET RetryPolicyProvider.
Statyczne publiczne adresy IP
Zazwyczaj maszyny wirtualne w puli usługi Batch są dostępne za pośrednictwem publicznych adresów IP, które mogą ulec zmianie w okresie istnienia puli. Ten dynamiczny charakter może utrudnić interakcję z bazą danych lub inną usługą zewnętrzną, która ogranicza dostęp do określonych adresów IP. Aby rozwiązać ten problem, możesz utworzyć pulę przy użyciu zestawu statycznych publicznych adresów IP, które kontrolujesz. Aby uzyskać więcej informacji, zobacz Tworzenie puli usługi Azure Batch z określonymi publicznymi adresami IP.
Zależności bazowe węzła usługi Batch
Podczas projektowania rozwiązań usługi Batch należy wziąć pod uwagę następujące zależności i ograniczenia.
Zasoby utworzone przez system
Usługa Azure Batch tworzy zestaw użytkowników i grup na maszynie wirtualnej i zarządza nim, co nie powinno zostać zmienione:
Windows:
- Użytkownik o nazwie PoolNonAdmin
- Grupa użytkowników o nazwie WATaskCommon
Linux:
- Użytkownik o nazwie _azbatch
Napiwek
Nazewnictwo tych użytkowników lub grup to artefakty implementacji i mogą ulec zmianie w dowolnym momencie.
Oczyszczanie pliku
Usługa Batch aktywnie próbuje wyczyścić katalog roboczy, w ramach którego są uruchamiane zadania, po wygaśnięciu czasu przechowywania. Wszelkie pliki zapisane poza tym katalogami są twoimi obowiązkiem wyczyszczenia , aby uniknąć zapełniania miejsca na dysku.
Automatyczne czyszczenie katalogu roboczego zostanie zablokowane, jeśli uruchomisz usługę w systemie Windows z katalogu roboczego zadania uruchamiania, ponieważ folder jest nadal używany. Ta akcja doprowadzi do obniżenia wydajności. Aby rozwiązać ten problem, zmień katalog tej usługi na oddzielny katalog, który nie jest zarządzany przez usługę Batch.
Następne kroki
- Dowiedz się więcej o przepływie pracy usługi Batch i zasobach podstawowych, takich jak pule, węzły, zadania i zadania.
- Dowiedz się więcej na temat domyślnych przydziałów, limitów i ograniczeń usługi Azure Batch oraz sposobu żądania zwiększenia limitu przydziału.
- Dowiedz się, jak wykrywać i unikać błędów w operacjach w tle puli i węzłów.