Aplikacja n-warstwowa przy użyciu programu Apache Cassandra

DNS
Load Balancer
Monitor
Virtual Machines
Virtual Network

Ta architektura referencyjna pokazuje, jak wdrażać maszyny wirtualne i sieć wirtualną skonfigurowaną dla aplikacji N-warstwowej przy użyciu platformy Apache Cassandra w systemie Linux dla warstwy danych.This reference architecture shows how to deploy virtual machines (VMs) and a virtual network configured for an N-tier application, using Apache Cassandra on Linux for the data tier. Wdróż to rozwiązanie.Deploy this solution.

Architektura N-warstwowa korzystająca Microsoft AzureN-tier architecture using Microsoft Azure

Pobierz plik programu Visio z tą architekturą.Download a Visio file of this architecture.

ArchitekturaArchitecture

Architektura ma następujące składniki.The architecture has the following components.

OgólneGeneral

  • Grupa zasobów.Resource group. Grupy zasobów służą do grupowania zasobów platformy Azure, dzięki czemu mogą być zarządzane przez okres istnienia, właściciela lub inne kryteria.Resource groups are used to group Azure resources so they can be managed by lifetime, owner, or other criteria.

  • Strefy dostępności.Availability zones. Strefy dostępności są lokalizacjami fizycznymi w regionie świadczenia usługi Azure.Availability zones are physical locations within an Azure region. Każda strefa składa się z co najmniej jednego centrum danych z niezależną mocą, chłodzeniem i siecią.Each zone consists of one or more datacenters with independent power, cooling, and networking. Umieszczając maszyny wirtualne w różnych strefach, aplikacja zostanie odporna na awarie w strefie.By placing VMs across zones, the application becomes resilient to failures within a zone.

Obsługa sieci i równoważenia obciążeniaNetworking and load balancing

  • Sieć wirtualna i podsieci.Virtual network and subnets. Każda maszyna wirtualna platformy Azure jest wdrażana w sieci wirtualnej, która może zostać ujęta w podsieci.Every Azure VM is deployed into a virtual network that can be segmented into subnets. Utwórz oddzielną podsieć dla każdej warstwy.Create a separate subnet for each tier.

  • Brama aplikacji.Application gateway. Application Gateway to moduł równoważenia obciążenia warstwy 7.Application Gateway is a layer 7 load balancer. W tej architekturze kieruje żądania HTTP do frontonu sieci Web.In this architecture, it routes HTTP requests to the web front end. Application Gateway udostępnia również zaporę aplikacji sieci Web (WAF), która chroni aplikację przed typowymi atakami i lukami w zabezpieczeniach.Application Gateway also provides a web application firewall (WAF) that protects the application from common exploits and vulnerabilities.

  • Moduły równoważenia obciążenia.Load balancers. Użyj usługi Azure usługa Load Balancer w warstwie Standardowa , aby dystrybuować ruch sieciowy z warstwy internetowej do warstwy biznesowej.Use Azure Standard Load Balancer to distribute network traffic from the web tier to the business tier.

  • Sieciowe grupy zabezpieczeń (sieciowych grup zabezpieczeń).Network security groups (NSGs). Użyj sieciowych grup zabezpieczeń , aby ograniczyć ruch sieciowy w sieci wirtualnej.Use NSGs to restrict network traffic within the virtual network. Na przykład w przypadku architektury trójwarstwowej pokazanej w tym miejscu warstwa bazy danych nie akceptuje ruchu z frontonu sieci Web, tylko z warstwy biznesowej i podsieci zarządzania.For example, in the three-tier architecture shown here, the database tier does not accept traffic from the web front end, only from the business tier and the management subnet.

  • DDoS Protection.DDoS Protection. Mimo że platforma Azure zapewnia podstawową ochronę przed atakami rozproszonymi typu "odmowa usługi" (DDoS), zalecamy użycie standardu DDoS Protection, który ma ulepszone funkcje ograniczenia DDoS.Although the Azure platform provides basic protection against distributed denial of service (DDoS) attacks, we recommend using DDoS Protection Standard, which has enhanced DDoS mitigation features. Zobacz zagadnienia dotyczące zabezpieczeń.See Security considerations.

  • Azure DNS.Azure DNS. Usługa Azure DNS jest usługą hostingu dla domen DNS.Azure DNS is a hosting service for DNS domains. Zapewnia rozpoznawanie nazw przy użyciu infrastruktury Microsoft Azure.It provides name resolution using Microsoft Azure infrastructure. Dzięki hostowaniu swoich domen na platformie Azure możesz zarządzać rekordami DNS z zastosowaniem tych samych poświadczeń, interfejsów API, narzędzi i rozliczeń co w przypadku innych usług platformy Azure.By hosting your domains in Azure, you can manage your DNS records using the same credentials, APIs, tools, and billing as your other Azure services.

