Rozwiązywanie problemów z błędami alokacji podczas wdrażania usług Cloud Services (klasycznych) na platformie Azure
Ważne
Usługi Cloud Services (wersja klasyczna) są teraz przestarzałe dla wszystkich klientów od 1 września 2024 r. Wszystkie istniejące uruchomione wdrożenia zostaną zatrzymane i zamknięte przez firmę Microsoft, a dane zostaną przypadkowo utracone od października 2024 r. Nowe wdrożenia powinny używać nowego modelu wdrażania opartego na usłudze Azure Resource Manager w usługach Azure Cloud Services (wsparcie dodatkowe).
Podsumowanie
Podczas wdrażania wystąpień w usłudze w chmurze lub dodawania nowych wystąpień roli internetowej lub procesu roboczego platforma Microsoft Azure przydziela zasoby obliczeniowe. Czasami podczas wykonywania tych operacji mogą być wyświetlane błędy, nawet przed osiągnięciem limitów subskrypcji platformy Azure. W tym artykule wyjaśniono przyczyny niektórych typowych błędów alokacji i sugeruje możliwe korygowanie. Te informacje mogą być również przydatne podczas planowania wdrażania usług.
Jeśli problem z platformą Azure nie został rozwiązany w tym artykule, odwiedź fora platformy Azure w witrynach Microsoft Q & A i Stack Overflow. Możesz opublikować swój problem na tych forach lub opublikować go na @AzureSupport na Twitterze. Możesz również przesłać żądanie pomoc techniczna platformy Azure. Aby przesłać wniosek o pomoc techniczną, na stronie pomoc techniczna platformy Azure wybierz pozycję Uzyskaj pomoc techniczną.
Tło — jak działa alokacja
Serwery w centrach danych platformy Azure są partycjonowane na klastry. Nowe żądanie alokacji usługi w chmurze jest podejmowane w wielu klastrach. Po wdrożeniu pierwszego wystąpienia w usłudze w chmurze (w środowisku przejściowym lub produkcyjnym) usługa w chmurze zostanie przypięta do klastra. Wszelkie dalsze wdrożenia usługi w chmurze odbywają się w tym samym klastrze. W tym artykule odwołujemy się do tego stanu jako "przypięte do klastra". Na poniższym diagramie przedstawiono przypadek normalnej alokacji, która jest podejmowana w wielu klastrach. Drugi diagram ilustruje przypadek alokacji przypiętej do klastra 2, ponieważ jest to miejsce, w którym jest hostowana istniejąca usługa w chmurze CS_1.
Dlaczego występuje błąd alokacji
Jeśli żądanie alokacji jest przypięte do klastra, istnieje większe prawdopodobieństwo, że nie zostaną znalezione wolne zasoby, ponieważ dostępna pula zasobów jest ograniczona do jednego klastra. Ponadto jeśli żądanie alokacji jest przypięte do klastra, ale klaster nie obsługuje żądanego typu zasobu, żądanie kończy się niepowodzeniem, nawet jeśli klaster ma bezpłatny zasób. Następny diagram ilustruje przypadek, w którym przypięta alokacja kończy się niepowodzeniem, ponieważ jedyny klaster kandydata nie ma bezpłatnych zasobów. Diagram 4 ilustruje przypadek, w którym przypięta alokacja kończy się niepowodzeniem, ponieważ jedyny klaster kandydata nie obsługuje żądanego rozmiaru maszyny wirtualnej, mimo że klaster ma bezpłatne zasoby.
Rozwiązywanie problemów z błędem alokacji dla usług w chmurze
Komunikat o błędzie
W witrynie Azure Portal przejdź do usługi w chmurze i na pasku bocznym wybierz pozycję Dzienniki operacji (klasyczne), aby wyświetlić dzienniki.
Zapoznaj się z następującymi kolejnymi rozwiązaniami dotyczącymi wyjątków:
Typ wyjątku | Komunikat o błędzie | Rozwiązanie |
---|---|---|
FabricInternalServerError | Operacja nie powiodła się z kodem błędu "InternalError" i errorMessage "Serwer napotkał błąd wewnętrzny. Ponów próbę żądania". | Rozwiązywanie problemów z błędem FabricInternalServerError |
ServiceAllocationFailure | Operacja nie powiodła się z kodem błędu "InternalError" i errorMessage "Serwer napotkał błąd wewnętrzny. Ponów próbę żądania". | Rozwiązywanie problemów z usługą ServiceAllocationFailure |
LocationNotFoundForRoleSize | Operacja "{Operation ID} " nie powiodła się: "Żądana warstwa maszyny wirtualnej jest obecnie niedostępna w regionie ({Region ID} ) dla tej subskrypcji. Spróbuj wykonać inną warstwę lub wdrożyć ją w innej lokalizacji". |
Rozwiązywanie problemów z lokalizacjąNotFoundForRoleSize |
ConstrainedAllocationFailed | Operacja platformy Azure "{Operation ID} " nie powiodła się z kodem Compute.ConstrainedAllocationFailed. Szczegóły: Alokacja nie powiodła się; program nie może spełnić ograniczeń w żądaniu. Żądane nowe wdrożenie usługi jest powiązane z grupą koligacji lub jest przeznaczona dla sieci wirtualnej lub istnieje istniejące wdrożenie w ramach tej hostowanej usługi. Każdy z tych warunków ogranicza nowe wdrożenie do określonych zasobów platformy Azure. Spróbuj ponownie później albo ogranicz rozmiar maszyny wirtualnej lub liczbę wystąpień roli. Alternatywnie, jeśli to możliwe, usuń ograniczenia lub spróbuj wdrożyć w innym regionie. |
Rozwiązywanie problemów z ograniczeniemAllocationFailed |
OverconstrainedAllocationRequest | Nie można aprowizować rozmiaru maszyny wirtualnej (lub kombinacji rozmiarów maszyn wirtualnych) wymaganych przez to wdrożenie z powodu ograniczeń żądania wdrożenia. Jeśli to możliwe, spróbuj rozwiązać ograniczenia, takie jak powiązania sieci wirtualnej, wdrożyć w usłudze hostowanej bez innego wdrożenia i do innej grupy koligacji lub bez grupy koligacji lub spróbować wdrożyć w innym regionie. | Rozwiązywanie problemów z overconstrainedAllocationRequest |
Przykładowy komunikat o błędzie:
"Operacja platformy Azure "{operation id}" nie powiodła się z kodem Compute.ConstrainedAllocationFailed. Szczegóły: Alokacja nie powiodła się; program nie może spełnić ograniczeń w żądaniu. Zażądane nowe wdrożenie usługi jest związane z grupą koligacji, dotyczy sieci wirtualnej albo w ramach tej usługi hostowanej występuje już wdrożenie. Każdy z tych warunków ogranicza nowe wdrożenie do określonych zasobów platformy Azure. Spróbuj ponownie później albo ogranicz rozmiar maszyny wirtualnej lub liczbę wystąpień roli. Alternatywnie, jeśli to możliwe, usuń wyżej wymienione ograniczenia lub spróbuj wdrożyć w innym regionie."
Typowe problemy
Poniżej przedstawiono typowe scenariusze alokacji, które powodują przypięcie żądania alokacji do pojedynczego klastra.
- Wdrażanie w miejscu przejściowym — jeśli usługa w chmurze ma wdrożenie w obu miejscach, cała usługa w chmurze jest przypięta do określonego klastra. Oznacza to, że jeśli wdrożenie już istnieje w miejscu produkcyjnym, nowe wdrożenie przejściowe może zostać przydzielone tylko w tym samym klastrze co używany dla miejsca produkcyjnego. Jeśli pojemność klastra jest niemal całkowicie wykorzystana, żądanie może się nie powieść.
- Skalowanie — dodawanie nowych wystąpień do istniejącej usługi w chmurze wymaga alokacji w tym samym klastrze. Alokacja dla niewielkich żądań skalowania zwykle jest możliwa, ale nie zawsze. Jeśli pojemność klastra jest niemal całkowicie wykorzystana, żądanie może się nie powieść.
- Grupa koligacji — sieć szkieletowa w dowolnym klastrze w tym regionie może przydzielić nowe wdrożenie do pustej usługi w chmurze, chyba że usługa w chmurze zostanie przypięta do grupy koligacji. Wdrożenia próbują użyć tej samej grupy koligacji w tym samym klastrze. Jeśli pojemność klastra jest niemal całkowicie wykorzystana, żądanie może się nie powieść.
- Sieć wirtualna grupy koligacji — starsze sieci wirtualne były powiązane z grupami koligacji zamiast regionów, a usługi w chmurze w tych sieciach wirtualnych zostały przypięte do klastra grupy koligacji. Próby wdrożenia tego typu sieci wirtualnej są wykonywane w przypiętym klastrze. Jeśli pojemność klastra jest niemal całkowicie wykorzystana, żądanie może się nie powieść.
Rozwiązania
Ponowne wdrażanie w nowej usłudze w chmurze — to rozwiązanie prawdopodobnie będzie najbardziej skuteczne, ponieważ umożliwia platformie wybór spośród wszystkich klastrów w tym regionie.
- Wdrażanie obciążenia w nowej usłudze w chmurze
- Zaktualizuj rekord CNAME lub A, aby wskazywał ruch do nowej usługi w chmurze
- Gdy ruch zerowy przejdzie do starej witryny, możesz usunąć starą usługę w chmurze. To rozwiązanie nie powinno wiązać się z przestojami.
Usuń miejsca produkcyjne i przejściowe — to rozwiązanie zachowuje istniejącą nazwę systemu nazw domen (DNS), ale powoduje przestój aplikacji.
- Usuń miejsca produkcyjne i przejściowe istniejącej usługi w chmurze, aby usługa w chmurze jest pusta, a następnie
- Utwórz nowe wdrożenie w istniejącej usłudze w chmurze. To rozwiązanie ponownie przydziela alokację we wszystkich klastrach w regionie. Upewnij się, że usługa w chmurze nie jest powiązana z grupą koligacji.
Zastrzeżony adres IP — to rozwiązanie zachowuje istniejący adres IP, ale powoduje przestój aplikacji.
Tworzenie zarezerwowanego adresu IP dla istniejącego wdrożenia przy użyciu programu PowerShell
New-AzureReservedIP -ReservedIPName {new reserved IP name} -Location {location} -ServiceName {existing service name}
Postępuj zgodnie z instrukcjami 2. Upewnij się, że określono nową wartość ReservedIP w pliku CSCFG usługi.
Usuń grupę koligacji dla nowych wdrożeń — grupy koligacji nie są już zalecane. Wykonaj kroki dla pliku #1, aby wdrożyć nową usługę w chmurze. Upewnij się, że usługa w chmurze nie znajduje się w grupie koligacji.
Konwertowanie na regionalną sieć wirtualną — zobacz Jak przeprowadzić migrację z grup koligacji do regionalnej sieci wirtualnej (sieci wirtualnej).