Wdrażanie i eksplorowanie wielodostępnej aplikacji SaaS korzystającej ze wzorca bazy danych na dzierżawę z usługą Azure SQL Database
Dotyczy: Azure SQL Database
W tym samouczku wdrożysz i zapoznasz się z aplikacją Wingtip Tickets SaaS database-per-tenant (Wingtip). Aplikacja używa wzorca bazy danych na dzierżawę do przechowywania danych wielu dzierżaw. Aplikacja została zaprojektowana w celu zaprezentowania funkcji usługi Azure SQL Database, które upraszczają sposób włączania scenariuszy SaaS.
Pięć minut po wybraniu pozycji Wdróż na platformie Azure masz wielodostępną aplikację SaaS. Aplikacja zawiera bazę danych działającą w usłudze Azure SQL Database. Aplikacja jest wdrażana z trzema przykładowymi dzierżawami, z których każda ma własną bazę danych. Wszystkie bazy danych są wdrażane w elastycznej puli SQL. Aplikacja jest wdrażana w ramach subskrypcji platformy Azure. Masz pełny dostęp do eksplorowania i pracy z poszczególnymi składnikami aplikacji. Kod źródłowy języka C# aplikacji i skrypty zarządzania są dostępne w repozytorium GitHub WingtipTicketsSaaS-DbPerTenant.
Ten samouczek zawiera informacje na temat wykonywania następujących czynności:
- Jak wdrożyć aplikację SaaS Wingtip.
- Gdzie uzyskać kod źródłowy aplikacji i skrypty zarządzania.
- Informacje o serwerach, pulach i bazach danych tworzących aplikację.
- Sposób mapowania dzierżaw na dane za pomocą wykazu.
- Jak aprowizować nową dzierżawę.
- Jak monitorować aktywność dzierżawy w aplikacji.
Seria powiązanych samouczków oferuje zapoznanie się z różnymi wzorcami projektowania i zarządzania SaaS. Samouczki kompilują się poza tym początkowym wdrożeniem. Korzystając z samouczków, możesz sprawdzić podane skrypty, aby zobaczyć, jak są implementowane różne wzorce SaaS. Skrypty pokazują, w jaki sposób funkcje usługi SQL Database upraszczają tworzenie aplikacji SaaS.
Wymagania wstępne
Aby ukończyć ten samouczek, upewnij się, że program Azure PowerShell jest zainstalowany. Aby uzyskać więcej informacji, zobacz Rozpoczynanie pracy z programem Azure PowerShell.
Wdrażanie aplikacji SaaS Wingtip Tickets
Planowanie nazw
W krokach tej sekcji należy podać wartość użytkownika, która służy do upewnienia się, że nazwy zasobów są globalnie unikatowe. Należy również podać nazwę grupy zasobów, która zawiera wszystkie zasoby utworzone przez wdrożenie aplikacji. Dla fikcyjnej osoby o imieniu Ann Finley sugerujemy:
- Użytkownik: af1 składa się z inicjałów Ann Finley oraz cyfry. Jeśli aplikacja zostanie wdrożona po raz drugi, użyj innej wartości. Przykładem jest af2.
- Grupa zasobów: wingtip-dpt-af1 wskazuje, że jest to aplikacja bazy danych na dzierżawę. Dołącz nazwę użytkownika af1, aby skorelować nazwę grupy zasobów z nazwami zawartych w nim zasobów.
Wybierz teraz swoje nazwy i zapisz je.
Kroki
Aby otworzyć szablon wdrażania bazy danych SaaS dla poszczególnych dzierżaw Wingtip Tickets w witrynie Azure Portal, wybierz pozycję Wdróż na platformie Azure.
Wprowadź wartości w szablonie dla wymaganych parametrów.
Ważne
Niektóre zapory uwierzytelniania i serwera są celowo niezabezpieczone do celów demonstracyjnych. Zalecamy utworzenie nowej grupy zasobów. Nie używaj istniejących grup zasobów, serwerów ani pul. Nie używaj tej aplikacji, skryptów ani żadnych wdrożonych zasobów w środowisku produkcyjnym. Usuń tę grupę zasobów po zakończeniu pracy z aplikacją, aby zatrzymać powiązane rozliczenia.
- Grupa zasobów: wybierz pozycję Utwórz nową i podaj unikatową nazwę wybraną wcześniej dla grupy zasobów.
- Lokalizacja: wybierz lokalizację z listy rozwijanej.
- Użytkownik: użyj wybranej wcześniej wartości nazwy użytkownika.
Wdrażanie aplikacji.
a. Wybierz, aby wyrazić zgodę na warunki i postanowienia.
b. Wybierz pozycję Kup.
Aby monitorować stan wdrożenia, wybierz pozycję Powiadomienia (ikona dzwonka po prawej stronie pola wyszukiwania). Wdrażanie aplikacji SaaS Wingtip Tickets trwa około pięciu minut.
Pobieranie i odblokowywanie skryptów zarządzania biletami Wingtip
Podczas wdrażania aplikacji pobierz skrypty kodu źródłowego i zarządzania.
Ważne
Zawartość pliku wykonywalnego (skrypty i biblioteki DLL) może zostać zablokowana przez system Windows, gdy pliki .zip są pobierane ze źródła zewnętrznego i wyodrębnione. Przed wyodrębnieniem skryptów wykonaj kroki, aby odblokować plik .zip. Odblokowanie zapewnia, że skrypty mogą być uruchamiane.
- Przejdź do repozytorium GitHub WingtipTicketsSaaS-DbPerTenant.
- Wybierz przycisk Clone or download (Sklonuj lub pobierz).
- Wybierz pozycję Pobierz plik ZIP, a następnie zapisz plik.
- Kliknij prawym przyciskiem myszy plik WingtipTicketsSaaS-DbPerTenant-master.zip , a następnie wybierz polecenie Właściwości.
- Na karcie Ogólne wybierz pozycję Odblokuj>zastosuj.
- Wybierz przycisk OK i wyodrębnij pliki
Skrypty znajdują się w folderze ...\WingtipTicketsSaaS-DbPerTenant-master\Learning Modules.
Aktualizowanie pliku konfiguracji użytkownika dla tego wdrożenia
Przed uruchomieniem jakichkolwiek skryptów zaktualizuj wartości grupy zasobów i użytkowników w pliku Konfiguracji użytkownika. Ustaw te zmienne na wartości używane podczas wdrażania.
- W programie PowerShell ISE otwórz plik ...\Learning Modules\UserConfig.psm1
- Zaktualizuj wartości ResourceGroupName i Name z określonymi wartościami wdrożenia (tylko w wierszach 10 i 11).
- Zapisz zmiany.
Te wartości są przywołyane w prawie każdym skrywcie.
Uruchamianie aplikacji
Aplikacja prezentuje miejsca, w których odbywają się wydarzenia. Typy miejsc obejmują sale koncertowe, kluby jazzowe i kluby sportowe. W Wingtip Tickets miejsca są rejestrowane jako dzierżawy. Bycie dzierżawą zapewnia łatwy sposób wyświetlania listy wydarzeń i sprzedaży biletów do swoich klientów. Każde miejsce otrzymuje spersonalizowaną witrynę internetową, aby wyświetlić listę swoich wydarzeń i sprzedawać bilety.
Wewnętrznie w aplikacji każda dzierżawa pobiera bazę danych wdrożona w elastycznej puli.
Strona centrum zdarzeń centralnych zawiera listę linków do dzierżaw w danym wdrożeniu.
Użyj adresu URL, aby otworzyć centrum zdarzeń w przeglądarce internetowej: http://events.wingtip-dpt.<user.trafficmanager.net>. Zastąp <użytkownika> wartością użytkownika wdrożenia.
Wybierz pozycję Fabrikam Jazz Club w centrum zdarzeń.
Azure Traffic Manager
Aplikacja Wingtip używa usługi Azure Traffic Manager do kontrolowania dystrybucji żądań przychodzących. Adres URL służący do uzyskiwania dostępu do strony zdarzeń dla określonej dzierżawy używa następującego formatu:
http://events.wingtip-dpt.<user.trafficmanager.net/fabrikamjazzclub>
Części poprzedniego formatu zostały wyjaśnione w poniższej tabeli.
Część adresu URL opis events.wingtip-dpt Części zdarzeń aplikacji Wingtip.
-dpt rozróżnia implementację bazy danych na dzierżawę biletów Wingtip z innych implementacji. Przykłady to implementacje pojedynczej aplikacji na dzierżawę (-sa) lub wielodostępnej bazy danych (-mt)..<użytkownik> af1 w przykładzie. .trafficmanager.net/ Traffic Manager, podstawowy adres URL. fabrikamjazzclub Identyfikuje dzierżawę o nazwie Fabrikam Jazz Club. Nazwa dzierżawy jest analizowana z adresu URL przez aplikację zdarzeń.
Nazwa dzierżawy służy do tworzenia klucza.
Klucz służy do uzyskiwania dostępu do katalogu w celu uzyskania lokalizacji bazy danych dzierżawy.
- Wykaz jest implementowany przy użyciu zarządzania mapami fragmentów.
Centrum zdarzeń używa rozszerzonych metadanych w wykazie do konstruowania adresów URL stron list-of-events dla każdej dzierżawy.
W środowisku produkcyjnym zazwyczaj tworzysz rekord DNS CNAME, aby wskazać firmową domenę internetową na nazwę DNS usługi Traffic Manager.
Uwaga
Korzystanie z usługi Traffic Manager w tym samouczku może nie być od razu oczywiste. Celem tej serii samouczków jest prezentacja wzorców, które mogą obsługiwać skalę złożonego środowiska produkcyjnego. W takim przypadku można na przykład mieć wiele aplikacji internetowych dystrybuowanych na całym świecie, współlokowanych z bazami danych, a menedżer ruchu będzie musiał kierować między tymi wystąpieniami. Inny zestaw samouczków ilustrujących korzystanie z usługi Traffic Manager, choć to samouczki dotyczące przywracania geograficznego i replikacji geograficznej. W tych samouczkach usługa Traffic Manager służy do przełączania się na wystąpienie odzyskiwania aplikacji SaaS w przypadku awarii regionalnej.
Rozpoczęcie generowanie obciążenia baz danych dzierżawy
Teraz, po wdrożeniu aplikacji, umieśćmy ją w pracy.
Skrypt Demo-LoadGenerator programu PowerShell uruchamia obciążenie, które jest uruchamiane dla wszystkich baz danych dzierżawy. Rzeczywiste obciążenie wielu aplikacji SaaS jest sporadyczne i nieprzewidywalne. Aby zasymulować ten typ obciążenia, generator generuje obciążenie z losowymi skokami lub wzrostami aktywności w każdej dzierżawie. Te wzrosty występują w losowych odstępach czasu. Pojawianie się wzorca obciążenia trwa kilka minut. Pozwól, aby generator działał przez co najmniej trzy lub cztery minuty przed monitorowaniem obciążenia.
- W programie PowerShell ISE otwórz skrypt ...\Learning Modules\Utilities\Demo-LoadGenerator.ps1 .
- Naciśnij F5, aby uruchomić skrypt i uruchomić generator obciążenia. Pozostaw wartości parametrów domyślnych na razie.
- W razie potrzeby zaloguj się do konta platformy Azure i wybierz subskrypcję, której chcesz użyć.
Skrypt generatora obciążenia uruchamia zadanie w tle dla każdej bazy danych w katalogu, a następnie zatrzymuje się. Jeśli uruchomisz ponownie skrypt generatora obciążenia, zatrzyma ono wszystkie uruchomione zadania w tle przed uruchomieniem nowych.
Monitorowanie zadań w tle
Jeśli chcesz kontrolować i monitorować zadania w tle, użyj następujących poleceń cmdlet:
Get-Job
Receive-Job
Stop-Job
Akcje Demo-LoadGenerator.ps1
Demo-LoadGenerator.ps1 naśladuje aktywne obciążenie transakcji klienta. W poniższych krokach opisano sekwencję akcji inicjowanych przez program Demo-LoadGenerator.ps1 :
Plik Demo-LoadGenerator.ps1 uruchamia plik LoadGenerator.ps1 na pierwszym planie.
- Oba pliki ps1 są przechowywane w folderach Learning Modules\Utilities\.
LoadGenerator.ps1 wykonuje pętle we wszystkich bazach danych dzierżawy w katalogu.
LoadGenerator.ps1 uruchamia zadanie programu PowerShell w tle dla każdej bazy danych dzierżawy:
- Domyślnie zadania w tle są uruchamiane przez 120 minut.
- Każde zadanie powoduje obciążenie procesora CPU na jednej bazie danych dzierżawy przez wykonanie sp_CpuLoadGenerator. Intensywność i czas trwania obciążenia różnią się w zależności od
$DemoScenario
. - sp_CpuLoadGenerator pętle wokół instrukcji SQL SELECT, która powoduje wysokie obciążenie procesora CPU. Interwał czasu między problemami funkcji SELECT różni się w zależności od wartości parametrów w celu utworzenia sterowalnego obciążenia procesora CPU. Poziomy obciążenia i interwały są losowe w celu symulowania bardziej realistycznych obciążeń.
- Ten plik .sql jest przechowywany w obszarze WingtipTenantDB\dbo\StoredProcedures\.
Jeśli
$OneTime = $false
generator obciążenia uruchamia zadania w tle, a następnie kontynuuje działanie. Co 10 sekund monitoruje wszystkie nowe dzierżawy, które są aprowidowane. Jeśli ustawisz wartość$OneTime = $true
, moduł LoadGenerator uruchamia zadania w tle, a następnie zatrzymuje działanie na pierwszym planie. Na potrzeby tego samouczka pozostaw wartość$OneTime = $false
.Użyj Ctrl-C lub Zatrzymaj operację Ctrl-Break, jeśli chcesz zatrzymać lub ponownie uruchomić generator obciążenia.
Jeśli pozostawisz generator obciążenia uruchomiony na pierwszym planie, użyj innego wystąpienia programu PowerShell ISE, aby uruchomić inne skrypty programu PowerShell.
Przed kontynuowaniem następnej sekcji pozostaw generator obciążenia uruchomiony w stanie wywoływania zadania.
Aprowizacja nowej dzierżawy
Początkowe wdrożenie tworzy trzy przykładowe dzierżawy. Teraz utworzysz inną dzierżawę, aby zobaczyć wpływ wdrożonej aplikacji. W aplikacji Wingtip przepływ pracy aprowizacji nowych dzierżaw jest objaśniony w samouczku Aprowizacja i wykaz. W tej fazie utworzysz nową dzierżawę, która zajmuje mniej niż jedną minutę.
Otwórz nowy program PowerShell ISE.
Otwórz plik ...\Learning Modules\Provision and Catalog\Demo-ProvisionAndCatalog.ps1.
Aby uruchomić skrypt, naciśnij F5. Pozostaw wartości domyślne na razie.
Uwaga
Wiele skryptów SaaS Wingtip używa $PSScriptRoot do przeglądania folderów w celu wywoływania funkcji w innych skryptach. Ta zmienna jest oceniana tylko wtedy, gdy pełny skrypt jest wykonywany przez naciśnięcie F5. Wyróżnianie i uruchamianie zaznaczenia za pomocą F8 może spowodować błędy. Aby uruchomić skrypty, naciśnij F5.
Nowa baza danych dzierżawy to:
- Utworzono w elastycznej puli SQL.
- Zainicjowany.
- Zarejestrowane w wykazie.
Po pomyślnej aprowizacji w przeglądarce zostanie wyświetlona witryna Zdarzenia nowej dzierżawy.
Odśwież centrum zdarzeń, aby nowa dzierżawa pojawiła się na liście.
Sprawdzanie działania serwerów, pul i baz danych dzierżaw
Teraz, gdy rozpoczęto uruchamianie obciążenia względem kolekcji dzierżaw, przyjrzyjmy się niektórym wdrożonym zasobom.
W witrynie Azure Portal przejdź do listy serwerów SQL. Następnie otwórz serwer catalog-dpt-USER><.
- Serwer wykazu zawiera dwie bazy danych, tenantcatalog i basetenantdb (bazę danych szablonu skopiowaną do tworzenia nowych dzierżaw).
Wróć do listy serwerów SQL.
Otwórz serwer tenants1-dpt-USER><, który przechowuje bazy danych dzierżawy.
Zobacz następujące elementy:
- Każda baza danych dzierżawy to elastyczna standardowa baza danych w standardowej puli 50 eDTU.
- Baza danych Red Maple Racing jest wcześniej aprowizowaną bazą danych dzierżawy.
Monitorowanie puli
Po uruchomieniu modułu LoadGenerator.ps1 przez kilka minut wystarczająca ilość danych powinna być dostępna, aby rozpocząć przeglądanie niektórych funkcji monitorowania. Te możliwości są wbudowane w pule i bazy danych.
Przejdź do dzierżaw serwera1-dpt-user<>, a następnie wybierz pozycję Pula1, aby wyświetlić wykorzystanie zasobów dla puli. Na poniższych wykresach generator obciążenia był uruchamiany przez jedną godzinę.
- Pierwszy wykres z etykietą Wykorzystanie zasobów przedstawia wykorzystanie jednostek eDTU puli.
- Drugi wykres przedstawia wykorzystanie jednostek eDTU pięciu najbardziej aktywnych baz danych w puli.
Dwa wykresy ilustrują, że pule elastyczne i usługa SQL Database są dobrze dostosowane do nieprzewidywalnych obciążeń aplikacji SaaS. Wykresy pokazują, że cztery bazy danych są zwiększane do aż 40 jednostek eDTU, a jednak wszystkie bazy danych są wygodnie obsługiwane przez pulę 50 eDTU. Pula 50 eDTU może obsługiwać nawet cięższe obciążenia. Jeśli bazy danych są aprowidowane jako pojedyncze bazy danych, każdy z nich musi być S2 (50 DTU), aby obsługiwać wzrosty. Koszt czterech pojedynczych baz danych S2 wynosi prawie trzy razy więcej niż cena puli. W rzeczywistych sytuacjach klienci usługi SQL Database uruchamiają do 500 baz danych w 200 pulach eDTU. Aby uzyskać więcej informacji, zobacz samouczek dotyczący monitorowania wydajności.
Dodatkowe zasoby
- Aby uzyskać więcej informacji, zobacz dodatkowe samouczki oparte na aplikacji SaaS bazy danych SaaS dla poszczególnych dzierżaw Wingtip Tickets.
- Aby dowiedzieć się więcej na temat elastycznych pul, zobacz Co to jest elastyczna pula Azure SQL?
- Aby dowiedzieć się więcej o zadaniach elastycznych, zobacz Zarządzanie skalowalnymi w poziomie bazami danych w chmurze.
- Aby dowiedzieć się więcej o wielodostępnych aplikacjach SaaS, zobacz Design patterns for multitenant SaaS applications (Wzorce projektowania dla wielodostępnych aplikacji SaaS).
Następne kroki
Ten samouczek zawiera informacje na temat wykonywania następujących czynności:
- Jak wdrożyć aplikację SaaS Wingtip Tickets.
- Informacje o serwerach, pulach i bazach danych tworzących aplikację.
- Sposób mapowania dzierżaw na dane za pomocą wykazu.
- Jak aprowizować nowe dzierżawy.
- Jak wyświetlić wykorzystanie puli w celu monitorowania aktywności dzierżawy.
- Jak usunąć przykładowe zasoby, aby zatrzymać powiązane rozliczenia.
Następnie wypróbuj samouczek Aprowizuj i wykaz.