Skala geograficznie rozproszona ze środowiskami usługi App ServiceGeo Distributed Scale with App Service Environments

PrzeglądOverview

Uwaga

Ten artykuł został zaktualizowany o korzystanie z nowego modułu Azure PowerShell Az.This article has been updated to use the new Azure PowerShell Az module. Nadal możesz używać modułu AzureRM, który będzie nadal otrzymywać poprawki błędów do co najmniej grudnia 2020 r.You can still use the AzureRM module, which will continue to receive bug fixes until at least December 2020. Aby dowiedzieć się więcej na temat nowego modułu Az i zgodności z modułem AzureRM, zobacz Wprowadzenie do nowego modułu Az programu Azure PowerShell.To learn more about the new Az module and AzureRM compatibility, see Introducing the new Azure PowerShell Az module. Aby uzyskać instrukcje dotyczące instalacji modułu Az, zobacz Instalowanie programu Azure PowerShell.For Az module installation instructions, see Install Azure PowerShell.

Scenariusze aplikacji, które wymagają bardzo dużej skali, mogą przekroczyć pojemność zasobów obliczeniowych dostępną dla jednego wdrożenia aplikacji.Application scenarios which require very high scale can exceed the compute resource capacity available to a single deployment of an app. W przypadku aplikacji do głosowania, wydarzeń sportowych i televised rozrywki są wszystkie przykładowe scenariusze, które wymagają bardzo dużej skali.Voting applications, sporting events, and televised entertainment events are all examples of scenarios that require extremely high scale. Wymagania dotyczące wysokiej skali mogą być spełnione w przypadku aplikacji skalowania w poziomie, z wieloma wdrożeniami aplikacji wykonywanych w jednym regionie, a także w różnych regionach, aby obsługiwać skrajne wymagania dotyczące obciążenia.High scale requirements can be met by horizontally scaling out apps, with multiple app deployments being made within a single region, as well as across regions, to handle extreme load requirements.

Środowiska App Service są idealnym platformą dla skalowania w poziomie. Po wybraniu konfiguracji App Service Environment, która może obsługiwać znaną liczbę żądań, deweloperzy mogą wdrożyć dodatkowe App Servicee środowiska w "krajarki plików cookie", aby osiągnąć pożądaną szczytową pojemność obciążenia.App Service Environments are an ideal platform for horizontal scale out. Once an App Service Environment configuration has been selected that can support a known request rate, developers can deploy additional App Service Environments in "cookie cutter" fashion to attain a desired peak load capacity.

Na przykład załóżmy, że aplikacja uruchomiona na App Service Environment konfiguracji została przetestowana pod kątem obsługi żądań 20 000 na sekundę (RPS pliku).For example suppose an app running on an App Service Environment configuration has been tested to handle 20K requests per second (RPS). Jeśli żądana szczytowa pojemność obciążenia to 100 000 RPS pliku, można utworzyć i skonfigurować pięć (5) środowisk App Service, aby zapewnić, że aplikacja może obsłużyć maksymalny rozmiar przewidywanego obciążenia.If the desired peak load capacity is 100K RPS, then five (5) App Service Environments can be created and configured to ensure the application can handle the maximum projected load.

Ponieważ klienci zazwyczaj uzyskują dostęp do aplikacji przy użyciu domeny niestandardowej (lub znaczącym), deweloperzy muszą mieć możliwość dystrybucji żądań aplikacji we wszystkich wystąpieniach App Service Environment.Since customers typically access apps using a custom (or vanity) domain, developers need a way to distribute app requests across all of the App Service Environment instances. Doskonałym sposobem osiągnięcia tego problemu jest rozwiązanie domeny niestandardowej przy użyciu profilu usługi Azure Traffic Manager.A great way to accomplish this is to resolve the custom domain using an Azure Traffic Manager profile. Profil Traffic Manager można skonfigurować tak, aby wskazywał wszystkie poszczególne środowiska App Service.The Traffic Manager profile can be configured to point at all of the individual App Service Environments. Traffic Manager automatycznie obsłużyć dystrybucję klientów we wszystkich środowiskach App Service na podstawie ustawień równoważenia obciążenia w profilu Traffic Manager.Traffic Manager will automatically handle distributing customers across all of the App Service Environments based on the load balancing settings in the Traffic Manager profile. To podejście działa niezależnie od tego, czy wszystkie środowiska App Service są wdrożone w jednym regionie świadczenia usługi Azure, czy wdrożone na całym świecie w wielu regionach świadczenia usługi Azure.This approach works regardless of whether all of the App Service Environments are deployed in a single Azure region, or deployed worldwide across multiple Azure regions.

