Aplikacja n-warstwowa przy użyciu programu Apache Cassandra

Azure DNS
Azure Load Balancer
Azure Monitor
Azure Virtual Machines
Azure Virtual Network

Ta architektura referencyjna pokazuje, jak wdrażać maszyny wirtualne i sieć wirtualną skonfigurowaną dla aplikacji N-warstwowej przy użyciu systemu Apache Cassandra w systemie Linux dla warstwy danych.

Architektura

Diagram that shows the N-tier architecture using Microsoft Azure.

Pobierz plik programu Visio z tą architekturą.

Przepływ pracy

Architektura ma następujące składniki.

Ogólne

  • Grupa zasobów. Grupy zasobów są używane do grupowania zasobów platformy Azure, aby mogły być zarządzane przez okres istnienia, właściciela lub inne kryteria.

  • Strefy dostępności. Strefy dostępności to lokalizacje fizyczne w regionie świadczenia usługi Azure. Każda strefa składa się z co najmniej jednego centrum danych z niezależnym zasilaniem, chłodzeniem i siecią. Umieszczając maszyny wirtualne w różnych strefach, aplikacja staje się odporna na awarie w strefie.

Sieć i równoważenie obciążenia

  • Sieć wirtualna i podsieci. Każda maszyna wirtualna platformy Azure jest wdrażana w sieci wirtualnej, którą można podzielić na podsieci. Utwórz oddzielną podsieć dla każdej warstwy.

  • Application Gateway. Usługa Application Gateway to moduł równoważenia obciążenia warstwy 7. W tej architekturze kieruje żądania HTTP do frontonu internetowego. Usługa Application Gateway udostępnia również zaporę aplikacji internetowej, która chroni aplikację przed typowymi lukami w zabezpieczeniach i lukami w zabezpieczeniach.

  • Moduły równoważenia obciążenia. Użyj usługi Azure usługa Load Balancer w warstwie Standardowa, aby dystrybuować ruch sieciowy z warstwy internetowej do warstwy biznesowej.

  • Sieciowe grupy zabezpieczeń (NSG). Użyj sieciowych grup zabezpieczeń , aby ograniczyć ruch sieciowy w sieci wirtualnej. Na przykład w architekturze trójwarstwowej pokazanej tutaj warstwa bazy danych nie akceptuje ruchu z frontonu internetowego, tylko z warstwy biznesowej i podsieci zarządzania.

  • Ochrona przed atakami DDoS. Mimo że platforma Azure zapewnia podstawową ochronę przed atakami DDoS (Distributed Denial of Service), zalecamy użycie usługi Azure DDoS Network Protection, która ma ulepszone funkcje ograniczania ryzyka ataków DDoS. Zobacz Zagadnienia dotyczące zabezpieczeń.

  • Azure DNS. Usługa Azure DNS jest usługą hostingu dla domen DNS. Zapewnia rozpoznawanie nazw przy użyciu infrastruktury platformy Microsoft Azure. 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.

Maszyny wirtualne

  • Baza danych Apache Cassandra. Zapewnia wysoką dostępność w warstwie danych przez włączenie replikacji i trybu failover.

  • OpsCenter. Wdróż rozwiązanie do monitorowania, takie jak DataStax OpsCenter , aby monitorować klaster Cassandra.

  • Rampa. Nazywana również hostem bastionu. Bezpieczna maszyna wirtualna w sieci, której administratorzy używają do łączenia się z innymi maszynami wirtualnymi. 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. Sieciowa grupa zabezpieczeń powinna zezwalać na ruch pulpitu zdalnego (RDP).

Zalecenia

Wymagania rzeczywiste mogą różnić się od dotyczących opisanej tu architektury. Potraktuj te zalecenia jako punkt wyjścia.

Maszyny wirtualne

Aby uzyskać zalecenia dotyczące konfigurowania maszyn wirtualnych, zobacz Uruchamianie maszyny wirtualnej z systemem Linux na platformie Azure.

Sieć wirtualna

Podczas tworzenia sieci wirtualnej określ, ile adresów IP wymaga zasobów w każdej podsieci. Określ maskę podsieci i zakres adresów sieciowych wystarczająco duży dla wymaganych adresów IP przy użyciu notacji CIDR . 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.

