Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
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.
Wskazówka
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.
Baseny
Pule to zasoby obliczeniowe do wykonywania zadań w usłudze Batch. Poniższe sekcje zawierają zalecenia dotyczące korzystania z pul 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: subskrypcją usługi Batch lub 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 usługi Batch i inne zasoby są tworzone bezpośrednio w ramach subskrypcji podczas tworzenia 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.
classiclubsimplifiedtryb 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, dzięki czemu ogólny oczekiwany czas wykonywania zadania nie jest 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ż rzadkie, awarie sprzętu, aktualizacje systemu operacyjnego i wiele innych problemów mogą spowodować, że poszczególne węzły będą 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 wsparcia: Zdecydowanie zaleca się unikanie obrazów z zbliżającą się datą zakończenia wsparcia dla usługi Batch (EOL). Te daty można odnaleźć za pośrednictwem
ListSupportedImagesinterfejsu API, PowerShell lub Azure CLI. 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 wsparcia Batch dla obrazu, z którego pochodzi lub z którym jest zgodny twój obraz niestandardowy. Obraz bez określonejbatchSupportEndOfLifedaty 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, jednostki SKU maszyn wirtualnych lub rodziny mogą również osiągnąć koniec wsparcia usługi Batch (EOL). Te daty można odnaleźć za pośrednictwem
ListSupportedVirtualMachineSkusinterfejsu API, PowerShell lub Azure CLI. 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 skojarzonejbatchSupportEndOfLifedaty 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 znikają. 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ń wrażliwych na czas. Na przykład, możesz dynamicznie wybierać lub tworzyć pule podczas planowania każdego zadania albo znaleźć sposób na zastąpienie nazwy puli, aby ominąć pulę, która nie działa prawidłowo.
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 można przekierować zadania do innej puli (prawdopodobnie z innym rozmiarem maszyny wirtualnej za pomocą UpdateJob), jeśli to konieczne. Unikaj polegania na identyfikatorze puli statycznej z oczekiwaniem, że nigdy nie zostanie usunięty i nigdy nie ulegnie zmianie.
Bezpieczeństwo basenu
Granica izolacji
Na potrzeby izolacji, jeśli Twój scenariusz wymaga izolowania projektów lub zadań od siebie, zrób to, umieszczają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.
W razie potrzeby należy zastosować odpowiednią kontrolę dostępu na koncie usługi Batch i interfejsach API, aby uniemożliwić dostęp do wszystkich pul w ramach konta usługi Batch. Zaleca się wyłączenie dostępu do klucza współużytkowanego i zezwolenie na uwierzytelnianie oparte na usłudze Entra, aby umożliwić kontrolę dostępu opartą na rolach.
Aktualizacje agenta Batch Node
Agenci węzłów usługi Batch nie są automatycznie uaktualniani dla pul, które mają węzły obliczeniowe o niezerowej liczbie. 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 / Notatka
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ł up-to-date z najnowszymi aktualizacjami zabezpieczeń dostarczonymi przez wydawcę.
Niektóre obrazy mogą wykonywać automatyczne aktualizacje pakietów podczas rozruchu (lub wkrótce potem), co może zakłócać niektóre działania zainicjowane przez użytkownika, takie jak pobieranie aktualizacji repozytorium pakietów (apt update na przykład) lub instalowanie pakietów podczas działań związanych z poleceniem 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 zakłócała wykonywania 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 wsparcia automatycznych aktualizacji systemu operacyjnego dla 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 automatycznych aktualizacji 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 należą do odpowiedzialności wydawcy obrazu, a nie usługi Azure Batch. W przypadku niektórych obrazów opublikowanych w obszarze microsoft-azure-batchnie ma gwarancji, że te obrazy są przechowywane up-to-date 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 obowiązkiem jest zarządzanie węzłami obliczeniowymi w puli, bezpośrednio lub za pomocą funkcji udostępnianych przez usługę (autoskalowanie lub autopool).
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: Usługa Batch nie wiąże się z dodatkowymi opłatami. 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. Twój przydział rdzeniowy nie jest gwarancją, a raczej limitem.
Nieplanowany przestój
Pule usługi Batch mogą doświadczać zdarzeń przestojów na platformie Azure. Zrozumienie, że mogą wystąpić problemy, jest ważne; należy opracować przepływ pracy, aby był odporny na powtarzanie wykonywania. Jeśli węzły ulegną awarii, usługa Batch automatycznie próbuje przywrócić te węzły obliczeniowe w Twoim imieniu. To odtworzenie może wyzwolić ponowne zaplanowanie jakiegokolwiek uruchomionego zadania na węźle, który jest przywracany, lub na innym dostępnym węźle. Aby dowiedzieć się więcej o przerwanych zadaniach, zobacz Projektowanie ponownych prób.
Niestandardowe kolekcje 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 z Azure Marketplace lub utworzyć obraz niestandardowy przy użyciu obrazu z Azure Compute Gallery. 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ż zwiększenie rozmiaru puli 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.
Zadania
Praca 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ń
Korzystanie z pracy do uruchomienia pojedynczego 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 prac, każda z jednym zadaniem, byłoby to najmniej wydajne, najwolniejsze i najdroższe podejście do zastosowania.
Unikaj projektowania rozwiązania Batch, które wymaga jednoczesnego uruchamiania tysięcy zadań. Nie ma limitu przydziałów dla zadań, więc wykonywanie wielu zadań w ramach jak najmniejszej liczby zleceń efektywnie wykorzystuje przydziały pracy i harmonogramu pracy.
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ń. Zadania i harmonogramy zadań, które zostały ukończone, nie są uwzględniane w tym limicie przydziału.
Usuń zadania, gdy nie są już potrzebne, nawet jeśli są ukończone. 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, a usługa Batch zaplanowuje je na 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 autozarządzanie pulą i autoskalowanie, mogą umożliwić łatwe znikanie 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. Z powodu tego zachowania dane wyjściowe zadania powinny zostać przeniesione z węzła, na którym jest uruchomione, do trwałego magazynu przed zakończeniem zadania. Podobnie, jeśli zadanie zakończy się niepowodzeniem, powinno przenieść dzienniki wymagane do zdiagnozowania awarii do trwałego magazynu.
Usługa Batch posiada zintegrowaną obsługę Azure Storage do przesyłania danych za pomocą plików OutputFiles oraz różnych udostępnionych systemów plików, lub możesz przesłać dane samodzielnie w swoich 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 zwalnia miejsce na dysku używane przez zadanie, gdy retentionTime wygaśnie.
Usuwanie zadań wykonuje dwie rzeczy:
- Zapewnia, że nie nagromadzisz zadań w pracy. Ta akcja pomoże uniknąć trudności w znalezieniu zadania, które cię interesuje, ponieważ trzeba będzie filtrować przez ukończone zadania.
- Usuwa odpowiednie dane zadania na węźle, pod warunkiem że
retentionTimenie zostały jeszcze naruszone. Ta akcja pomaga zapewnić, że węzły nie zostaną przepełnione danymi zadań i nie wyczerpują przestrzeni dyskowej.
Uwaga / Notatka
W przypadku zadań przesłanych do usługi Batch wywołanie interfejsu API DeleteTask trwa do 10 minut. Zanim wejdzie w życie, zaplanowanie innych zadań może być uniemożliwione. Jest to spowodowane tym, że Harmonogram Batch nadal próbuje zaplanować dopiero co 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ń do 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.
Ustaw odpowiednią liczbę maksymalnych zadań na węzeł
Usługa Batch obsługuje nadsubskrybowanie zadań na węzłach (uruchamianie większej liczby zadań niż liczba rdzeni węzła). Musisz upewnić się, że zadania są odpowiednio dopasowane do węzłów w puli. Na przykład może wystąpić obniżona wydajność, jeśli spróbujesz zaplanować osiem zadań, które zużywają 25% użycie procesora CPU w jednym węźle (w puli z taskSlotsPerNode = 8programem ).
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 niezerowym kodem zakończenia, zadanie jest ponawiane aż 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 będzie ponawiane na tym samym węźle obliczeniowym, jeśli to możliwe, do osiągnięcia wewnętrznego limitu, po czym następuje przerwanie prób i przekazanie zadania do ponownego zaplanowania przez usługę Batch, potencjalnie na innym węźle obliczeniowym.
Nie ma różnic w podejściu projektowym podczas wykonywania zadań na dedykowanych węzłach lub węzłach Spot. Niezależnie od tego, czy zadanie jest wywłaszczone podczas uruchamiania na węźle typu spot, czy przerwane z powodu awarii na dedykowanym węźle, obie sytuacje są łagodzone poprzez przystosowanie zadania do odporności na awarie.
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ń nastawionych na realizację 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 kontynuuje od miejsca, w którym zostało przerwane, jeśli nastąpiło jego przerwanie.
Unikaj krótkiego czasu wykonywania
Zadania, które trwają tylko od jednej 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 startowe są uruchamiane ponownie, gdy węzeł obliczeniowy zostaje ponownie uruchomiony lub gdy agent usługi Batch zostaje ponownie uruchomiony. 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 podobnymi do usług, należy utworzyć zadanie startowe, które umożliwia uruchamianie tych programów i zarządzanie nimi przez funkcje systemu operacyjnego, takie jak systemd w Linuxie lub usługi Windows. 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.
Wskazówka
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 zadania startowego, węzeł obliczeniowy nie uruchomi zadania startowego.
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ń roboczych z wymogami zgodności lub regulacyjnymi. Obsługiwane rozmiary izolowane w trybie konfiguracji maszyny wirtualnej obejmują Standard_E80ids_v4, , Standard_M128ms, Standard_F72s_v2Standard_G5, , Standard_GS5i 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 odnośnikami katalogów, są trudne z którymi sobie poradzić podczas oczyszczania zadań. Używaj symlinków (linków miękkich) zamiast 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/batchi D:\batch\tasks.
Zastępowanie, ponowne montowanie, sprzęganie, tworzenie dowiązań symbolicznych lub przekierowywanie tych punktów montowania 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 dołączoną dokładnie taką samą specyfikację dysku danych, jeśli jest to określone jako część wystąpienia puli Batch. Do pul usługi Batch można dołączać tylko nowe dyski danych. 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.
Wskazówka
Podczas instalacji dysku danych w systemie Linux, jeśli punkt instalacji dysku jest zagnieżdżony wśród tymczasowych punktów montowania platformy Azure, takich jak /mnt lub /mnt/resource, należy zadbać, aby nie dochodziło do wyścigów zależności. Na przykład, jeśli te montowania są automatycznie wykonywane przez system operacyjny, może wystąpić konflikt między montowaniem dysku tymczasowego a montowaniem dysków danych pod elementem nadrzędnym. Należy podjąć kroki, aby upewnić się, że odpowiednie zależności są wymuszane dzięki dostępnym rozwiązaniom, takim jak systemd, lub odroczyć montowanie dysku danych do momentu rozpoczęcia zadania jako część skryptu przygotowującego dysk danych idempotentnego.
Przygotowywanie dysków danych w pulach Batch systemu Linux
Dyski danych platformy Azure w systemie Linux są prezentowane jako urządzenia blokowe i mają przypisane unikalne sd[X] identyfikatory. 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 tłumaczenia odwołania do mapowania w skrypcie przygotowawczym, zamiast tego można odwołać się bezpośrednio 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, mkfs oraz wszelkich innych narzędzi wymaganych do przepływu pracy. Alternatywnie możesz użyć lsblk z 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 wprowadzeniem do środowiska produkcyjnego upewnij się, że wszystkie przykładowe skrypty są weryfikowane pod kątem idempotencji.
Zbieranie dzienników agenta 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 Batch można zbierać przy użyciu interfejsu API do przesyłania dzienników usługi Batch. Można dostarczyć te dzienniki jako część zgłoszenia pomocy technicznej do firmy Microsoft, co pomoże w usuwaniu usterek i problemów.
Batch API
Błędy przekroczenia limitu czasu
Błędy przekroczenia limitu czasu nie muszą wskazywać, że usługa nie zdołała 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 tagu usługi BatchNodeManagement.region, portów, protokołów i kierunku 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. Bezpośrednie użycie adresów IP usługi Batch może prowadzić do niestabilności, przerw lub awarii w pulach Batch.
W przypadku tras zdefiniowanych przez użytkownika (UDR) zaleca się użycie funkcji BatchNodeManagement. tagi usługiregion 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 życia (TTL) systemu DNS dla adresu URL konta 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 oraz nagłówkiem "Connection: close" w odpowiedzi wymagają dostosowania działania klienta usługi Batch. Klient usługi Batch powinien przestrzegać zalecenia, zamykając istniejące połączenie, ponownie rozpoznając adres DNS dla URL usługi konta Batch, i powinien spróbować wykonać kolejne żą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. Możliwości automatycznego ponawiania prób są oferowane przez różne zestawy SDK usługi Batch, takie 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 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
Wskazówka
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 którym uruchamiane są zadania, po upływie 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 zadania startowego, ponieważ folder jest wciąż 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.
Dalsze kroki
- Dowiedz się więcej o schemacie działania usługi Batch oraz o podstawowych zasobach, takich jak pule, węzły, zadania i operacje.
- 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 dla puli i węzłów.