Maszyny wirtualneVirtual machines

  • Baza danych Apache Cassandra.Apache Cassandra database. Zapewnia wysoką dostępność w warstwie danych przez włączenie replikacji i trybu failover.Provides high availability at the data tier, by enabling replication and failover.

  • OpsCenter.OpsCenter. Wdróż rozwiązanie monitorujące, takie jak DataStax OpsCenter , aby monitorować klaster Cassandra.Deploy a monitoring solution such as DataStax OpsCenter to monitor the Cassandra cluster.

  • Rampa.Jumpbox. Nazywana również [hostem bastionu].Also called a bastion host. Bezpieczna maszyna wirtualna w sieci, której administratorzy używają do łączenia się z innymi maszynami wirtualnymi.A secure VM on the network that administrators use to connect to the other VMs. Rampa zawiera sieciową grupę zabezpieczeń, która zezwala na zdalny ruch z publicznych adresów IP znajdujących się na liście bezpiecznych adresów.The jumpbox has an NSG that allows remote traffic only from public IP addresses on a safe list. Sieciowa grupa zabezpieczeń powinna zezwalać na ruch pulpitu zdalnego (RDP).The NSG should permit remote desktop (RDP) traffic.

ZaleceniaRecommendations

Wymagania rzeczywiste mogą różnić się od dotyczących opisanej tu architektury.Your requirements might differ from the architecture described here. Potraktuj te zalecenia jako punkt wyjścia.Use these recommendations as a starting point.

Maszyny wirtualneVirtual machines

Aby uzyskać zalecenia dotyczące konfigurowania maszyn wirtualnych, zobacz Uruchamianie maszyny wirtualnej z systemem Linux na platformie Azure.For recommendations on configuring the VMs, see Run a Linux VM on Azure.

Sieć wirtualnaVirtual network

Podczas tworzenia sieci wirtualnej należy określić liczbę adresów IP wymaganych przez zasoby w poszczególnych podsieciach.When you create the virtual network, determine how many IP addresses your resources in each subnet require. Określ maskę podsieci i zakres adresów sieciowych wystarczająco duży dla wymaganych adresów IP, używając notacji CIDR .Specify a subnet mask and a network address range large enough for the required IP addresses, using CIDR notation. Użyj przestrzeni adresowej należącej do standardowych bloków prywatnych adresów IP, tj. 10.0.0.0/8, 172.16.0.0/12 i 192.168.0.0/16.Use an address space that falls within the standard private IP address blocks, which are 10.0.0.0/8, 172.16.0.0/12, and 192.168.0.0/16.

Wybierz zakres adresów, który nie nakłada się na sieć lokalną, na wypadek potrzeby późniejszego skonfigurowania bramy między siecią wirtualną i sieci lokalnej.Choose an address range that doesn't overlap with your on-premises network, in case you need to set up a gateway between the VNet and your on-premises network later. Po utworzeniu sieci wirtualnej nie można zmienić zakresu adresów.Once you create the VNet, you can't change the address range.

Zaprojektuj podsieci, pamiętając o wymaganiach dotyczących funkcjonalność i zabezpieczeń.Design subnets with functionality and security requirements in mind. Wszystkie maszyny wirtualne w tej samej warstwie lub roli powinny należeć do tej samej podsieci, która może być granicą zabezpieczeń.All VMs within the same tier or role should go into the same subnet, which can be a security boundary. Aby uzyskać więcej informacji na temat projektowania sieci wirtualnych i podsieci, zobacz Plan and design Azure Virtual Networks (Planowanie i projektowanie sieci wirtualnych platformy Azure).For more information about designing VNets and subnets, see Plan and design Azure Virtual Networks.

Application GatewayApplication Gateway

Aby uzyskać informacje o konfigurowaniu Application Gateway, zobacz Omówienie konfiguracji Application Gateway.For information about configuring Application Gateway, see Application Gateway configuration overview.

Moduły równoważenia obciążeniaLoad balancers

Nie ujawniaj maszyn wirtualnych bezpośrednio w Internecie.Do not expose the VMs directly to the Internet. Zamiast tego nadaj każdej maszynie wirtualnej prywatny adres IP.Instead, give each VM a private IP address. Klienci łączą się przy użyciu adresu IP skojarzonego z Application Gateway.Clients connect using the IP address associated with the Application Gateway.

Zdefiniuj reguły modułu równoważenia obciążenia tak, aby ruch sieciowy był przekierowywany bezpośrednio do maszyn wirtualnych.Define load balancer rules to direct network traffic to the VMs. Na przykład aby umożliwić ruch HTTP, utwórz regułę mapującą port 80 z konfiguracji frontonu na port 80 w puli adresów zaplecza.For example, to enable HTTP traffic, create a rule that maps port 80 from the front-end configuration to port 80 on the back-end address pool. Gdy klient wysyła żądanie HTTP do portu 80, moduł równoważenia obciążenia wybiera adres IP zaplecza za pomocą algorytmu wyznaczania wartości skrótu zawierającego źródłowy adres IP.When a client sends an HTTP request to port 80, the load balancer selects a back-end IP address by using a hashing algorithm that includes the source IP address. Żądania klientów są dystrybuowane na wszystkich maszynach wirtualnych.Client requests are distributed across all the VMs.