Wybierz zakres adresów, który nie nakłada się na sieć lokalną, na wypadek potrzeby późniejszego skonfigurowania bramy między siecią wirtualną a siecią lokalną. Po utworzeniu sieci wirtualnej nie można zmienić zakresu adresów.

Zaprojektuj podsieci, pamiętając o wymaganiach dotyczących funkcjonalność i zabezpieczeń. Wszystkie maszyny wirtualne w tej samej warstwie lub roli powinny należeć do tej samej podsieci, która może być granicą zabezpieczeń. 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).

Application Gateway

Aby uzyskać informacje na temat konfigurowania usługi Application Gateway, zobacz Omówienie konfiguracji usługi Application Gateway.

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

Nie ujawniaj maszyn wirtualnych bezpośrednio w Internecie. Zamiast tego nadaj każdej maszynie wirtualnej prywatny adres IP. Klienci łączą się przy użyciu adresu IP skojarzonego z usługą Application Gateway.

Zdefiniuj reguły modułu równoważenia obciążenia tak, aby ruch sieciowy był przekierowywany bezpośrednio do maszyn wirtualnych. 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. 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. Żądania klientów są dystrybuowane na wszystkich maszynach wirtualnych.

Sieciowe grupy zabezpieczeń

Reguły sieciowej grupy zabezpieczeń służą do ograniczania ruchu między warstwami. Na przykład w architekturze trójwarstwowej pokazanej powyżej warstwa internetowa nie komunikuje się bezpośrednio z warstwą bazy danych. Aby to wymusić, warstwa bazy danych powinna blokować ruch przychodzący z podsieci warstwy internetowej.

  1. Odmów całego ruchu przychodzącego z sieci wirtualnej. (Użyj tagu VIRTUAL_NETWORK w regule).
  2. Zezwalaj na ruch przychodzący z podsieci warstwy biznesowej.
  3. Zezwalaj na ruch przychodzący z samej podsieci warstwy bazy danych. Ta reguła umożliwia komunikację między maszynami wirtualnymi bazy danych, która jest wymagana do replikacji bazy danych i trybu failover.
  4. Zezwalaj na ruch SSH (port 22) z podsieci przesiadkowej. Ta zasada umożliwia administratorom nawiązywanie połączenia z warstwą bazy danych z poziomu serwera przesiadkowego.

Utwórz reguły 2– 4 o wyższym priorytcie niż pierwsza reguła, aby je zastąpić.

Cassandra

Zalecamy korzystanie z usługi DataStax Enterprise w środowisku produkcyjnym, ale te zalecenia dotyczą wszystkich wersji oprogramowania Cassandra. 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).

Skonfiguruj węzły w trybie rozpoznawania regałów na sprzęt. Zamapuj domeny błędów na stojak (regał) w pliku cassandra-rackdc.properties.

Nie potrzeba modułu równoważenia obciążenia przed klastrem. Klient łączy się bezpośrednio z węzłem w klastrze.

Skrypty wdrażania dla tej architektury używają rozpoznawania nazw do inicjowania węzła inicjowania komunikacji wewnątrz klastra (plotki). Aby włączyć rozpoznawanie nazw, wdrożenie tworzy strefę usługi Azure Prywatna strefa DNS z rekordami A dla węzłów Cassandra. W zależności od skryptów inicjowania może być możliwe użycie statycznego adresu IP.

Uwaga

Usługa Azure Prywatna strefa DNS jest obecnie dostępna w publicznej wersji zapoznawczej.

Rampa

Nie zezwalaj na dostęp SSH z publicznego Internetu do maszyn wirtualnych, na których działa obciążenie aplikacji. Zamiast tego cały dostęp SSH do tych maszyn wirtualnych musi przechodzić przez serwer przesiadkowy. Administratorzy logują się do serwera przesiadkowego, a następnie logują się do innej maszyny wirtualnej z poziomu serwera przesiadkowego. Serwer przesiadkowy umożliwia ruch SSH z Internetu, ale tylko ze znanych, bezpiecznych adresów IP.

Serwer przesiadkowy ma minimalne wymagania dotyczące wydajności, dlatego wybierz mały rozmiar maszyny wirtualnej. Utwórz publiczny adres IP dla serwera przesiadkowego. Umieść serwer przesiadkowy w tej samej sieci wirtualnej co pozostałe maszyny wirtualne, ale w oddzielnej podsieci zarządzania.