Ponadto, ponieważ klienci uzyskują dostęp do aplikacji za pomocą domeny znaczącym, klienci nie znają liczby środowisk App Service, na których działa aplikacja.Furthermore, since customers access apps through the vanity domain, customers are unaware of the number of App Service Environments running an app. W efekcie deweloperzy mogą szybko i łatwo dodawać i usuwać środowiska App Service w oparciu o zaobserwowane obciążenie ruchem.As a result developers can quickly and easily add, and remove, App Service Environments based on observed traffic load.

Na poniższym diagramie koncepcyjnym aplikacja jest skalowana w poziomie w trzech App Service środowiskach w obrębie jednego regionu.The conceptual diagram below depicts an app horizontally scaled out across three App Service Environments within a single region.

Architektura koncepcyjna

Pozostała część tego tematu zawiera instrukcje dotyczące konfigurowania rozproszonej topologii dla przykładowej aplikacji przy użyciu wielu środowisk App Service.The remainder of this topic walks through the steps involved with setting up a distributed topology for the sample app using multiple App Service Environments.

Planowanie topologiiPlanning the Topology

Przed rozpoczęciem tworzenia rozproszonej aplikacji można uzyskać kilka części informacji przed upływem czasu.Before building out a distributed app footprint, it helps to have a few pieces information ahead of time.

  • Domena niestandardowa dla aplikacji: Jaka jest niestandardowa nazwa domeny, która będzie używana przez klientów w celu uzyskania dostępu do aplikacji?Custom domain for the app: What is the custom domain name that customers will use to access the app? W przypadku przykładowej aplikacji niestandardowa nazwa domeny jest www.scalableasedemo.comFor the sample app the custom domain name is www.scalableasedemo.com
  • Traffic Manager domeny: Podczas tworzenia profilu usługi Azure Traffic Managernależy wybrać nazwę domeny.Traffic Manager domain: A domain name needs to be chosen when creating an Azure Traffic Manager profile. Ta nazwa zostanie połączona z sufiksem trafficmanager.NET w celu zarejestrowania wpisu domeny, który jest zarządzany przez Traffic Manager.This name will be combined with the trafficmanager.net suffix to register a domain entry that is managed by Traffic Manager. W przypadku przykładowej aplikacji wybrana nazwa to skalowalne — Demonstracja.For the sample app, the name chosen is scalable-ase-demo. W związku z tym pełna nazwa domeny, która jest zarządzana przez Traffic Manager, to Scalable-ASE-demo.trafficmanager.NET.As a result the full domain name that is managed by Traffic Manager is scalable-ase-demo.trafficmanager.net.
  • Strategia skalowania rozmiaru aplikacji: Czy aplikacja będzie dystrybuowana w wielu środowiskach App Service w jednym regionie?Strategy for scaling the app footprint: Will the application footprint be distributed across multiple App Service Environments in a single region? Wiele regionów?Multiple regions? Kombinacji obu metod?A mix-and-match of both approaches? Decyzja powinna być oparta na założeniach, w których nastąpi ruch klientów, a także o tym, jak również pozostała część obsługi infrastruktury zaplecza może skalować.The decision should be based on expectations of where customer traffic will originate, as well as how well the rest of an app's supporting back-end infrastructure can scale. Na przykład w przypadku aplikacji bezstanowej 100% aplikacja może być w znacznym stopniu skalowana przy użyciu kombinacji wielu App Serviceych środowisk w regionie świadczenia usługi Azure, pomnożonych przez App Service środowiska wdrożone w wielu regionach świadczenia usługi Azure.For example, with a 100% stateless application, an app can be massively scaled using a combination of multiple App Service Environments per Azure region, multiplied by App Service Environments deployed across multiple Azure regions. Dzięki 15 i publicznym regionom świadczenia usługi Azure dostępnym do wyboru klienci mogą naprawdę kompilować skalę na całym świecie.With 15+ public Azure regions available to choose from, customers can truly build a world-wide hyper-scale application footprint. W przypadku przykładowej aplikacji używanej w tym artykule trzy środowiska App Service zostały utworzone w jednym regionie świadczenia usługi Azure (Południowo-środkowe stany USA).For the sample app used for this article, three App Service Environments were created in a single Azure region (South Central US).
  • Konwencja nazewnictwa dla środowisk App Service: Każda App Service Environment wymaga unikatowej nazwy.Naming convention for the App Service Environments: Each App Service Environment requires a unique name. Poza jednym lub dwoma środowiskami App Service warto mieć konwencję nazewnictwa ułatwiającą identyfikację poszczególnych App Service Environment.Beyond one or two App Service Environments it is helpful to have a naming convention to help identify each App Service Environment. W przypadku przykładowej aplikacji użyto prostej konwencji nazewnictwa.For the sample app a simple naming convention was used. Nazwy trzech środowisk App Service to fe1ase, fe2asei fe3ase.The names of the three App Service Environments are fe1ase, fe2ase, and fe3ase.
  • Konwencja nazewnictwa dla aplikacji: Ponieważ zostanie wdrożonych wiele wystąpień aplikacji, wymagana jest nazwa dla każdego wystąpienia wdrożonej aplikacji.Naming convention for the apps: Since multiple instances of the app will be deployed, a name is needed for each instance of the deployed app. Jedna nieznana, ale bardzo wygodna funkcja środowisk App Servicech polega na tym, że ta sama nazwa aplikacji może być używana w wielu środowiskach App Service.One little-known but very convenient feature of App Service Environments is that the same app name can be used across multiple App Service Environments. Ponieważ każdy App Service Environment ma unikatowy sufiks domeny, deweloperzy mogą zdecydować się na ponowne użycie dokładnie tej samej nazwy aplikacji w każdym środowisku.Since each App Service Environment has a unique domain suffix, developers can choose to re-use the exact same app name in each environment. Na przykład deweloper może mieć aplikacje o nazwie w następujący sposób: MyApp.Foo1.p.azurewebsites.NET, MyApp.foo2.p.azurewebsites.NET, MyApp.Foo3.p.azurewebsites.NETitd. Dla przykładowej aplikacji, chociaż każde wystąpienie aplikacji ma również unikatową nazwę.For example a developer could have apps named as follows: myapp.foo1.p.azurewebsites.net, myapp.foo2.p.azurewebsites.net, myapp.foo3.p.azurewebsites.net, etc. For the sample app though each app instance also has a unique name. Używane nazwy wystąpień aplikacji to webfrontend1, webfrontend2i webfrontend3.The app instance names used are webfrontend1, webfrontend2, and webfrontend3.