Grupy zabezpieczeń sieciNetwork security groups

Reguły sieciowej grupy zabezpieczeń służą do ograniczania ruchu między warstwami.Use NSG rules to restrict traffic between tiers. Na przykład w przypadku architektury trójwarstwowej pokazanej powyżej warstwa sieci Web nie komunikuje się bezpośrednio z warstwą bazy danych.For example, in the three-tier architecture shown above, the web tier does not communicate directly with the database tier. Aby to wymusić, warstwa bazy danych powinna blokować ruch przychodzący z podsieci warstwy internetowej.To enforce this, the database tier should block incoming traffic from the web tier subnet.

  1. Odrzuć cały ruch przychodzący z sieci wirtualnej.Deny all inbound traffic from the VNet. (Użyj tagu VIRTUAL_NETWORK w regule).(Use the VIRTUAL_NETWORK tag in the rule.)
  2. Zezwalaj na ruch przychodzący z podsieci warstwy biznesowej.Allow inbound traffic from the business tier subnet.
  3. Zezwalaj na ruch przychodzący z podsieci warstwy bazy danych.Allow inbound traffic from the database tier subnet itself. Ta reguła umożliwia komunikację między maszynami wirtualnymi baz danych, które są niezbędne do replikacji bazy danych i przełączania do trybu failover.This rule allows communication between the database VMs, which is needed for database replication and failover.
  4. Zezwalaj na ruch SSH (port 22) z podsieci serwera przesiadkowego.Allow ssh traffic (port 22) from the jumpbox subnet. Ta zasada umożliwia administratorom nawiązywanie połączenia z warstwą bazy danych z poziomu serwera przesiadkowego.This rule lets administrators connect to the database tier from the jumpbox.

Utwórz reguły 2 – 4 z wyższym priorytetem niż pierwsza reguła, aby przesłonić ją.Create rules 2 – 4 with higher priority than the first rule, so they override it.

CassandraCassandra

Zalecamy korzystanie z usługi DataStax Enterprise w środowisku produkcyjnym, ale te zalecenia dotyczą wszystkich wersji oprogramowania Cassandra.We recommend DataStax Enterprise for production use, but these recommendations apply to any Cassandra edition. Aby uzyskać więcej informacji na temat uruchamiania rozwiązania DataStax na platformie Azure, zobacz DataStax Enterprise Deployment Guide for Azure (Przewodnik wdrażania rozwiązania DataStax Enterprise na platformie Azure).For more information on running DataStax in Azure, see DataStax Enterprise Deployment Guide for Azure.

Skonfiguruj węzły w trybie rozpoznawania regałów na sprzęt.Configure nodes in rack-aware mode. Zamapuj domeny błędów na stojak (regał) w pliku cassandra-rackdc.properties.Map fault domains to racks in the cassandra-rackdc.properties file.

Nie potrzeba modułu równoważenia obciążenia przed klastrem.You don't need a load balancer in front of the cluster. Klient łączy się bezpośrednio z węzłem w klastrze.The client connects directly to a node in the cluster.

Skrypty wdrażania dla tej architektury używają rozpoznawania nazw w celu zainicjowania węzła inicjatora komunikacji wewnątrz klastra (Gossip).The deployment scripts for this architecture use name resolution to initialize the seed node for intra-cluster communication (gossip). Aby włączyć rozpoznawanie nazw, wdrożenie tworzy strefę Prywatna strefa DNS platformy Azure z rekordami dla węzłów Cassandra.To enable name resolution, the deployment creates an Azure Private DNS zone with A records for the Cassandra nodes. W zależności od skryptów inicjalizacji może być możliwe użycie statycznego adresu IP.Depending on your initialization scripts, you might be able to use the static IP address instead.

Uwaga

Usługa Azure Prywatna strefa DNS jest obecnie w publicznej wersji zapoznawczej.Azure Private DNS is currently in public preview.

RampaJumpbox

Nie Zezwalaj na dostęp SSH z publicznego Internetu do maszyn wirtualnych, na których działa obciążenie aplikacji.Don't allow ssh access from the public Internet to the VMs that run the application workload. Zamiast tego wszyscy dostęp SSH do tych maszyn wirtualnych musi następować przez serwera przesiadkowego.Instead, all ssh access to these VMs must come through the jumpbox. Administratorzy logują się do serwera przesiadkowego, a następnie logują się do innej maszyny wirtualnej z poziomu serwera przesiadkowego.An administrator logs into the jumpbox, and then logs into the other VM from the jumpbox. Serwera przesiadkowego zezwala na ruch SSH z Internetu, ale tylko ze znanych, bezpiecznych adresów IP.The jumpbox allows ssh traffic from the Internet, but only from known, safe IP addresses.