Aby zabezpieczyć serwer przesiadkowy, dodaj regułę sieciowej grupy zabezpieczeń, która zezwala na połączenia SSH tylko z bezpiecznego zestawu publicznych adresów IP. Skonfiguruj sieciowe grupy zabezpieczeń dla innych podsieci, aby zezwalać na ruch SSH z podsieci zarządzania.

Kwestie wymagające rozważenia

Skalowalność

Zestawy skalowania

W przypadku warstw internetowych i biznesowych rozważ użycie zestawów skalowania maszyn wirtualnych zamiast wdrażania oddzielnych maszyn wirtualnych w zestawie dostępności. Zestaw skalowania ułatwia wdrażanie zestawu identycznych maszyn wirtualnych i zarządzanie nim oraz skalowanie automatyczne maszyn wirtualnych na podstawie metryk wydajności. W miarę wzrostu obciążenia na maszynach wirtualnych do modułu równoważenia obciążenia automatycznie są dodawane kolejne maszyny wirtualne.

Istnieją dwa podstawowe sposoby konfigurowania maszyn wirtualnych wdrożonych w zestawie skalowania:

  • Użyj rozszerzeń, aby skonfigurować maszynę wirtualną po jej wdrożeniu. W tej metodzie uruchomienie nowych wystąpień maszyny wirtualnej może potrwać dłużej niż w przypadku maszyny wirtualnej bez rozszerzeń.

  • Wdróż dysk zarządzany przy użyciu niestandardowego obrazu dysku. Ta opcja może być szybsza do wdrożenia. Jednak wymaga to zachowania aktualności obrazu.

Aby uzyskać więcej informacji, zobacz Zagadnienia dotyczące projektowania zestawów skalowania.

Napiwek

Jeśli używasz dowolnego rozwiązania do automatycznego skalowania, starannie przetestuj je wcześniej z obciążeniami na poziomie produkcyjnym.

Limity subskrypcji

Każda subskrypcja platformy Azure ma domyślne limity, między innymi ograniczenie maksymalnej liczby maszyn wirtualnych na region. Możesz zwiększyć limit, zgłaszając żądanie obsługi. Aby uzyskać więcej informacji, zobacz Limity, przydziały i ograniczenia usług i subskrypcji platformy Azure.

Application Gateway

Usługa Application Gateway obsługuje tryb stałej pojemności lub tryb skalowania automatycznego. Tryb stałej pojemności jest przydatny w scenariuszach ze spójnymi i przewidywalnymi obciążeniami. Rozważ użycie trybu skalowania automatycznego dla obciążeń ze zmiennym ruchem. Aby uzyskać więcej informacji, zobacz Autoskalowanie i strefowo nadmiarowa usługa Application Gateway w wersji 2.

Efektywność wydajności

Aby uzyskać najlepszą wydajność z usługi Cassandra na maszynach wirtualnych platformy Azure, zobacz zalecenia w temacie Uruchamianie usługi Apache Cassandra na maszynach wirtualnych platformy Azure.

Dostępność

Strefy dostępności zapewniają najlepszą odporność w jednym regionie. Jeśli potrzebujesz jeszcze większej dostępności, rozważ replikowanie aplikacji w dwóch regionach.

Nie wszystkie regiony obsługują strefy dostępności, a nie wszystkie rozmiary maszyn wirtualnych są obsługiwane we wszystkich strefach. Uruchom następujące polecenie interfejsu wiersza polecenia platformy Azure, aby znaleźć obsługiwane strefy dla każdego rozmiaru maszyny wirtualnej w regionie:

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

Jeśli wdrożysz tę architekturę w regionie, który nie obsługuje stref dostępności, umieść maszyny wirtualne dla każdej warstwy w zestawie dostępności. Maszyny wirtualne w ramach tej samej dostępności są wdrażane na wielu serwerach fizycznych, stojakach obliczeniowych, jednostkach magazynujących i przełącznikach sieciowych w celu zapewnienia nadmiarowości. Zestawy skalowania automatycznie używają grup umieszczania, które działają jako niejawny zestaw dostępności.

Podczas wdrażania w strefach dostępności użyj standardowej jednostki SKU usługi Azure Load Balancer i jednostki SKU w wersji 2 usługi Application Gateway. Te jednostki SKU obsługują nadmiarowość między strefami. Aby uzyskać więcej informacji, zobacz:

Pojedyncze wdrożenie usługi Application Gateway może uruchamiać wiele wystąpień bramy. W przypadku obciążeń produkcyjnych uruchom co najmniej dwa wystąpienia.

Klaster Cassandra

W przypadku klastra Cassandra scenariusze trybu failover zależą od poziomów spójności używanych przez aplikację i liczbę replik. Aby uzyskać informacje na temat poziomów spójności i użycia w systemie Cassandra, zobacz Konfigurowanie spójności danych i Cassandra: Ile węzłów jest rozmawianych z kworum? Dostępność danych w systemie Cassandra zależy od poziomu spójności używanego przez aplikację i mechanizm replikacji. Aby uzyskać informacje na temat replikacji w oprogramowaniu Cassandra, zobacz Data Replication in NoSQL Databases Explained (Omówienie replikacji danych w bazach danych NoSQL).

Sondy kondycji

Zarówno usługa Application Gateway, jak i usługa Load Balancer używają sond kondycji do monitorowania dostępności wystąpień maszyn wirtualnych.

  • Usługa Application Gateway zawsze używa sondy HTTP.
  • Moduł równoważenia obciążenia może przetestować protokół HTTP lub TCP. Ogólnie rzecz biorąc, jeśli maszyna wirtualna uruchamia serwer HTTP, użyj sondy HTTP. W przeciwnym razie użyj protokołu TCP.

Jeśli sonda nie może dotrzeć do wystąpienia w okresie przekroczenia limitu czasu, brama lub moduł równoważenia obciążenia przestanie wysyłać ruch do tej maszyny wirtualnej. Sonda kontynuuje sprawdzanie i zwróci maszynę wirtualną do puli zaplecza, jeśli maszyna wirtualna stanie się ponownie dostępna.

Sondy HTTP wysyłają żądanie HTTP GET do określonej ścieżki i nasłuchują odpowiedzi HTTP 200. Ta ścieżka może być ścieżką główną ("/"), lub punktem końcowym monitorowania kondycji, który implementuje pewną niestandardową logikę w celu sprawdzenia kondycji aplikacji. Punkt końcowy musi zezwalać na anonimowe żądania HTTP.

Aby uzyskać więcej informacji na temat sond kondycji, zobacz:

Aby zapoznać się z zagadnieniami dotyczącymi projektowania punktu końcowego sondy kondycji, zobacz Wzorzec monitorowania punktu końcowego kondycji.

Optymalizacja kosztów

Użyj kalkulatora cen platformy Azure, aby oszacować koszty. Oto kilka innych zagadnień.

Zestawy skalowania maszyn wirtualnych

Zestawy skalowania maszyn wirtualnych są dostępne we wszystkich rozmiarach maszyn wirtualnych z systemem Linux. Opłaty są naliczane tylko za maszyny wirtualne platformy Azure, które wdrożysz, a także za inne użyte zasoby infrastruktury bazowej, takie jak magazyn i sieć. Nie ma przyrostowych opłat za samą usługę Virtual Machine Scale Sets.

Aby uzyskać informacje o opcjach cenowych pojedynczych maszyn wirtualnych, zobacz Cennik maszyn wirtualnych z systemem Linux.

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

Opłaty są naliczane tylko za liczbę skonfigurowanych reguł równoważenia obciążenia i ruchu wychodzącego. Reguły NAT dla ruchu przychodzącego są bezpłatne. Jeśli nie ma skonfigurowanych reguł, nie obowiązuje opłata godzinowa za usługę Load Balancer w warstwie Standardowa.

Aby uzyskać więcej informacji, zapoznaj się z sekcją kosztów w temacie Dobrze zaprojektowana struktura platformy Microsoft Azure.

Zabezpieczenia

Sieci wirtualne stanowią granicę izolacji ruchu na platformie Azure. Maszyny wirtualne w jednej sieci wirtualnej nie mogą komunikować się bezpośrednio z maszynami wirtualnymi w innej sieci wirtualnej. Maszyny wirtualne w tej samej sieci wirtualnej mogą się komunikować, chyba że w celu ograniczenia ruchu zostały utworzone sieciowe grupy zabezpieczeń (NSG). Aby uzyskać więcej informacji, zobacz Zabezpieczenia usług w chmurze i sieci firmy Microsoft.

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. 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ń.

