Sdílet prostřednictvím


Nasazení a prozkoumání horizontálně dělené víceklientské aplikace

Platí pro: Azure SQL Database

V tomto kurzu nasadíte a prozkoumáte ukázkovou aplikaci SaaS s více tenanty s názvem Wingtip Tickets. Aplikace Wingtip Tickets je navržená tak, aby představila funkce služby Azure SQL Database, které zjednodušují implementaci scénářů SaaS.

Tato implementace aplikace Wingtip Tickets používá model horizontálně dělené databáze s více tenanty. Horizontální dělení je podle identifikátoru tenanta. Data tenanta se distribuují do konkrétní databáze podle hodnot identifikátorů tenanta.

Tento model databáze umožňuje ukládat jednoho nebo více tenantů do každého horizontálního oddílu nebo databáze. Nejnižší náklady můžete optimalizovat tak, že každou databázi sdílí více tenantů. Nebo můžete optimalizovat izolaci tím, že bude mít každé úložiště databáze jenom jednoho tenanta. Vaši volbu optimalizace je možné provést nezávisle pro každého konkrétního tenanta. Výběr můžete provést při prvním uložení tenanta nebo později změnit názor. Aplikace je navržená tak, aby dobře fungovala v obou směrech.

Aplikace se nasazuje rychle

Aplikace běží v cloudu Azure a používá Azure SQL Database. Následující část nasazení obsahuje modré tlačítko Nasadit do Azure . Po stisknutí tlačítka se aplikace do pěti minut plně nasadí do vašeho předplatného Azure. Máte úplný přístup k práci s jednotlivými komponentami aplikace.

Aplikace se nasadí s daty pro tři ukázkové tenanty. Tenanti jsou uloženi společně v jedné databázi s více tenanty.

Zdrojový kód C# a PowerShellu pro Wingtip Tickets si může stáhnout kdokoli z jeho úložiště GitHub.

Další informace v tomto kurzu

  • Postup nasazení aplikace Wingtip Tickets SaaS
  • Kde získat zdrojový kód aplikace a skripty pro správu
  • Informace o serverech a databázích, které tvoří aplikaci.
  • Jak se tenanti mapují na svá data pomocí katalogu.
  • Jak zřídit nového tenanta
  • Jak monitorovat aktivitu tenanta v aplikaci

K dispozici je řada souvisejících kurzů, které vycházejí z tohoto počátečního nasazení. V kurzech se seznámíte s celou řadou vzorů návrhu a správy SaaS. Při procházení kurzů se doporučuje procházet poskytnuté skripty, abyste zjistili, jak se implementují různé vzory SaaS.

Požadavky

Předpokladem dokončení tohoto kurzu je splnění následujících požadavků:

Nasazení aplikace Wingtip Tickets

Plánování názvů

V krocích této části zadáte hodnotu uživatele , která se použije k zajištění globálního jedinečného názvu prostředků, a název skupiny prostředků, která obsahuje všechny prostředky vytvořené nasazením aplikace. Pro osobu jménem Ann Finley navrhujeme:

  • Uživatel: af1 (Jejich iniciály, plus číslice. Pokud aplikaci nasadíte podruhé, použijte jinou hodnotu (např. af2).)
  • Skupina prostředků: wingtip-mt-af1 (wingtip-mt označuje, že se jedná o horizontálně dělenou aplikaci s více tenanty. Připojení uživatelského jména af1 koreluje název skupiny prostředků s názvy prostředků, které obsahuje.)

Zvolte svoje jména a poznamenejte si je.

Kroky

  1. Klikněte na následující modré tlačítko Nasadit do Azure .

    • Otevře azure Portal se šablonou nasazení SaaS Wingtip Tickets.

      Tlačítko pro nasazení do Azure

  2. Zadejte požadované hodnoty parametrů pro nasazení.

    Důležité

    Pro tuto ukázku nepoužívejte žádné existující skupiny prostředků, servery ani fondy. Místo toho zvolte Vytvořit novou skupinu prostředků. Po ukončení práce s aplikací tuto skupinu prostředků odstraňte, aby se zastavilo související účtování. Nepoužívejte tuto aplikaci ani žádné prostředky, které vytváří, pro produkční prostředí. Některé aspekty ověřování a nastavení brány firewall serveru jsou v aplikaci záměrně nezabezpečené, aby se usnadnila ukázka.

    • Pro skupinu prostředků – vyberte Vytvořit nový a zadejte název skupiny prostředků (rozlišují se malá a velká písmena).
      • V rozevíracím seznamu vyberte umístění.
    • Pro uživatele – Doporučujeme zvolit krátkou hodnotu uživatele .
  3. Nasaďte aplikaci.

    • Kliknutím souhlasíte s podmínkami a ujednáními.
    • Klikněte na Koupit.
  4. Stav nasazení můžete monitorovat kliknutím na Oznámení, což je ikona zvonku napravo od vyhledávacího pole. Nasazení aplikace Wingtip trvá přibližně pět minut.

    nasazení bylo úspěšné