Serwera przesiadkowego ma minimalne wymagania dotyczące wydajności, więc wybierz mały rozmiar maszyny wirtualnej.The jumpbox has minimal performance requirements, so select a small VM size. Utwórz publiczny adres IP dla serwera przesiadkowego.Create a public IP address for the jumpbox. Umieść serwer przesiadkowy w tej samej sieci wirtualnej co pozostałe maszyny wirtualne, ale w oddzielnej podsieci zarządzania.Place the jumpbox in the same VNet as the other VMs, but in a separate management subnet.

Aby zabezpieczyć serwera przesiadkowego, Dodaj regułę sieciowej grupy zabezpieczeń, która zezwala na połączenia SSH tylko z bezpiecznego zestawu publicznych adresów IP.To secure the jumpbox, add an NSG rule that allows ssh connections only from a safe set of public IP addresses. Skonfiguruj sieciowych grup zabezpieczeń dla innych podsieci, aby zezwolić na ruch SSH z podsieci zarządzania.Configure the NSGs for the other subnets to allow ssh traffic from the management subnet.

Zagadnienia dotyczące skalowalnościScalability considerations

Zestawy skalowaniaScale sets

W przypadku warstw sieci Web i biznesowej należy rozważyć użycie zestawów skalowania maszyn wirtualnychzamiast wdrażania oddzielnych maszyn wirtualnych w zestawie dostępności.For the web and business tiers, consider using virtual machine scale sets, instead of deploying separate VMs into an availability set. Zestaw skalowania ułatwia wdrażanie zestawu identycznych maszyn wirtualnych i zarządzanie nim oraz automatyczne skalowanie maszyn wirtualnych w oparciu o metryki wydajności.A scale set makes it easy to deploy and manage a set of identical VMs, and autoscale the VMs based on performance metrics. W miarę wzrostu obciążenia na maszynach wirtualnych do modułu równoważenia obciążenia automatycznie są dodawane kolejne maszyny wirtualne.As the load on the VMs increases, additional VMs are automatically added to the load balancer.

Istnieją dwa podstawowe sposoby konfigurowania maszyn wirtualnych wdrożonych w zestawie skalowania:There are two basic ways to configure VMs deployed in a scale set:

  • Użyj rozszerzeń, aby skonfigurować maszynę wirtualną po jej wdrożeniu.Use extensions to configure the VM after it's deployed. W tej metodzie uruchomienie nowych wystąpień maszyny wirtualnej może potrwać dłużej niż w przypadku maszyny wirtualnej bez rozszerzeń.With this approach, new VM instances may take longer to start up than a VM with no extensions.

  • Wdróż dysk zarządzany przy użyciu niestandardowego obrazu dysku.Deploy a managed disk with a custom disk image. Ta opcja może być szybsza do wdrożenia.This option may be quicker to deploy. Wymaga to jednak, aby zachować aktualność obrazu.However, it requires you to keep the image up-to-date.

Aby uzyskać więcej informacji, zobacz zagadnienia dotyczące projektowania zestawów skalowania.For more information, see Design considerations for scale sets.

Porada

Jeśli używasz dowolnego rozwiązania do automatycznego skalowania, starannie przetestuj je wcześniej z obciążeniami na poziomie produkcyjnym.When using any autoscale solution, test it with production-level workloads well in advance.

Limity subskrypcjiSubscription limits

Każda subskrypcja platformy Azure ma domyślne limity, między innymi ograniczenie maksymalnej liczby maszyn wirtualnych na region.Each Azure subscription has default limits in place, including a maximum number of VMs per region. Możesz zwiększyć limit, zgłaszając żądanie obsługi.You can increase the limit by filing a support request. Aby uzyskać więcej informacji, zobacz Azure subscription and service limits, quotas, and constraints (Limity, przydziały i ograniczenia usług i subskrypcji platformy Azure).For more information, see Azure subscription and service limits, quotas, and constraints.

Application GatewayApplication Gateway

Application Gateway obsługuje tryb stałej pojemności lub tryb skalowania automatycznego.Application Gateway supports fixed capacity mode or autoscaling mode. Tryb stałej wydajności jest przydatny w scenariuszach z spójnymi i przewidywalnymi obciążeniami.Fixed capacity mode is useful for scenarios with consistent and predictable workloads. Rozważ użycie trybu skalowania automatycznego dla obciążeń z ruchem zmiennym.Consider using autoscaling mode for workloads with variable traffic. Aby uzyskać więcej informacji, zobacz Automatyczne skalowanie i strefowo nadmiarowe Application Gateway v2.For more information, see Autoscaling and Zone-redundant Application Gateway v2.

Zagadnienia dotyczące wydajnościPerformance considerations

Aby uzyskać najlepszą wydajność Cassandra na maszynach wirtualnych platformy Azure, zapoznaj się z zaleceniami dotyczącymi uruchamiania oprogramowania Apache Cassandra na maszynach wirtualnych platformy Azure.To get the best performance from Cassandra on Azure VMs, see the recommendations in Run Apache Cassandra on Azure VMs.

Zagadnienia dotyczące dostępnościAvailability considerations

Strefy dostępności zapewniają najlepszą odporność w obrębie jednego regionu.Availability zones provide the best resiliency within a single region. Jeśli potrzebujesz jeszcze wyższej dostępności, weź pod uwagę replikację aplikacji w dwóch regionach.If you need even higher availability, consider replicating the application across two regions.