STREFA DMZ. Rozważ dodanie wirtualnego urządzenia sieciowego (WUS) w celu utworzenia strefy DMZ między Internetem a siecią wirtualną platformy Azure. 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. Aby uzyskać więcej informacji, zobacz Implementowanie strefy DMZ między platformą Azure i Internetem.

Szyfrowanie. Szyfruj poufne dane podczas przechowywania i korzystaj z usługi Azure Key Vault, aby zarządzać kluczami szyfrowania bazy danych. W usłudze Key Vault można przechowywać klucze szyfrowania w sprzętowych modułach zabezpieczeń (modułach HSM). Zalecane jest również przechowywanie wpisów tajnych aplikacji, takich jak parametry połączenia bazy danych, w usłudze Key Vault.

Ochrona przed atakami DDoS. Platforma Azure domyślnie zapewnia podstawową ochronę przed atakami DDoS. Ta podstawowa ochrona jest przeznaczona do ochrony całej infrastruktury platformy Azure. Mimo że podstawowa ochrona przed atakami DDoS jest automatycznie włączona, zalecamy użycie usługi Azure DDoS Network Protection. Usługa Network Protection używa dostrajania adaptacyjnego opartego na wzorcach ruchu sieciowego aplikacji w celu wykrywania zagrożeń. Dzięki temu można zastosować środki zaradcze przed atakami DDoS, które mogą być niezauważone przez zasady ataków DDoS dla całej infrastruktury. Usługa Network Protection zapewnia również alerty, dane telemetryczne i analizy za pośrednictwem usługi Azure Monitor. Aby uzyskać więcej informacji, zobacz Azure DDoS Protection: najlepsze rozwiązania i architektury referencyjne.

Doskonałość operacyjna

Ponieważ wszystkie główne zasoby i ich zależności znajdują się w tej samej sieci wirtualnej w tej architekturze, są odizolowane w tym samym obciążeniu podstawowym. Fakt ten 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. Ta izolacja umożliwia zespołom i usługom DevOps wykonywanie ciągłej integracji i ciągłego dostarczania (CI/CD).

Ponadto możesz użyć różnych szablonów wdrażania i zintegrować je z usługą Azure DevOps Services , aby aprowizować różne środowiska w ciągu kilku minut, na przykład w celu replikacji środowiska produkcyjnego, takiego jak scenariusze lub środowiska testowania obciążenia tylko w razie potrzeby, co pozwala zaoszczędzić koszty.

W tym scenariuszu maszyny wirtualne są konfigurowane przy użyciu rozszerzeń maszyn wirtualnych, ponieważ oferują możliwość zainstalowania określonego dodatkowego oprogramowania, takiego jak Apache Cassandra. W szczególności rozszerzenie niestandardowego skryptu umożliwia pobieranie i wykonywanie dowolnego kodu na maszynie wirtualnej, co umożliwia nieograniczone dostosowywanie systemu operacyjnego maszyny wirtualnej platformy Azure. Rozszerzenia maszyn wirtualnych są instalowane i wykonywane tylko w czasie tworzenia maszyny wirtualnej. Oznacza to, że jeśli system operacyjny zostanie nieprawidłowo skonfigurowany na późniejszym etapie, będzie wymagał ręcznej interwencji, aby przenieść go z powrotem do prawidłowego stanu. Narzędzia do zarządzania konfiguracją mogą służyć do rozwiązania tego problemu.

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. Aplikacja Szczegółowe informacje jest w rzeczywistości jednym ze składników usługi Azure Monitor, który zapewnia zaawansowane metryki i dzienniki umożliwiające zweryfikowanie stanu kompletnego krajobrazu platformy Azure. Usługa Azure Monitor pomoże Ci śledzić stan infrastruktury.

Pamiętaj, aby nie tylko monitorować elementy obliczeniowe obsługujące kod aplikacji, ale także platformę danych, w szczególności bazy danych, ponieważ niska wydajność warstwy danych aplikacji może mieć poważne konsekwencje.

Aby przetestować środowisko platformy Azure, w którym są uruchomione aplikacje, powinno być kontrolowane wersją i wdrażane za pomocą tych samych mechanizmów co kod aplikacji, można je również przetestować i zweryfikować przy użyciu paradygmatów testowania DevOps.

Aby uzyskać więcej informacji, zobacz sekcję Doskonałość operacyjną w witrynie Microsoft Azure Well-Architecture Framework.

Następne kroki