Dela via


Distribuera och utforska en SaaS-app med flera klienter som använder mönstret databas per klientorganisation med Azure SQL Database

gäller för:Azure SQL Database

I den här självstudien distribuerar och utforskar du Wingtip Tickets SaaS-databasen per klientorganisation (Wingtip). Appen använder ett mönster för databas per klientorganisation för att lagra data för flera klientorganisationer. Appen är utformad för att visa funktioner i Azure SQL Database som förenklar hur du aktiverar SaaS-scenarier.

Fem minuter efter att du har valt Distribuera till Azurehar du ett SaaS-program med flera klientorganisationer. Appen innehåller en databas som körs i Azure SQL Database. Appen är distribuerad med tre exempeltenanter, var och en med en egen databas. Alla databaser distribueras till en elastisk SQL-pool. Appen distribueras till din Azure-prenumeration. Du har fullständig åtkomst till att utforska och arbeta med de enskilda komponenterna i appen. C#-källkoden för programmet och hanteringsskripten är tillgängliga i WingtipTicketsSaaS-DbPerTenant GitHub-lagringsplatsen.

I den här handledningen lär du dig:

  • Så här distribuerar du Wingtip SaaS-programmet.
  • Var du kan hämta programmets källkod och hanteringsskript.
  • Om de servrar, pooler och databaser som utgör appen.
  • Hur hyresgäster kopplas till sina data med katalogen .
  • Så här etablerar du en ny klientorganisation.
  • Övervaka klientaktivitet i appen.

En serien av relaterade självstudier erbjuder möjligheten att utforska olika SaaS-design- och hanteringsmönster. Självstudierna bygger vidare på den här inledande distributionen. När du använder guiderna kan du undersöka de angivna skripten för att upptäcka hur de olika SaaS-mönstren implementeras. Skripten visar hur funktioner i SQL Database förenklar utvecklingen av SaaS-program.

Förutsättningar

Om du vill slutföra den här självstudien kontrollerar du att Azure PowerShell är installerat. Mer information finns i Komma igång med Azure PowerShell.

Distribuera Wingtip Tickets SaaS-programmet

Planera namnen

I stegen i det här avsnittet anger du ett användarvärde som används för att se till att resursnamnen är globalt unika. Du anger också ett namn för resursgruppen som innehåller alla resurser som skapats av en distribution av appen. För en fiktiv person som heter Ann Finley föreslår vi:

  • User: af1 består av Ann Finleys initialer plus en siffra. Om du distribuerar appen en andra gång använder du ett annat värde. Ett exempel är af2.
  • Resursgrupp: wingtip-dpt-af1 indikerar att detta är database-per-tenant-appen. Lägg till användarnamnet af1 för att korrelera resursgruppens namn med namnen på de resurser som den innehåller.

Välj dina namn nu och skriv ned dem.

Steg

  1. Om du vill öppna distributionsmallen Wingtip Tickets SaaS database-per-tenant i Azure-portalen väljer du Distribuera till Azure.

    bild som visar en knapp med etiketten

  2. Ange värden i mallen för de obligatoriska parametrarna.

    Viktig

    Vissa autentiserings- och serverbrandväggar är avsiktligt oskyddade i demonstrationssyfte. Vi rekommenderar att du skapar en ny resursgrupp. Använd inte befintliga resursgrupper, servrar eller pooler. Använd inte det här programmet, skripten eller några distribuerade resurser för produktion. Ta bort den här resursgruppen när du är klar med programmet för att stoppa relaterad fakturering.

    • Resursgrupp: Välj Skapa nyoch ange det unika namn som du valde tidigare för resursgruppen.
    • Plats: Välj en plats i listrutan.
    • User: Använd det användarnamnsvärde som du valde tidigare.
  3. Distribuera programmet.

    a. Välj för att godkänna villkoren.

    b. Välj Köp.

  4. Om du vill övervaka distributionsstatus väljer du Meddelanden (klockikonen till höger om sökrutan). Det tar ungefär fem minuter att distribuera SaaS-appen Wingtip Tickets.

    distributionen lyckades

Ladda ned och avblockera hanteringsskripten för Wingtip-biljetter