Nie wszystkie regiony obsługują strefy dostępności, a nie wszystkie rozmiary maszyn wirtualnych są obsługiwane we wszystkich strefach.Not all regions support availability zones, and not all VM sizes are supported in all zones. Uruchom następujące polecenie interfejsu wiersza polecenia platformy Azure, aby znaleźć obsługiwane strefy dla każdego rozmiaru maszyny wirtualnej w danym regionie:Run the following Azure CLI command to find the supported zones for each VM size within a region:

az vm list-skus --resource-type virtualMachines --zone false --location <location> \
    --query "[].{Name:name, Zones:locationInfo[].zones[] | join(','@)}" -o table

W przypadku wdrożenia tej architektury w regionie, który nie obsługuje stref dostępności, należy umieścić maszyny wirtualne dla każdej warstwy w zestawie dostępności.If you deploy this architecture to a region that does not support availability zones, put the VMs for each tier inside an availability set. Maszyny wirtualne w tej samej dostępności są wdrażane na wielu serwerach fizycznych, stojakach obliczeniowych, jednostkach magazynowych i przełącznikach sieciowych w celu zapewnienia nadmiarowości.VMs within the same availability are deployed across multiple physical servers, compute racks, storage units, and network switches for redundancy. Zestawy skalowania automatycznie używają grup umieszczania, które działają jako niejawny zestaw dostępności.Scale sets automatically use placement groups, which act as an implicit availability set.

Podczas wdrażania w strefach dostępności Użyj standardowej jednostki SKU Azure Load Balancer i jednostki SKU w wersji 2 systemu Application Gateway.When deploying to availability zones, use the Standard SKU of Azure Load Balancer and the v2 SKU of Application Gateway. Te jednostki SKU obsługują nadmiarowość między strefami.These SKUs support cross-zone redundancy. Aby uzyskać więcej informacji, zobacz:For more information, see:

Pojedyncze wdrożenie Application Gateway może uruchamiać wiele wystąpień bramy.A single Application Gateway deployment can run multiple instances of the gateway. W przypadku obciążeń produkcyjnych Uruchom co najmniej dwa wystąpienia.For production workloads, run at least two instances.

Klaster CassandraCassandra cluster

W przypadku klastra Cassandra scenariusze trybu failover zależą od poziomów spójności używanych przez aplikację i liczby replik.For the Cassandra cluster, the failover scenarios depend on the consistency levels used by the application and the number of replicas. Aby uzyskać informacje na temat poziomów spójności i użycia w oprogramowaniu Cassandra, zobacz Configuring data consistency (Konfigurowanie spójności danych) i Cassandra: How many nodes are talked to with Quorum? (Cassandra: Z iloma węzłami komunikuje się rozwiązanie Quorum?).For consistency levels and usage in Cassandra, see Configuring data consistency and Cassandra: How many nodes are talked to with Quorum? Dostępność danych w oprogramowaniu Cassandra zależy od poziomu spójności używanego przez aplikację i mechanizm replikacji.Data availability in Cassandra is determined by the consistency level used by the application and the replication mechanism. Aby uzyskać informacje na temat replikacji w oprogramowaniu Cassandra, zobacz Data Replication in NoSQL Databases Explained (Omówienie replikacji danych w bazach danych NoSQL).For replication in Cassandra, see Data Replication in NoSQL Databases Explained.

Sondy kondycjiHealth probes

Application Gateway i Load Balancer do monitorowania dostępności wystąpień maszyn wirtualnych używane są sondy kondycji.Application Gateway and Load Balancer both use health probes to monitor the availability of VM instances.

  • Application Gateway zawsze używa sondy HTTP.Application Gateway always uses an HTTP probe.
  • Load Balancer może przetestować protokół HTTP lub TCP.Load Balancer can test either HTTP or TCP. Ogólnie rzecz biorąc, jeśli na maszynie wirtualnej jest uruchomiony serwer HTTP, użyj sondy HTTP.Generally, if a VM runs an HTTP server, use an HTTP probe. W przeciwnym razie Użyj protokołu TCP.Otherwise, use TCP.

Jeśli sonda nie może nawiązać połączenia z wystąpieniem w określonym limicie czasu, Brama lub moduł równoważenia obciążenia przestanie wysyłać ruch do tej maszyny wirtualnej.If a probe can't reach an instance within a timeout period, the gateway or load balancer stops sending traffic to that VM. Sonda kontynuuje sprawdzanie i zwróci maszynę wirtualną do puli zaplecza, jeśli maszyna wirtualna znów zostanie udostępniona.The probe continues to check and will return the VM to the back-end pool if the VM becomes available again.