Stažení a odblokování skriptů pro správu

Během nasazování aplikace stáhněte zdrojový kód aplikace a skripty pro správu.

Poznámka:

Při stahování souborů ZIP z externího zdroje a extrahování může systém Windows blokovat spustitelný obsah (skripty, knihovny DLL). Při extrahování skriptů ze souboru ZIP pomocí následujícího postupu odblokujte .zip soubor před extrahováním. Odblokováním souboru .zip se ujistěte, že skripty mohou běžet.

  1. Přejděte do úložiště WingtipTicketsSaaSaS-MultiTenantDb na GitHubu.
  2. Klikněte na Klonovat nebo stáhnout.
  3. Klepněte na tlačítko Stáhnout ZIP a uložte soubor.
  4. Klikněte pravým tlačítkem na soubor WingtipTicketsSaaS-MultiTenantDb-master.zip a vyberte Vlastnosti.
  5. Na kartě Obecné vyberte Odblokovat a klikněte na Použít.
  6. Klikněte na OK.
  7. Extrahujte soubory.

Skripty jsou umístěny v objektu .. \WingtipTicketsSaaS-MultiTenantDb-master\Learning Modules\ složka.

Aktualizace konfiguračního souboru pro toto nasazení

Před spuštěním skriptů nastavte skupinu prostředků a uživatelské hodnoty v souboru UserConfig.psm1. Nastavte tyto proměnné na stejné hodnoty, které jste nastavili během nasazování.

  1. V prostředí PowerShell ISE otevřete ...\Learning Modules\UserConfig.psm1.
  2. Aktualizujte ResourceGroupName a Name konkrétními hodnotami pro vaše nasazení (pouze na řádcích 10 a 11).
  3. Uložte změny.

Hodnoty nastavené v tomto souboru používají všechny skripty, takže je důležité, aby byly přesné. Pokud aplikaci znovu nasadíte, musíte zvolit jiné hodnoty pro uživatele a skupinu prostředků. Potom znovu aktualizujte soubor UserConfig.psm1 novými hodnotami.

Spuštění aplikace

V aplikaci Wingtip jsou tenanti místem konání. Hotelem může být koncertní sál, sportovní klub nebo jakékoli jiné místo, které je hostitelem akcí. Místa se registrují v Wingtipu jako zákazníci a pro každé místo se vygeneruje identifikátor tenanta. Každé místo obsahuje seznam nadcházejících akcí v Wingtipu, aby si veřejnost mohl koupit vstupenky na akce.

Každé místo získá přizpůsobenou webovou aplikaci pro výpis svých událostí a prodej lístků. Každá webová aplikace je nezávislá a izolovaná od ostatních tenantů. Interně ve službě Azure SQL Database se všechna data pro každého tenanta ukládají ve výchozím nastavení v horizontálně dělené databázi s více tenanty. Všechna data jsou označená identifikátorem tenanta.

Centrální webová stránka centra událostí poskytuje seznam odkazů na tenanty ve vašem konkrétním nasazení. Pomocí následujících kroků můžete zaznamenat webovou stránku centra událostí a jednotlivé webové aplikace:

  1. Otevřete centrum událostí ve webovém prohlížeči:

    • http://events.wingtip-mt.<user.trafficmanager.net> (Nahraďte <uživatele> hodnotou uživatele vašeho nasazení.)

      centrum akcí

  2. V Centru akcí klikněte na Fabrikam Jazz Club.

    Události

Azure Traffic Manager

K řízení distribuce příchozích požadavků používá aplikace Wingtip Azure Traffic Manager. Stránka událostí pro každého tenanta obsahuje název tenanta v adrese URL. Každá adresa URL také obsahuje vaši konkrétní hodnotu uživatele. Každá adresa URL dodržuje zobrazený formát pomocí následujících kroků:

  • http://events.wingtip-mt.<user.trafficmanager.net/> fabrikamjazzclub
  1. Aplikace událostí parsuje název tenanta z adresy URL. Název tenanta je fabrikamjazzclub v předchozí ukázkové adrese URL.
  2. Aplikace pak zatřidí název tenanta a vytvoří klíč pro přístup k katalogu pomocí správy mapování horizontálních oddílů.
  3. Aplikace najde klíč v katalogu a získá odpovídající umístění databáze tenanta.
  4. Aplikace používá informace o poloze k vyhledání a přístupu k jedné databázi, která obsahuje všechna data pro tenanta.