När programmet distribueras laddar du ned källkoden och hanteringsskripten.

Viktig

Körbart innehåll (skript och DLL:er) kan blockeras av Windows när .zip filer laddas ned från en extern källa och extraheras. Följ stegen för att avblockera .zip-filen innan du extraherar skripten. Avblockering ser till att skripten tillåts köras.

  1. Bläddra till WingtipTicketsSaaS-DbPerTenant GitHub-lagringsplats.
  2. Välj Klona eller ladda ned.
  3. Välj Ladda ned ZIP-och spara sedan filen.
  4. Högerklicka på filen WingtipTicketsSaaS-DbPerTenant-master.zip och välj sedan Egenskaper.
  5. På fliken Allmänt väljer du Avblockera>Använd.
  6. Välj OKoch extrahera filerna

Skript finns i mappen ...\WingtipTicketsSaaS-DbPerTenant-master\Learning Modules.

Uppdatera användarkonfigurationsfilen för den här distributionen

Innan du kör några skript uppdaterar du resursgruppen och användarvärdena i användarkonfigurationsfilen. Ange dessa variabler till de värden som du använde under distributionen.

  1. I PowerShell ISE öppnar du ...\Learning Modules\UserConfig.psm1
  2. Uppdatera ResourceGroupName och Namn med de specifika värdena för distributionen (endast på raderna 10 och 11).
  3. Spara ändringarna.

Dessa värden refereras till i nästan alla skript.

Kör programmet

Appen visar platser som är värdar för evenemang. Här finns konsertsalar, jazzklubbar och idrottsklubbar. I Wingtip Tickets registreras arenor som hyresgäster. Att vara innehavare ger en lokal ett enkelt sätt att lista evenemang och sälja biljetter till sina kunder. Varje plats får en personlig webbplats för att lista sina evenemang och sälja biljetter.

Internt i appen får varje klientorganisation en databas som distribueras till en elastisk pool.

En central Events Hub-sida tillhandahåller en lista med länkar till dina klientorganisationer i din installation.

  1. Använd URL:en för att öppna händelsehubben i webbläsaren: http://events.wingtip-dpt.<användare>.trafficmanager.net. Ersätt <användare> med distributionens användarvärde.

    Events Hub

  2. Välj Fabrikam Jazz Club i Event Hub.

    händelser

Azure Traffic Manager

Wingtip-programmet använder Azure Traffic Manager- för att styra fördelningen av inkommande begäranden. URL:en för att komma åt händelsesidan för en specifik klient använder följande format:

  • http://events.wingtip-dpt.<användare>.trafficmanager.net/fabrikamjazzclub

    Delarna i föregående format förklaras i följande tabell.

    URL-del Beskrivning
    events.wingtip-dpt Evenemangsdelarna i Wingtip-appen.

    -dpt skiljer implementering av Wingtip-biljetter från andra implementeringar. Exempel är implementeringarna enskild app-per-tenant (-sa) eller databas med flera klienter (-mt).
    .<användare> af1 i exemplet.
    .trafficmanager.net/ Trafikhanterare, bas-URL.
    fabrikamjazzclub Identifierar hyresgästen Fabrikam Jazz Club.
  • Hyresgästens namn parsas från URL:en av händelseappen.

  • Hyresgästens namn används för att skapa en nyckel.

  • Nyckeln används för att komma åt katalogen för att hämta platsen för hyresgästens databas.

    • Katalogen implementeras med hjälp av hantering av shard-kartor.
  • Händelsehubben använder utökade metadata i katalogen för att konstruera url:erna för händelselistan för varje klientorganisation.

I en produktionsmiljö skapar du vanligtvis en CNAME DNS-post för att peka en företags internetdomän till Traffic Manager DNS-namnet.

Not

Det kanske inte är uppenbart direkt vad trafikhanteraren har för funktion i den här guiden. Målet med den här serien med självstudier är att visa upp mönster som kan hantera skalan för en komplex produktionsmiljö. I ett sådant fall skulle du till exempel ha flera webbappar distribuerade över hela världen, som är kopplade till databaser, och då skulle du behöva en trafikhanterare för att dirigera mellan dessa instanser.