Sondy HTTP wysyłają żądanie HTTP GET do określonej ścieżki i nasłuchują odpowiedzi HTTP 200.HTTP probes send an HTTP GET request to a specified path and listen for an HTTP 200 response. Ta ścieżka może być ścieżką katalogu głównego ("/") lub punktem końcowym monitorowania kondycji implementującym pewną logikę niestandardową w celu sprawdzenia kondycji aplikacji.This path can be the root path ("/"), or a health-monitoring endpoint that implements some custom logic to check the health of the application. Punkt końcowy musi zezwalać na anonimowe żądania HTTP.The endpoint must allow anonymous HTTP requests.

Aby uzyskać więcej informacji na temat sond kondycji, zobacz:For more information about health probes, see:

Aby zapoznać się z zagadnieniami dotyczącymi projektowania punktu końcowego sondy kondycji, zobacz wzorzec monitorowania punktu końcowego kondycji.For considerations about designing a health probe endpoint, see Health Endpoint Monitoring pattern.

Kwestie związane z kosztamiCost considerations

Skorzystaj z kalkulatora cen platformy Azure , aby oszacować koszty.Use the Azure Pricing Calculator to estimates costs. Poniżej znajdują się inne zagadnienia.Here are some other considerations.

Zestawy skalowania maszyn wirtualnychVirtual machine scale sets

Zestawy skalowania maszyn wirtualnych są dostępne we wszystkich rozmiarach maszyn wirtualnych z systemem Linux.Virtual machine scale sets are available on all Linux VM sizes. Opłata jest naliczana tylko za maszyny wirtualne platformy Azure, które są wdrażane, a także dodatkowe używane zasoby infrastruktury, takie jak magazyn i sieć.You are only charged for the Azure VMs you deploy, as well as any additional underlying infrastructure resources consumed such as storage and networking. Nie ma opłat przyrostowych dla samej usługi zestawów skalowania maszyn wirtualnych.There are no incremental charges for the virtual machine scale sets service itself.

W przypadku opcji cennika dla jednej maszyny wirtualnej zobacz Cennik maszyn wirtualnych z systemem Linux.For single VMs pricing options See Linux VMs pricing.

Moduły równoważenia obciążeniaLoad balancers

Opłata jest naliczana tylko za liczbę skonfigurowanych reguł równoważenia obciążenia i ruchu wychodzącego.You are charged only for the number of configured load-balancing and outbound rules. Reguły NAT dla ruchu przychodzącego są bezpłatne.Inbound NAT rules are free. Nie jest naliczana opłata godzinowa za usługa Load Balancer w warstwie Standardowa, jeśli nie skonfigurowano żadnych reguł.There is no hourly charge for the Standard Load Balancer when no rules are configured.

Aby uzyskać więcej informacji, zapoznaj się z sekcją kosztów w temacie Dobrze zaprojektowana struktura platformy Microsoft Azure.For more information, see the cost section in Microsoft Azure Well-Architected Framework.

Zagadnienia dotyczące bezpieczeństwaSecurity considerations

Sieci wirtualne stanowią granicę izolacji ruchu na platformie Azure.Virtual networks are a traffic isolation boundary in Azure. Maszyny wirtualne w jednej sieci wirtualnej nie mogą komunikować się bezpośrednio z maszynami wirtualnymi w innej sieci wirtualnej.VMs in one VNet can't communicate directly with VMs in a different VNet. Maszyny wirtualne w tej samej sieci wirtualnej mogą się komunikować, chyba że w celu ograniczenia ruchu zostały utworzone sieciowe grupy zabezpieczeń (NSG).VMs within the same VNet can communicate, unless you create network security groups (NSGs) to restrict traffic. Aby uzyskać więcej informacji, zobacz Zabezpieczenia usług w chmurze i sieci firmy Microsoft.For more information, see Microsoft cloud services and network security.

W przypadku przychodzącego ruchu internetowego reguły modułu równoważenia obciążenia określają, jakiego rodzaju ruch może uzyskać dostęp do zaplecza.For incoming Internet traffic, the load balancer rules define which traffic can reach the back end. Jednak reguły modułu równoważenia obciążenia nie obsługują list bezpiecznych adresów IP, dlatego jeśli chcesz dodać określone publiczne adresy IP do listy bezpiecznych adresów, dodaj do podsieci sieciową grupę zabezpieczeń.However, load balancer rules don't support IP safe lists, so if you want to add certain public IP addresses to a safe list, add an NSG to the subnet.

Strefa DMZ.DMZ. Rozważ dodanie wirtualnego urządzenia sieciowego (WUS) w celu utworzenia strefy DMZ między Internetem a siecią wirtualną platformy Azure.Consider adding a network virtual appliance (NVA) to create a DMZ between the Internet and the Azure virtual network. Urządzenie WUS to ogólny termin określający urządzenie wirtualne, które może wykonywać zadania związane z siecią, takie jak zapora, inspekcja pakietów, inspekcja i niestandardowy routing.NVA is a generic term for a virtual appliance that can perform network-related tasks, such as firewall, packet inspection, auditing, and custom routing. Aby uzyskać więcej informacji, zobacz Implementowanie strefy DMZ między platformą Azure i Internetem.For more information, see Implementing a DMZ between Azure and the Internet.