Centrum událostí

  1. Centrum událostí obsahuje seznam všech tenantů zaregistrovaných v katalogu a jejich místa konání.
  2. Centrum událostí používá rozšířená metadata v katalogu k načtení názvu tenanta přidruženého ke každému mapování pro vytvoření adres URL.

V produkčním prostředí obvykle vytvoříte záznam CNAME DNS, který bude odkazovat na internetovou doménu společnosti do profilu traffic manageru.

Spuštění generování zatížení databází tenantů

Teď, když je aplikace nasazená, pojďme ji dát do práce! Skript PowerShellu Demo-LoadGenerator spustí úlohu spuštěnou pro každého tenanta. Reálné zatížení mnoha aplikací SaaS je obvykle občasné a nepředvídatelné. K simulaci tohoto typu zatížení generátor vytvoří zatížení distribuované napříč všemi tenanty. Zatížení zahrnuje randomizované nárůsty v každém tenantovi, ke kterým dochází v náhodných intervalech. Vynořování vzoru zatížení trvá několik minut, takže je nejlepší nechat generátor běžet alespoň tři nebo čtyři minuty před monitorováním zatížení.

  1. V prostředí PowerShell ISE otevřete skript ...\Learning Modules\Utilities\Demo-LoadGenerator.ps1 .
  2. Stisknutím F5 spusťte skript s generátorem zatížení (zatím nechejte nastavené výchozí hodnoty parametrů).

Skript Demo-LoadGenerator.ps1 otevře další relaci PowerShellu, ve které běží generátor zatížení. Generátor zatížení běží v této relaci jako úloha popředí, která vyvolá úlohy generování zatížení na pozadí, jednu pro každého tenanta.

Po spuštění úkolu popředí zůstane ve stavu vyvolání úlohy. Úloha spustí další úlohy na pozadí pro všechny nové tenanty, které jsou následně zřízeny.

Zavření relace PowerShellu zastaví všechny úlohy.

Pokud chcete použít jiné hodnoty parametrů, můžete restartovat relaci generátoru zatížení. Pokud ano, zavřete relaci generování PowerShellu a spusťte znovu Demo-LoadGenerator.ps1.

Zřízení nového tenanta do horizontálně dělené databáze

Počáteční nasazení zahrnuje tři ukázkové tenanty v databázi Tenants1 . Pojďme vytvořit dalšího tenanta a sledovat jeho účinky na nasazenou aplikaci. V tomto kroku stisknutím jedné klávesy vytvoříte nového tenanta:

  1. Otevřete soubor ...\Learning Modules\Provision and Catalog\Demo-ProvisionTenants.ps1 v prostředí PowerShell ISE.

  2. Stisknutím klávesy F5 (ne F8) spusťte skript (prozatím ponechte výchozí hodnoty).

    Poznámka:

    Skripty PowerShellu je nutné spouštět jenom stisknutím klávesy F5 , nikoli stisknutím klávesy F8 , aby se spustila vybraná část skriptu. Problém s F8 spočívá v tom, že $PSScriptRoot proměnná není vyhodnocena. Tuto proměnnou potřebuje mnoho skriptů pro navigaci ve složkách, vyvolání dalších skriptů nebo import modulů.

Nový tenant Red Maple Racing se přidá do databáze Tenants1 a zaregistruje se v katalogu. Web Události prodeje lístků nového tenanta se otevře v prohlížeči:

Nový tenant

Aktualizujte centrum událostí a nový tenant se teď zobrazí v seznamu.

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 do databáze, která obsahuje jiné tenanty, nebo do vlastní databáze. Tenant izolovaný ve své vlastní databázi má následující výhody:

  • Výkon databáze tenanta je možné spravovat bez nutnosti ohrozit potřeby jiných tenantů.
  • V případě potřeby je možné databázi obnovit k dřívějšímu bodu v čase, protože by to nemělo vliv na žádné jiné tenanty.

Můžete se rozhodnout, že do databází s více tenanty umístíte zákazníky s bezplatnou zkušební verzí nebo zákazníky ekonomické verze. Každý tenant úrovně Premium můžete umístit do vlastní vyhrazené databáze. Pokud vytváříte velké množství databází, které obsahují jenom jednoho tenanta, můžete je všechny spravovat společně v elastickém fondu a optimalizovat tak náklady na prostředky.