Konfigurowanie profilu Traffic ManagerSetting up the Traffic Manager Profile

Po wdrożeniu wielu wystąpień aplikacji w wielu środowiskach App Service poszczególne wystąpienia aplikacji mogą być rejestrowane przy użyciu Traffic Manager.Once multiple instances of an app are deployed on multiple App Service Environments, the individual app instances can be registered with Traffic Manager. W przypadku przykładowej Traffic Manager aplikacji Scalable-ASE-demo.trafficmanager.NET profil jest wymagany w celu przekierowania klientów do dowolnego z następujących wdrożonych wystąpień aplikacji:For the sample app a Traffic Manager profile is needed for scalable-ase-demo.trafficmanager.net that can route customers to any of the following deployed app instances:

  • webfrontend1.fe1ase.p.azurewebsites.NET: Wystąpienie przykładowej aplikacji wdrożonej na pierwszej App Service Environment.webfrontend1.fe1ase.p.azurewebsites.net: An instance of the sample app deployed on the first App Service Environment.
  • webfrontend2.fe2ase.p.azurewebsites.NET: Wystąpienie przykładowej aplikacji wdrożonej na drugim App Service Environment.webfrontend2.fe2ase.p.azurewebsites.net: An instance of the sample app deployed on the second App Service Environment.
  • webfrontend3.fe3ase.p.azurewebsites.NET: Wystąpienie przykładowej aplikacji wdrożonej na trzecim App Service Environment.webfrontend3.fe3ase.p.azurewebsites.net: An instance of the sample app deployed on the third App Service Environment.