En annan uppsättning självstudier som illustrerar användningen av Traffic Manager är dock geo-återställning och självstudierna geo-replikering. I de här självstudierna används Traffic Manager för att växla över till en återställningsinstans av SaaS-appen i händelse av ett regionalt avbrott. För mer information om geo-återställning, se Geo-återställning för Azure SQL Database.

Börja generera belastning på klientdatabaserna

Nu när appen har distribuerats ska vi se till att den fungerar.

Demo-LoadGenerator PowerShell-skriptet startar en arbetsbelastning som körs mot alla klientdatabaser. Den verkliga belastningen på många SaaS-appar är sporadisk och oförutsägbar. För att simulera den här typen av belastning skapar generatorn en belastning med slumpmässiga toppar eller aktivitetsutbrott på varje klient. Bursts sker med slumpmässiga intervall. Det tar flera minuter innan belastningsmönstret dyker upp. Låt generatorn köras i minst tre eller fyra minuter innan du övervakar belastningen.

  1. Öppna skriptet ...\Learning Modules\Utilities\Demo-LoadGenerator.ps1 i PowerShell ISE.
  2. Tryck på F5 för att köra skriptet och starta belastningsgeneratorn. Låt standardparametervärdena vara kvar tills vidare.
  3. Logga in på ditt Azure-konto och välj den prenumeration som du vill använda om det behövs.

Skriptet för inläsningsgeneratorn startar ett bakgrundsjobb för varje databas i katalogen och stoppar sedan. Om du kör belastningsgeneratorskriptet igen stoppas alla bakgrundsjobb som körs innan det startar nya.

Övervaka bakgrundsjobben

Om du vill styra och övervaka bakgrundsjobben använder du följande cmdletar:

  • Get-Job
  • Receive-Job
  • Stop-Job

Demo-LoadGenerator.ps1 åtgärder

Demo-LoadGenerator.ps1 efterliknar en aktiv arbetsbelastning med kundtransaktioner. Följande steg beskriver sekvensen med åtgärder som Demo-LoadGenerator.ps1 initierar:

  1. Demo-LoadGenerator.ps1 påbörjar LoadGenerator.ps1 i förgrunden.

    • Båda .ps1 filerna lagras under mapparna Learning Modules\Utilities\.
  2. LoadGenerator.ps1 loopar genom alla klientdatabaser i katalogen.

  3. LoadGenerator.ps1 startar ett PowerShell-bakgrundsjobb för varje klientdatabas:

    • Som standard körs bakgrundsjobben i 120 minuter.
    • Varje jobb orsakar en CPU-baserad belastning på en klientdatabas genom att köra sp_CpuLoadGenerator. Belastningens intensitet och varaktighet varierar beroende på $DemoScenario.
    • sp_CpuLoadGenerator loopar runt en SQL SELECT-instruktion som orsakar hög CPU-belastning. Tidsintervallet mellan problem med SELECT varierar beroende på parametervärden för att skapa en kontrollbar CPU-belastning. Belastningsnivåer och intervall randomiseras för att simulera mer realistiska belastningar.
    • Den här .sql filen lagras under WingtipTenantDB\dbo\StoredProcedures\.
  4. Om $OneTime = $falsestartar belastningsgeneratorn bakgrundsjobben och fortsätter sedan att köras. Var tionde sekund övervakar den om det finns några nya klienter som tilldelats. Om du anger $OneTime = $truestartar LoadGenerator bakgrundsjobben och slutar sedan att köras i förgrunden. I den här självstudien lämnar du $OneTime = $false.

    Använd Ctrl-C eller stoppa operation Ctrl-Break om du vill stoppa eller starta om lastgeneratorn.

    Om du låter belastningsgeneratorn köras i förgrunden använder du en annan PowerShell ISE-instans för att köra andra PowerShell-skript.

 

Innan du fortsätter med nästa avsnitt, låt belastningsgeneratorn fortsätta köra i anropstillståndet.

Etablera en ny klientorganisation