Szyfrowanie.Encryption. Szyfruj poufne dane podczas przechowywania i korzystaj z usługi Azure Key Vault, aby zarządzać kluczami szyfrowania bazy danych.Encrypt sensitive data at rest and use Azure Key Vault to manage the database encryption keys. W usłudze Key Vault można przechowywać klucze szyfrowania w sprzętowych modułach zabezpieczeń (modułach HSM).Key Vault can store encryption keys in hardware security modules (HSMs). Zalecane jest również przechowywanie wpisów tajnych aplikacji, takich jak parametry połączenia bazy danych, w Key Vault.It's also recommended to store application secrets, such as database connection strings, in Key Vault.

Ochrona DDoS.DDoS protection. Platforma Azure domyślnie oferuje podstawową ochronę DDoS.The Azure platform provides basic DDoS protection by default. Ta podstawowa ochrona jest przeznaczona do ochrony infrastruktury platformy Azure jako całości.This basic protection is targeted at protecting the Azure infrastructure as a whole. Mimo że podstawowa ochrona DDoS jest włączona automatycznie, zalecamy korzystanie z DDoS Protection Standard.Although basic DDoS protection is automatically enabled, we recommend using DDoS Protection Standard. Standardowa ochrona używa dostrajania adaptacyjnego na podstawie wzorców ruchu sieciowego aplikacji w celu wykrywania zagrożeń.Standard protection uses adaptive tuning, based on your application's network traffic patterns, to detect threats. Pozwala to na stosowanie środków zaradczych przed atakami DDoS, które mogą być niezauważalne przez zasady DDoS w całej infrastrukturze.This allows it to apply mitigations against DDoS attacks that might go unnoticed by the infrastructure-wide DDoS policies. Ochrona standardowa zapewnia również alerty, dane telemetryczne i analizę za poorednictwem Azure Monitor.Standard protection also provides alerting, telemetry, and analytics through Azure Monitor. Aby uzyskać więcej informacji, zobacz Azure DDoS Protection: najlepsze rozwiązania i architektury referencyjne.For more information, see Azure DDoS Protection: Best practices and reference architectures.

Wdrażanie rozwiązaniaDeploy the solution

Wdrożenie tej architektury referencyjnej jest dostępne w usłudze GitHub.A deployment for this reference architecture is available on GitHub.

Jeśli określisz region obsługujący strefy dostępności, maszyny wirtualne są wdrażane w strefach dostępności.If you specify a region that supports availability zones, the VMs are deployed into availability zones. W przeciwnym razie maszyny wirtualne są wdrażane w zestawach dostępności.Otherwise, the VMs are deployed into availability sets. Listę regionów, które obsługują strefy dostępności, można znaleźć w temacie Obsługa usług według regionów.For a list of regions that support availability zones, see Services support by region.

Wymagania wstępnePrerequisites

  1. Sklonuj, utwórz rozwidlenie lub pobierz plik zip dla repozytorium GitHub architektur referencyjnych.Clone, fork, or download the zip file for the reference architectures GitHub repository.

  2. Zainstaluj interfejs wiersza polecenia platformy Azure w wersji 2.0.Install Azure CLI 2.0.

  3. Zainstaluj środowisko Node i menedżer NPMInstall Node and NPM

  4. Zainstaluj pakiet npm bloków konstrukcyjnych platformy Azure.Install the Azure building blocks npm package.

    npm install -g @mspnp/azure-building-blocks
    
  5. Z poziomu wiersza polecenia, wiersza powłoki lub wiersza polecenia programu PowerShell zaloguj się na swoje konto platformy Azure w następujący sposób:From a command prompt, bash prompt, or PowerShell prompt, sign into your Azure account as follows:

    az login
    

Wdrażanie rozwiązania przy użyciu polecenia azbbDeploy the solution using azbb

Aby wdrożyć maszyny wirtualne z systemem Linux dla architektury referencyjnej aplikacji n-warstwowej, wykonaj następujące kroki:To deploy the Linux VMs for an N-tier application reference architecture, follow these steps:

  1. Przejdź do folderu, aby znaleźć virtual-machines\n-tier-linux repozytorium sklonowane w kroku 1 powyżej powyższych wymagań wstępnych.Navigate to the virtual-machines\n-tier-linux folder for the repository you cloned in step 1 of the prerequisites above.

  2. Plik parametrów określa domyślną nazwę użytkownika i hasło administratora dla każdej maszyny wirtualnej we wdrożeniu.The parameter file specifies a default administrator user name and password for each VM in the deployment. Należy je zmienić przed wdrożeniem architektury referencyjnej.Change these before you deploy the reference architecture. Otwórz plik n-tier-linux.json i zastąp każde pole adminUsername i adminPassword nowymi ustawieniami.Open the n-tier-linux.json file and replace each adminUsername and adminPassword field with your new settings. Zapisz plik.Save the file.

  3. Wdróż architekturę referencyjną przy użyciu narzędzia azbb , jak pokazano poniżej.Deploy the reference architecture using the azbb tool as shown below.

    azbb -s <your subscription_id> -g <your resource_group_name> -l <azure region> -p n-tier-linux.json --deploy
    