Najprostszym sposobem na zarejestrowanie wielu punktów końcowych Azure App Service, wszystkie działające w tym samym regionie świadczenia usługi Azure, jest Obsługa Traffic Manager Azure Resource Managerprogramu PowerShell.The easiest way to register multiple Azure App Service endpoints, all running in the same Azure region, is with the Powershell Azure Resource Manager Traffic Manager support.

Pierwszym krokiem jest utworzenie profilu usługi Azure Traffic Manager.The first step is to create an Azure Traffic Manager profile. Poniższy kod przedstawia sposób tworzenia profilu dla przykładowej aplikacji:The code below shows how the profile was created for the sample app:

$profile = New-AzureTrafficManagerProfile –Name scalableasedemo -ResourceGroupName yourRGNameHere -TrafficRoutingMethod Weighted -RelativeDnsName scalable-ase-demo -Ttl 30 -MonitorProtocol HTTP -MonitorPort 80 -MonitorPath "/"

Zwróć uwagę na to, jak parametr RelativeDnsName został ustawiony na skalowalność-ASE-Demonstracja.Notice how the RelativeDnsName parameter was set to scalable-ase-demo. Jest to sposób tworzenia nazwy domeny Scalable-ASE-demo.trafficmanager.NET i skojarzona z profilem Traffic Manager.This is how the domain name scalable-ase-demo.trafficmanager.net is created and associated with a Traffic Manager profile.

Parametr TrafficRoutingMethod definiuje zasady równoważenia obciążenia, Traffic Manager będą używane do określania sposobu rozłożenia obciążenia klienta we wszystkich dostępnych punktach końcowych.The TrafficRoutingMethod parameter defines the load balancing policy Traffic Manager will use to determine how to spread customer load across all of the available endpoints. W tym przykładzie wybrano metodę ważoną .In this example the Weighted method was chosen. Spowoduje to rozproszenie żądań klientów na wszystkie zarejestrowane punkty końcowe aplikacji na podstawie wag względnych skojarzonych z każdym punktem końcowym.This will result in customer requests being spread across all of the registered application endpoints based on the relative weights associated with each endpoint.

Po utworzeniu profilu każde wystąpienie aplikacji jest dodawane do profilu jako natywny punkt końcowy platformy Azure.With the profile created, each app instance is added to the profile as a native Azure endpoint. Poniższy kod pobiera odwołanie do każdej aplikacji sieci Web frontonu, a następnie dodaje każdą aplikację jako punkt końcowy Traffic Manager za pomocą parametru element targetresourceid .The code below fetches a reference to each front end web app, and then adds each app as a Traffic Manager endpoint by way of the TargetResourceId parameter.

$webapp1 = Get-AzWebApp -Name webfrontend1
Add-AzureTrafficManagerEndpointConfig –EndpointName webfrontend1 –TrafficManagerProfile $profile –Type AzureEndpoints -TargetResourceId $webapp1.Id –EndpointStatus Enabled –Weight 10