Dále zřídíme dalšího tenanta, tentokrát ve své vlastní databázi:

  1. V souboru ...\Learning Modules\Provision and Catalog\Demo-ProvisionTenants.ps1 upravte $TenantName na Salix Salsa, $VenueType tancovat a $Scenario2.

  2. Stisknutím klávesy F5 znovu spusťte skript.

    • Stisknutím klávesy F5 zřídíte nového tenanta v samostatné databázi. Databáze a tenant jsou zaregistrované v katalogu. Pak se prohlížeč otevře na stránce Události tenanta.

    Stránka s událostmi Salsa Salsa

    • Posuňte se do dolní části stránky. V banneru uvidíte název databáze, ve kterém jsou uložená data tenanta.
  3. Aktualizujte centrum událostí a v seznamu se teď zobrazí dva noví tenanti.

Prozkoumání serverů a databází tenantů

Teď se podíváme na některé z nasazených prostředků:

  1. Na webu Azure Portal přejděte do seznamu skupin prostředků. Otevřete skupinu prostředků, kterou jste vytvořili při nasazení aplikace.

    skupina prostředků

  2. Klikněte na uživatelský> server catalog-mt<. Server katalogu obsahuje dvě databáze s názvem tenantcatalog a basetenantdb. Databáze basetenantdb je prázdná databáze šablony. Zkopíruje se, aby se vytvořila nová databáze tenanta bez ohledu na to, jestli se používá pro mnoho tenantů, nebo jenom pro jednoho tenanta.

    Snímek obrazovky se stránkou Přehled serveru zobrazící katalog tenantů a databáze databáze základní databáze tenanta

  3. Vraťte se do skupiny prostředků a vyberte server tenants1-mt , který obsahuje databáze tenantů.

    • Databáze tenants1 je databáze s více tenanty, ve které jsou uloženy původní tři tenanty a první přidaný tenant. Je nakonfigurovaná jako databáze 50 DTU Standard.
    • Databáze salixsalsa má jako jediného tenanta taneční místo Salix Salsa. Ve výchozím nastavení je nakonfigurovaná jako databáze edice Standard s 50 DTU.

    Snímek obrazovky se stránkou Přehled serveru tenants1-mt zobrazící databáze salixsalsa a tenants1

Monitorování výkonu databáze

Pokud je generátor zatížení spuštěný několik minut, je k dispozici dostatek telemetrie pro zobrazení funkcí monitorování databází integrovaných na webu Azure Portal.

  1. Přejděte na uživatelský> server tenants1-mt<a kliknutím na tenanty1 zobrazte využití prostředků pro databázi se čtyřmi tenanty. Každý tenant podléhá občasné zátěži z generátoru zatížení:

    monitorování tenantů1

    Graf využití DTU pěkně znázorňuje, jak může víceklientová databáze podporovat nepředvídatelnou úlohu v mnoha tenantech. V tomto případě generátor zatížení u každého tenanta používá občasné zatížení přibližně 30 DTU. Toto zatížení odpovídá 60% využití databáze 50 DTU. Špičky, které přesahují 60 %, jsou výsledkem zatížení na více než jednoho tenanta najednou.

  2. Přejděte na uživatelský> server tenants1-mt<a klikněte na databázi salixsalsa. Využití prostředků můžete zobrazit v této databázi, která obsahuje pouze jednoho tenanta.

    databáze salixsalsa

Generátor zatížení používá podobné zatížení pro každého tenanta bez ohledu na to, ve které databázi je každý tenant. S pouze jedním tenantem v databázi salixsalsa můžete vidět, že databáze by mohla udržet mnohem vyšší zatížení než databáze s několika tenanty.

Přidělení prostředků se liší podle úloh

V některých případech databáze s více tenanty vyžaduje pro dobrý výkon více prostředků než databáze s jedním tenantem, ale ne vždy. Optimální přidělování prostředků závisí na konkrétních vlastnostech úloh pro tenanty ve vašem systému.

Úlohy generované skriptem generátoru zatížení jsou určené pouze pro ilustraci.

Další materiály

Další kroky

V tomto kurzu jste se dozvěděli:

  • Postup nasazení aplikace SaaS Multi-tenant Database Aplikace Wingtip Tickets
  • Informace o serverech a databázích, které tvoří aplikaci.
  • Tenanti se mapují na svá data pomocí katalogu.
  • Postup zřízení nových tenantů do databáze s více tenanty a databáze s jedním tenantem
  • Zobrazení využití fondu pro monitorování aktivity tenanta
  • Odstranění ukázkových prostředků za účelem zastavení související fakturace

Teď vyzkoušejte kurz zřizování a katalogu.