Kwestie do rozważenia dotyczące metodyki DevOpsDevOps considerations

W tej architekturze można używać szablonu bloków konstrukcyjnych platformy Azure do aprowizacji zasobów platformy Azure i jej zależności.In this architecture you use an Azure Building Blocks template for provisioning the Azure resources and its dependencies. Ponieważ wszystkie główne zasoby i ich zależności znajdują się w tej samej sieci wirtualnej, są one izolowane w tym samym podstawowym obciążeniu, co ułatwia skojarzenie określonych zasobów obciążenia z zespołem DevOps, dzięki czemu zespół może niezależnie zarządzać wszystkimi aspektami tych zasobów.Since all the main resources and their dependencies are in the same virtual network, they are isolated in the same basic workload, that makes it easier to associate the workload's specific resources to a DevOps team, so that the team can independently manage all aspects of those resources. Ta izolacja umożliwia zespołom i usługom DevOps wykonywanie ciągłej integracji i ciągłego dostarczania (CI/CD).This isolation enables DevOps Teams and Services to perform continuous integration and continuous delivery (CI/CD).

Ponadto można użyć różnych szablonów wdrożenia i zintegrować je z Azure DevOps Services w celu aprowizacji różnych środowisk w ciągu kilku minut, na przykład w celu replikowania produkcji, takich jak scenariusze lub środowiska testowania obciążenia, tylko w razie potrzeby, co pozwala zaoszczędzić koszt.Also, you can use different deployment templates and integrate them with Azure DevOps Services to provision different environments in minutes, for example to replicate production like scenarios or load testing environments only when needed, saving cost.

W tym sceanario maszyny wirtualne są konfigurowane przy użyciu rozszerzeń maszyny wirtualnej, ponieważ oferują one możliwość instalowania pewnych dodatkowych programów, takich jak Apache Cassandra.In this sceanario you virtual machines are configured by using Virtual Machine Extensions, since they offer the possibility of installing certain additional software, such as Apache Cassandra. W szczególności rozszerzenie niestandardowego skryptu umożliwia pobieranie i wykonywanie dowolnego kodu na maszynie wirtualnej, co pozwala na nieograniczone dostosowanie systemu operacyjnego maszyny wirtualnej platformy Azure.In particular, the Custom Script Extension allows the download and execution of arbitrary code on a Virtual Machine, allowing unlimited customization of the Operating System of an Azure VM. Rozszerzenia maszyn wirtualnych są instalowane i wykonywane tylko podczas tworzenia maszyny wirtualnej.VM Extensions are installed and executed only at VM creation time. Oznacza to, że jeśli system operacyjny zostanie skonfigurowany niepoprawnie na późniejszym etapie, będzie wymagał ręcznej interwencji, aby przenieść ją z powrotem do prawidłowego stanu.That means if the Operating System gets configured incorrectly at a later stage, it will require a manual intervention to move it back to its correct state. Narzędzia do zarządzania konfiguracją mogą służyć do rozwiązywania tego problemu.Configuration Management Tools can be used to address this issue.

Rozważ użycie usługi Azure Monitor w celu analizowania i optymalizowania wydajności infrastruktury oraz monitorowania i diagnozowania problemów z siecią bez konieczności logowania się do maszyn wirtualnych.Consider using the Azure Monitor to Analyze and optimize the performance of your infrastructure, Monitor and diagnose networking issues without logging into your virtual machines. Application Insights jest jednym ze składników Azure Monitor, dzięki czemu można rozbudowane metryki i dzienniki w celu zweryfikowania stanu kompletnego poziomu platformy Azure.Application Insights is actually one of the components of Azure Monitor, which gives you rich metrics and logs to verify the state of your complete Azure landscape. Azure Monitor pomoże Ci postępować według stanu infrastruktury.Azure Monitor will help you to follow the state of your infrastructure.

Upewnij się, że nie tylko monitorujesz elementy obliczeniowe obsługujące kod aplikacji, ale również platformę danych, w szczególności dla baz danych, ponieważ niska wydajność warstwy danych aplikacji może mieć poważne konsekwencje.Make sure not only to monitor your compute elements supporting your application code, but your data platform as well, in particular your databases, since a low performance of the data tier of an application could have serious consequences.

Aby przetestować środowisko platformy Azure, w którym są uruchomione aplikacje, powinno być kontrolowane i wdrażane za pomocą tych samych mechanizmów co kod aplikacji, a następnie można je przetestować i zweryfikować za pomocą DevOpsych odmian testów.In order to test the Azure environment where the applications are running, it should be version-controlled and deployed through the same mechanisms as application code, then it can be tested and validated using DevOps testing paradigms too.

Aby uzyskać więcej informacji, zobacz sekcję doskonałości operacyjna w Microsoft Azure Well-Architecture Framework.For more information, see the Operational Excellence section in Microsoft Azure Well-Architecture Framework.

Następne krokiNext steps