Monitorování a správa výkonu horizontálně dělené víceklientské služby Azure SQL Database v aplikaci SaaS s více tenanty
Platí pro: Azure SQL Database
V tomto kurzu se zkoumá několik klíčových scénářů správy výkonu používaných v aplikacích SaaS. Použití generátoru zatížení k simulaci aktivity napříč horizontálně dělenými databázemi s více tenanty, předdefinované funkce monitorování a upozorňování služby Azure SQL Database jsou demonstrované.
Aplikace Wingtip Tickets SaaS Pro víceklientská databáze používá horizontálně dělený datový model s více tenanty, ve kterém se data místa (tenanta) distribuují podle ID tenanta napříč potenciálně více databázemi. Stejně jako u většiny aplikací SaaS je předpokládaný vzorek úloh tenanta nepředvídatelný a sporadický. Jinými slovy to znamená, že prodej lístků může probíhat kdykoli. Pokud chcete využít tento typický model využití databáze, je možné vertikálně navýšit nebo snížit kapacitu databází, aby se optimalizovaly náklady na řešení. U tohoto typu modelu je důležité monitorovat využití databázových prostředků, aby se zajistilo, že zatížení bude přiměřeně vyváženo napříč potenciálně více databázemi. Musíte také zajistit, aby jednotlivé databáze měly adekvátní prostředky a nedosahovaly jejich limitů DTU . Tento kurz zkoumá způsoby monitorování a správy databází a postup, jak provést nápravnou akci v reakci na varianty úloh.
V tomto kurzu se naučíte:
- Simulace využití u horizontálně dělené víceklientské databáze spuštěním poskytnutého generátoru zatížení
- Monitorování databáze v reakci na zvýšení zatížení
- Vertikální navýšení kapacity databáze v reakci na zvýšené zatížení databáze
- Zřízení tenanta do databáze s jedním tenantem
Předpokladem dokončení tohoto kurzu je splnění následujících požadavků:
- Nasadí se aplikace Wingtip Tickets SaaS pro víceklientské databáze. Pokud chcete nasadit méně než pět minut, přečtěte si téma Nasazení a prozkoumání databázové aplikace Wingtip Tickets SaaS s více tenanty.
- Prostředí Azure PowerShell je nainstalované. Podrobnosti najdete v článku Začínáme s prostředím Azure PowerShell.
Úvod do vzorů správy výkonu SaaS
Správa výkonu databáze sestává z kompilování a analýz dat výkonu a následného reagování na tato data prostřednictvím úpravy parametrů pro řízení přijatelné doby odezvy na aplikaci.
Strategie výkonu aplikací
- Abyste se vyhnuli ručnímu monitorování výkonu, je nejúčinnější nastavit výstrahy, které se aktivují, když se databáze vyhýbají normálním rozsahům.
- Pokud chcete reagovat na krátkodobé kolísání velikosti výpočetních prostředků databáze, můžete vertikálně navýšit nebo snížit kapacitu úrovně DTU. Pokud k tomuto kolísání dochází pravidelně nebo předvídatelně, je možné naplánovat automatické škálování databáze. Pokud například víte, že je úloha malého rozsahu, třeba přes noc nebo o víkendech, můžete vertikálně snížit kapacitu.
- Aby bylo možné reagovat na dlouhodobější kolísání nebo změny v tenantech, je možné jednotlivé tenanty přesunout do jiné databáze.
- Aby bylo možné reagovat na krátkodobé zvýšení zatížení jednotlivých tenantů, můžou být jednotliví tenanti odebraní z databáze a přiřazení velikosti jednotlivých výpočetních prostředků. Jakmile se zatížení sníží, tenant se pak může vrátit do databáze s více tenanty. Pokud je to známo předem, tenanti je možné předem přesunout, aby se zajistilo, že databáze bude vždy obsahovat prostředky, které potřebuje, a vyhnout se dopadu na ostatní tenanty v databázi s více tenanty. Pokud je tento požadavek předvídatelný, například v místě, kde se předpokládá navýšení prodeje lístků na oblíbenou akci, je možné toto chování správy začlenit do aplikace.
Azure Portal poskytuje integrované monitorování a upozorňování pro většinu prostředků. U databází je k dispozici monitorování a upozorňování služby SQL Database. Toto integrované monitorování a upozorňování je specifické pro prostředky, takže je vhodné ho použít pro malý počet prostředků, ale není vhodné při práci s mnoha prostředky.
V případě scénářů s velkým objemem, ve kterých pracujete s mnoha prostředky, je možné použít protokoly služby Azure Monitor. Jedná se o samostatnou službu Azure, která poskytuje analýzy nad vygenerovanými protokoly shromážděné v pracovním prostoru služby Log Analytics. Protokoly služby Azure Monitor můžou shromažďovat telemetrii z mnoha služeb a používat k dotazování a nastavení upozornění.
Získání zdrojového kódu a skriptů databázové aplikace SaaS s více tenanty Wingtip Tickets
Skripty a zdrojový kód aplikace Wingtip Tickets SaaS pro víceklientské databáze a zdrojový kód aplikace jsou k dispozici v úložišti GitHub WingtipTicketsSaaSaSaSaS-MultitenantDB . V obecných doprovodných materiálech najdete pokyny ke stažení a odblokování skriptů SaaS pro Wingtip Tickets.
Zřízení dalších tenantů
Abyste pochopili, jak funguje monitorování výkonu a správa ve velkém měřítku, tento kurz vyžaduje, abyste v horizontálně dělené databázi s více tenanty měli více tenantů.
Pokud jste už v předchozím kurzu zřídili dávku tenantů, přejděte do části Simulace využití ve všech databázích tenantů .
- V prostředí PowerShell ISE otevřete ...\Learning Modules\Sledování výkonu ing and Management\Demo-PerformanceMonitoringAndManagement.ps1. Tento skript nechte otevřený, protože během tohoto kurzu budete spouštět několik scénářů.
- Nastavte $DemoScenario = 1, Zřízení dávky tenantů
- Stisknutím klávesy F5 spusťte skript.
Skript během několika minut nasadí do databáze s více tenanty 17 tenantů.
Skript New-TenantBatch vytvoří nové tenanty s jedinečnými klíči tenanta v rámci horizontálně dělené databáze s více tenanty a inicializuje je názvem tenanta a typem místa. To je konzistentní se způsobem, jakým aplikace zřizuje nového tenanta.
Simulace využití ve všech databázích tenantů
K dispozici je skript Demo-PerformanceMonitoringAndManagement.ps1 , který simuluje úlohu spuštěnou v databázi s více tenanty. Zatížení se vygeneruje pomocí jednoho z dostupných scénářů načítání:
Ukázka | Scénář |
---|---|
2 | Generování normální intenzity zatížení (přibližně 30 DTU) |
3 | Generování zatížení s delšími nárůsty na tenanta |
4 | Generování zatížení s vyššími nárůsty DTU na tenanta (přibližně 70 DTU) |
5 | Generování vysoké intenzity (přibližně 90 DTU) v jednom tenantovi a normální intenzity zatížení všech ostatních tenantů |
Generátor zatížení použije syntetické zatížení jenom pro CPU na každé databázi tenantů. Generátor spustí úlohu pro každou databázi tenantů, která pravidelně volá uloženou proceduru generující zatížení. Úrovně zatížení (v DTU), doba trvání a intervaly se liší ve všech databázích a simulují nepředvídatelnou aktivitu tenanta.
- V prostředí PowerShell ISE otevřete ...\Learning Modules\Sledování výkonu ing and Management\Demo-PerformanceMonitoringAndManagement.ps1. Tento skript nechte otevřený, protože během tohoto kurzu budete spouštět několik scénářů.
- Set $DemoScenario = 2, Generate normal intensity load
- Stisknutím klávesy F5 můžete načíst všechny vaše tenanty.
Wingtip Tickets SaaS Multi-tenant Database je aplikace SaaS a reálné zatížení aplikace SaaS je obvykle občasné a nepředvídatelné. Abychom takovýto scénář nasimulovali, vytváří generátor zatížení náhodné zatížení rozdělené mezi všechny tenanty. Aby se vynořil model zatížení, je potřeba několik minut, takže před pokusem o monitorování zatížení v následujících částech spusťte generátor zatížení po dobu 3 až 5 minut.
Důležité
Generátor zatížení běží jako řada úloh v novém okně PowerShellu. Pokud relaci zavřete, generátor zatížení se zastaví. Generátor zatížení zůstává ve stavu vyvolání úlohy, ve kterém generuje zatížení všech nových tenantů, které jsou zřízeny po spuštění generátoru. Pomocí ctrl-C ukončete vyvolání nových úloh a ukončete skript. Generátor zatížení bude dál běžet, ale pouze u stávajících tenantů.
Monitorování využití prostředků pomocí webu Azure Portal
Pokud chcete monitorovat využití prostředků, které je výsledkem použitého zatížení, otevřete portál pro databázi s více tenanty, tenants1
která obsahuje tenanty:
- Otevřete web Azure Portal a přejděte na server
tenants1-mt-<USER>
. - Posuňte se dolů a vyhledejte databáze a vyberte tenanty1. Tato horizontálně dělená víceklientská databáze obsahuje všechny dosud vytvořené tenanty.
Prohlédněte si graf DTU.
Nastavení upozornění na výkon v databázi
Nastavte upozornění na databázi, která se aktivuje při >75% využití následujícím způsobem:
tenants1
Otevřete databázi (natenants1-mt-<USER>
serveru) na webu Azure Portal.Vyberte Pravidla upozornění a pak vyberte + Přidat upozornění:
Zadejte název, například High DTU,
Nastavte následující hodnoty:
- Metrika = procento DTU
- Podmínka = větší než
- Prahová hodnota = 75.
- Období = za posledních 30 minut
Přidejte e-mailovou adresu do pole Další e-maily správce a vyberte OK.
Vertikální navýšení kapacity zaneprázdněné databáze
Pokud se úroveň zatížení v databázi zvýší na bod, kdy se databáze maximálně zvýší a dosáhne 100% využití DTU, bude ovlivněn výkon databáze, což může zpomalit dobu odezvy dotazů.
Z krátkodobého hlediska zvažte vertikální navýšení kapacity databáze tak, aby poskytovala další prostředky, nebo odebrání tenantů z databáze s více tenanty (přesunutí z databáze s více tenanty na samostatnou databázi).
Pokud chcete zlepšit výkon databáze, zvažte optimalizaci dotazů nebo využití indexu. V závislosti na citlivosti aplikace na problémy s výkonem se doporučuje vertikálně navýšit kapacitu databáze, než dosáhne 100% využití DTU. Použijte výstrahu, abyste byli předem upozornění.
Zaneprázdněnou databázi můžete simulovat zvýšením zatížení vytvořeného generátorem. Příčinou častějšího nárůstu počtu tenantů a delšího zvýšení zatížení databáze s více tenanty beze změny požadavků jednotlivých tenantů. Vertikální navýšení kapacity databáze se snadno provádí na portálu nebo v PowerShellu. Při tomto cvičení se používá portál.
- Nastavte
$DemoScenario
= 3, vygenerujte zatížení s delšími a častějšími nárůsty na databázi , aby se zvýšila intenzita agregovaného zatížení databáze beze změny zatížení ve špičce vyžadované jednotlivými tenanty. - Stisknutím klávesy F5 použijte zatížení u všech databází tenantů.
- Přejděte do
tenants1
databáze na webu Azure Portal.
Monitorujte zvýšené využití DTU databáze v horním grafu. Spuštění nového vyššího zatížení trvá několik minut, ale databáze by se měla rychle zobrazit, aby dosáhla maximálního využití a s tím, jak zatížení roste do nového modelu, databázi rychle přetěžuje.
- Pokud chcete vertikálně navýšit kapacitu databáze, vyberte na stránce nastavení cenovou úroveň (škálování DTU ).
- Upravte nastavení DTU na 100.
- Výběrem možnosti Použít odešlete žádost o škálování databáze.
Vraťte se k přehledu tenantů1> a zobrazte si grafy monitorování. Monitorujte účinek poskytování databáze více prostředků (i když s několika tenanty a randomizovaným zatížením není vždy snadné zjistit, dokud nějakou dobu neběžíte). Při pohledu na grafy mějte na paměti, že 100 % v horním grafu teď představuje 100 DTU, zatímco v dolním grafu je 100 % stále 50 DTU.
Databáze je v průběhu procesu online a plně dostupná. Kód aplikace by se měl vždy zapsat, aby se zopakovala ukončená připojení, a proto se znovu připojí k databázi.
Zřízení nového tenanta ve vlastní databázi
Model horizontálně dělených více tenantů umožňuje zvolit, jestli chcete zřídit nového tenanta v databázi s více tenanty společně s ostatními tenanty nebo zřídit tenanta ve vlastní databázi. Zřízením tenanta ve vlastní databázi těží z izolace, která je součástí samostatné databáze, což vám umožní spravovat výkon tohoto tenanta nezávisle na ostatních klientech, obnovit ho nezávisle na ostatních klientech atd. Můžete se například rozhodnout, že do databáze s více tenanty vložíte bezplatnou zkušební verzi nebo běžné zákazníky a zákazníky úrovně Premium v jednotlivých databázích. Pokud se vytvoří izolované databáze s jedním tenantem, dají se stále spravovat společně v elastickém fondu, aby se optimalizovaly náklady na prostředky.
Pokud jste už zřídili nového tenanta ve vlastní databázi, přeskočte několik dalších kroků.
- V prostředí PowerShell ISE otevřete
...\Learning Modules\ProvisionTenants\Demo-ProvisionTenants.ps1
. - Upravit
$TenantName = "Salix Salsa"
a$VenueType = "dance"
. - Nastavte
$Scenario = 2
, zřiďte tenanta v nové databázi s jedním tenantem. - Stisknutím klávesy F5 spusťte skript.
Skript zřídí tohoto tenanta v samostatné databázi, zaregistruje databázi a tenanta v katalogu a pak v prohlížeči otevře stránku Události tenanta. Aktualizujte stránku Centra událostí a jako místo se zobrazí "Salix Salsa".
Poznámka:
Obnovení z databází s více tenanty do jednoho tenanta není možné.
Správa výkonu jednotlivých databází
Pokud má jeden tenant v rámci databáze s více tenanty trvale vysoké zatížení, může mít tendenci dominovat prostředkům databáze a ovlivnit ostatní tenanty ve stejné databázi. Pokud aktivita bude pravděpodobně nějakou dobu pokračovat, může být tenant dočasně přesunut z databáze a do vlastní databáze s jedním tenantem. To umožňuje tenantovi mít další prostředky, které potřebuje, a plně ho izoluje od ostatních tenantů.
Toto cvičení simuluje účinek Salix Salsa, u kterých dochází k vysokému zatížení při prodeji lístků na oblíbenou akci.
...\Demo-PerformanceMonitoringAndManagement.ps1
Otevřete skript.- Nastavte
$DemoScenario = 5
, vygenerujte normální zatížení a vysoké zatížení jednoho tenanta (přibližně 90 DTU). - Nastavit
$SingleTenantName = Salix Salsa
. - Skript proveďte pomocí F5.
Přejděte na web Azure Portal a přejděte na přehled salixsalsa> a zobrazte grafy monitorování.
Další vzory správy výkonu
Samoobslužné škálování tenanta
Vzhledem k tomu, že škálování je úloha snadno volána prostřednictvím rozhraní API pro správu, můžete snadno vytvořit možnost škálovat databáze tenantů do aplikace, která je určená pro tenanty, a nabídnout ji jako funkci služby SaaS. Můžete například umožnit tenantům samoobslužné vertikální navýšení a snížení kapacity navázané přímo na fakturaci.
Vertikální navýšení a snížení kapacity databáze podle plánu tak, aby odpovídalo vzorům využití
Pokud agregované využití tenanta dodržuje předvídatelné vzory využití, můžete pomocí služby Azure Automation podle plánu vertikálně navýšit nebo snížit kapacitu databáze. Můžete například vertikálně snížit kapacitu databáze po 18:00 a znovu před 6:00 v pracovní dny, když víte, že došlo k poklesu požadavků na prostředky.
Další kroky
V tomto kurzu se naučíte:
- Simulace využití u horizontálně dělené víceklientské databáze spuštěním poskytnutého generátoru zatížení
- Monitorování databáze v reakci na zvýšení zatížení
- Vertikální navýšení kapacity databáze v reakci na zvýšené zatížení databáze
- Zřízení tenanta do databáze s jedním tenantem