$webapp2 = Get-AzWebApp -Name webfrontend2
Add-AzureTrafficManagerEndpointConfig –EndpointName webfrontend2 –TrafficManagerProfile $profile –Type AzureEndpoints -TargetResourceId $webapp2.Id –EndpointStatus Enabled –Weight 10

$webapp3 = Get-AzWebApp -Name webfrontend3
Add-AzureTrafficManagerEndpointConfig –EndpointName webfrontend3 –TrafficManagerProfile $profile –Type AzureEndpoints -TargetResourceId $webapp3.Id –EndpointStatus Enabled –Weight 10

Set-AzureTrafficManagerProfile –TrafficManagerProfile $profile

Zwróć uwagę na to, jak jedno wywołanie elementu Add-AzureTrafficManagerEndpointConfig dla każdego pojedynczego wystąpienia aplikacji.Notice how there is one call to Add-AzureTrafficManagerEndpointConfig for each individual app instance. Parametr element targetresourceid w każdym poleceniu programu PowerShell odwołuje się do jednego z trzech wdrożonych wystąpień aplikacji.The TargetResourceId parameter in each Powershell command references one of the three deployed app instances. Profil Traffic Manager będzie rozłożony na wszystkie trzy punkty końcowe zarejestrowane w profilu.The Traffic Manager profile will spread load across all three endpoints registered in the profile.

Wszystkie trzy punkty końcowe używają tej samej wartości (10) dla parametru wagi .All of the three endpoints use the same value (10) for the Weight parameter. Powoduje to Traffic Manager rozproszenia żądań klientów między wszystkimi trzema wystąpieniami aplikacji.This results in Traffic Manager spreading customer requests across all three app instances relatively evenly.

Wskaż domenę niestandardową aplikacji w domenie Traffic ManagerPointing the App's Custom Domain at the Traffic Manager Domain

Ostatnim krokiem niezbędnym jest wskazanie domeny niestandardowej aplikacji w domenie Traffic Manager.The final step necessary is to point the custom domain of the app at the Traffic Manager domain. W przypadku przykładowej aplikacji oznacza to, że www.scalableasedemo.com wskazujące scalable-ase-demo.trafficmanager.net.For the sample app this means pointing www.scalableasedemo.com at scalable-ase-demo.trafficmanager.net. Ten krok należy wykonać przy użyciu rejestratora domen, który zarządza domeną niestandardową.This step needs to be completed with the domain registrar that manages the custom domain.

Korzystając z narzędzi do zarządzania domeną rejestratora, należy utworzyć rekordy CNAME wskazujące domenę niestandardową w domenie Traffic Manager.Using your registrar's domain management tools, a CNAME records needs to be created which points the custom domain at the Traffic Manager domain. Na poniższej ilustracji przedstawiono przykład tego, jak wygląda ta konfiguracja CNAME:The picture below shows an example of what this CNAME configuration looks like:

Rekord CNAME dla domeny niestandardowej

Chociaż nie zostały omówione w tym temacie, należy pamiętać, że każde pojedyncze wystąpienie aplikacji musi mieć także zarejestrowaną domenę niestandardową.Although not covered in this topic, remember that each individual app instance needs to have the custom domain registered with it as well. W przeciwnym razie, jeśli żądanie spowoduje przekazanie go do wystąpienia aplikacji, a aplikacja nie ma domeny niestandardowej zarejestrowanej w aplikacji, żądanie zakończy się niepowodzeniem.Otherwise if a request makes it to an app instance, and the application does not have the custom domain registered with the app, the request will fail.

W tym przykładzie domena niestandardowa jest www.scalableasedemo.com, a każde wystąpienie aplikacji ma skojarzoną z nią domenę niestandardową.In this example the custom domain is www.scalableasedemo.com, and each application instance has the custom domain associated with it.

Domena niestandardowa