Den första distributionen skapar tre exempelhyresgäster. Nu skapar du en annan klientorganisation för att se hur det distribuerade programmet påverkas. I Wingtip-appen förklaras arbetsflödet för att etablera nya hyresgäster i handledningen Provision och katalog. I den här fasen skapar du en ny klientorganisation, vilket tar mindre än en minut.

  1. Öppna en ny PowerShell ISE.

  2. Öppna ...\Learning Modules\Provision and Catalog\Demo-ProvisionAndCatalog.ps1.

  3. Tryck på F5 för att köra skriptet. Låt standardvärdena vara kvar för tillfället.

    Not

    Många Wingtip SaaS-skript använder $PSScriptRoot för att bläddra i mappar för att anropa funktioner i andra skript. Den här variabeln utvärderas endast när det fullständiga skriptet körs genom att trycka på F5. Att markera och köra ett urval med F8 kan resultera i fel. Tryck på F5 för att köra skripten.

Den nya klientdatabasen är:

  • Skapades i en elastisk SQL-pool.
  • Initierad
  • Registrerad i katalogen.

När etableringen har slutförts visas Händelser platsen för den nya klientorganisationen i webbläsaren.

Ny hyresgäst

Uppdatera hubben för händelser så att den nya klientorganisationen visas i listan.

Utforska servrar, pooler och klientdatabaser

Nu när du har börjat köra en belastning mot samlingen med klienter ska vi titta på några av de resurser som har distribuerats.

  1. I Azure-portalenbläddrar du till din lista över SQL-servrar. Öppna sedan catalog-dpt-<USER> servern.

    • Katalogservern innehåller två databaser, tenantcatalog och basetenantdb (en malldatabas som kopieras för att skapa nya klienter).

    Skärmbild som visar en översiktssida för katalogservern med de två databaserna.

  2. Gå tillbaka till din lista över SQL-servrar.

  3. Öppna hyresgäster1-dpt-<USER> server>som innehåller hyresgästernas databaser.

  4. Se följande objekt:

    • Varje klientdatabas är en Elastic Standard-databas i en standardpool med 50 eDTU.
    • Red Maple Racing-databasen är klientdatabasen som du etablerade tidigare.

    Skärmbild som visar de fyra databaserna på servern med röd lönnracingdatabas markerad.

Övervaka poolen

När LoadGenerator.ps1 har körts i flera minuter bör tillräckligt med data vara tillgängliga för att börja titta på vissa övervakningsfunktioner. De här funktionerna är inbyggda i pooler och databaser.

Bläddra till servern tenants1-dpt-<användare>och välj Pool1 för att se resursanvändningen för poolen. I följande diagram kördes belastningsgeneratorn i en timme.

Övervaka pool

  • Det första diagrammet, märkt Resursanvändning, visar pool-eDTU-användning.
  • Det andra diagrammet visar eDTU-användningen av de fem mest aktiva databaserna i poolen.

De två diagrammen visar att elastiska pooler och SQL Database passar bra för oförutsägbara SaaS-programarbetsbelastningar. Diagrammen visar att var och en av de fyra databaserna når upp till 40 eDTU, och ändå understöds alla databaser utan problem av en 50-eDTU-pool. 50-eDTU-poolen kan stödja ännu tyngre arbetsbelastningar. Om databaserna etableras som enskilda databaser måste var och en vara en S2 (50 DTU) för att stödja bursts. Kostnaden för fyra enkla S2-databaser är nästan tre gånger priset för poolen. I verkliga situationer kör SQL Database-kunder upp till 500 databaser i 200 eDTU-pooler. Mer information finns i handledningen Prestandaövervakning.

Ytterligare resurser

Nästa steg

I den här självstudien har du lärt dig:

  • Så här distribuerar du Wingtip Tickets SaaS-programmet.
  • Om de servrar, pooler och databaser som utgör appen.
  • Hur hyresgäster kartläggs till sina data med katalogen.
  • Så här etablerar du nya hyresgäster.
  • Så här visar du poolanvändning för att övervaka klientaktivitet.
  • Så här tar du bort exempelresurser för att stoppa relaterad fakturering.

Nästa, prova självstudien om Provision och katalog.