Aby dowiedzieć się podsumowanie, jak zarejestrować domenę niestandardową przy użyciu aplikacji Azure App Service, zobacz następujący artykuł dotyczący rejestrowania domen niestandardowych.For a recap of registering a custom domain with Azure App Service apps, see the following article on registering custom domains.

Próba wypróbowania topologii rozproszonejTrying out the Distributed Topology

Końcowym wynikiem Traffic Manager i konfiguracji DNS jest to, że żądania www.scalableasedemo.com będą przepływać przez następującą sekwencję:The end result of the Traffic Manager and DNS configuration is that requests for www.scalableasedemo.com will flow through the following sequence:

  1. Przeglądarka lub urządzenie przeprowadzi wyszukiwanie DNS www.scalableasedemo.comA browser or device will make a DNS lookup for www.scalableasedemo.com
  2. Wpis CNAME w rejestratorze domeny powoduje przekierowanie wyszukiwania DNS do usługi Azure Traffic Manager.The CNAME entry at the domain registrar causes the DNS lookup to be redirected to Azure Traffic Manager.
  3. Dla Scalable-ASE-demo.trafficmanager.NET na jednym z serwerów DNS na platformie Traffic Manager Azure jest tworzone wyszukiwanie DNS.A DNS lookup is made for scalable-ase-demo.trafficmanager.net against one of the Azure Traffic Manager DNS servers.
  4. Na podstawie zasad równoważenia obciążenia ( TrafficRoutingMethod użyty wcześniej podczas tworzenia profilu Traffic Manager) Traffic Manager wybierze jeden ze skonfigurowanych punktów końcowych i zwróci nazwę FQDN tego punktu końcowego do przeglądarki lub urządzenia.Based on the load balancing policy (the TrafficRoutingMethod parameter used earlier when creating the Traffic Manager profile), Traffic Manager will select one of the configured endpoints and return the FQDN of that endpoint to the browser or device.
  5. Ponieważ nazwa FQDN punktu końcowego jest adresem URL wystąpienia aplikacji uruchomionego na App Service Environment, przeglądarka lub urządzenie będzie poprosiła Microsoft Azure serwer DNS, aby rozpoznać nazwę FQDN jako adres IP.Since the FQDN of the endpoint is the Url of an app instance running on an App Service Environment, the browser or device will ask a Microsoft Azure DNS server to resolve the FQDN to an IP address.
  6. Przeglądarka lub urządzenie wyśle żądanie HTTP/S na adres IP.The browser or device will send the HTTP/S request to the IP address.
  7. Żądanie będzie docierać do jednego z wystąpień aplikacji uruchomionych w jednym ze środowisk App Service.The request will arrive at one of the app instances running on one of the App Service Environments.

Na poniższej ilustracji przedstawiono wyszukiwanie DNS dla domeny niestandardowej przykładowej aplikacji, która została pomyślnie rozpoznana w wystąpieniu aplikacji działającym na jednym z trzech przykładowych środowisk App Service (w tym przypadku drugi z trzech środowisk App Service):The console picture below shows a DNS lookup for the sample app's custom domain successfully resolving to an app instance running on one of the three sample App Service Environments (in this case the second of the three App Service Environments):

Wyszukiwanie DNS

Dokumentacja dotycząca obsługi Traffic Manager Azure Resource Managerprogramu PowerShell.Documentation on the Powershell Azure Resource Manager Traffic Manager support.

Uwaga

Jeśli chcesz zacząć korzystać z usługi Azure App Service przed utworzeniem konta platformy Azure, przejdź do artykułu Try App Service (Wypróbuj usługę App Service), w którym wyjaśniono, jak od razu utworzyć początkową aplikację internetową o krótkim okresie istnienia w usłudze App Service.If you want to get started with Azure App Service before signing up for an Azure account, go to Try App Service, where you can immediately create a short-lived starter web app in App Service. Bez kart kredytowych i bez zobowiązań.No credit cards required; no commitments.