Azure SQL Veritabanı ile kiracı başına veritabanı desenini kullanan çok kiracılı bir SaaS uygulamasını dağıtma ve keşfetme

Şunlar için geçerlidir:Azure SQL Veritabanı

Bu öğreticide Wingtip Biletleri SaaS kiracı başına veritabanı uygulamasını (Wingtip) dağıtacak ve keşfedeceksiniz. Uygulama, birden çok kiracının verilerini depolamak için kiracı başına veritabanı deseni kullanır. Uygulama, SaaS senaryolarını etkinleştirmeyi basitleştiren Azure SQL Veritabanı özelliklerini göstermek için tasarlanmıştır.

Azure'a dağıt'ı seçtikten beş dakika sonra çok kiracılı bir SaaS uygulamanız olur. Uygulama, Azure SQL Veritabanı'da çalışan bir veritabanı içerir. Uygulama, her biri kendi veritabanına sahip üç örnek kiracıyla dağıtılır. Tüm veritabanları bir SQL elastik havuzuna dağıtılır. Uygulama Azure aboneliğinize dağıtılır. Uygulamanın tek tek bileşenlerini keşfetmek ve bunlarla çalışmak için tam erişiminiz vardır. Uygulama C# kaynak kodu ve yönetim betikleri WingtipTicketsSaaS-DbPerTenant GitHub deposunda bulunur.

Bu öğreticide şunları öğrenirsiniz:

  • Wingtip SaaS uygulamasını dağıtma.
  • Uygulama kaynak kodunun ve yönetim betiklerinin alınacağı yer.
  • Uygulamayı oluşturan sunucular, havuzlar ve veritabanları hakkında.
  • Kiracıların katalogla verilerine nasıl eşlendiği.
  • Yeni kiracı sağlama.
  • Uygulamadaki kiracı etkinliğini izleme.

Çeşitli SaaS tasarım ve yönetim desenlerini keşfetmeyi sağlayan bir dizi ilgili öğretici. Öğreticiler bu ilk dağıtımın ötesinde oluşturulur. Öğreticileri kullandığınızda, sağlanan betikleri inceleyerek farklı SaaS desenlerinin nasıl uygulandığını görebilirsiniz. Betikler, SQL Veritabanı özelliklerinin SaaS uygulamalarının geliştirilmesini nasıl kolaylaştırduğunu gösterir.

Ön koşullar

Bu öğreticiyi tamamlamak için Azure PowerShell'in yüklü olduğundan emin olun. Daha fazla bilgi için bkz. Azure PowerShell kullanmaya başlayın.

Wingtip Biletleri SaaS uygulamasını dağıtma

Adları planlama

Bu bölümün adımlarında, kaynak adlarının genel olarak benzersiz olduğundan emin olmak için kullanılan bir kullanıcı değeri sağlarsınız. Ayrıca, uygulamanın dağıtımı tarafından oluşturulan tüm kaynakları içeren kaynak grubu için bir ad da sağlarsınız. Ann Finley adlı kurgusal bir kişi için şunları öneririz:

  • Kullanıcı: af1 , Ann Finley'in baş harflerinden ve bir rakamdan oluşur. Uygulamayı ikinci kez dağıtırsanız farklı bir değer kullanın. Örnek olarak af2 örneği verilmiştir.
  • Kaynak grubu: wingtip-dpt-af1 bunun kiracı başına veritabanı uygulaması olduğunu gösterir. Kaynak grubu adını içerdiği kaynakların adlarıyla ilişkilendirmek için af1 kullanıcı adını ekleyin.

Şimdi adlarınızı seçin ve not edin.

Adımlar

  1. Wingtip Biletleri SaaS kiracı başına veritabanı dağıtım şablonunu Azure portalında açmak için Azure'a dağıt'ı seçin.

    Image showing a button labeled

  2. Gerekli parametreler için şablona değerleri girin.

    Önemli

    Bazı kimlik doğrulaması ve sunucu güvenlik duvarları gösterim amacıyla kasıtlı olarak güvenli hale getirilmez. Yeni bir kaynak grubu oluşturmanızı öneririz. Mevcut kaynak gruplarını, sunucuları veya havuzları kullanmayın. Bu uygulamayı, betikleri veya dağıtılan kaynakları üretim için kullanmayın. İlgili faturalamayı durdurmak için uygulamayla işiniz bittiğinde bu kaynak grubunu silin.

    • Kaynak grubu: Yeni oluştur'u seçin ve kaynak grubu için daha önce seçtiğiniz benzersiz adı belirtin.
    • Konum: Açılan listeden bir konum seçin.
    • Kullanıcı: Daha önce seçtiğiniz kullanıcı adı değerini kullanın.
  3. Uygulamayı dağıtın.

    a. Hüküm ve koşulları kabul etmek için seçin.

    b. Satın al'ı seçin.

  4. Dağıtım durumunu izlemek için Bildirimler'i (arama kutusunun sağındaki zil simgesi) seçin. Wingtip Biletleri SaaS uygulamasının dağıtılması yaklaşık beş dakika sürer.

    Deployment succeeded

Wingtip Biletleri yönetim betiklerini indirme ve engellemesini kaldırma

Uygulama dağıtılırken kaynak kodu ve yönetim betiklerini indirin.

Önemli

.zip dosyaları bir dış kaynaktan indirilip ayıklandığında yürütülebilir içerik (betikler ve DLL'ler) Windows tarafından engellenebilir. Betikleri ayıklamadan önce .zip dosyasının engelini kaldırmak için adımları izleyin. Engelleme kaldırıldığında betiklerin çalıştırılmasına izin verilir.

  1. WingtipTicketsSaaS-DbPerTenant GitHub deposuna göz atın.
  2. Clone or download'u (Kopyala veya indir) seçin.
  3. ZIP İndir'i seçin ve dosyayı kaydedin.
  4. WingtipTicketsSaaS-DbPerTenant-master.zip dosyasına sağ tıklayın ve özellikler'i seçin.
  5. Genel sekmesinde Uygula engelini kaldır'ı>seçin.
  6. Tamam'ı seçin ve dosyaları ayıklayın

Betikler ...\WingtipTicketsSaaS-DbPerTenant-master\Learning Modules klasöründe bulunur.

Bu dağıtım için kullanıcı yapılandırma dosyasını güncelleştirin

Betikleri çalıştırmadan önce, Kullanıcı Yapılandırması dosyasındaki kaynak grubunu ve kullanıcı değerlerini güncelleştirin. Bu değişkenleri dağıtım sırasında kullandığınız değerlere ayarlayın.

  1. PowerShell ISE'de ...\Learning Modules\UserConfig.psm1 dosyasını açın
  2. ResourceGroupName ve Name değerlerini dağıtımınız için belirli değerlerle güncelleştirin (yalnızca 10 ve 11. satırlarda).
  3. Değişiklikleri kaydedin.

Bu değerlere neredeyse her betikte başvurulur.

Uygulamayı çalıştırma

Uygulama, etkinlikleri barındıran yerleri gösterir. Mekan türleri arasında konser salonları, caz kulüpleri ve spor kulüpleri yer almaktadır. Wingtip Biletlerinde mekanlar kiracı olarak kayıtlıdır. Kiracı olmak, bir mekana etkinlikleri listelemek ve müşterilerine bilet satmak için kolay bir yol sağlar. Her mekan, etkinliklerini listelemek ve bilet satmak için kişiselleştirilmiş bir web sitesi alır.

Uygulama içinde her kiracı elastik havuza dağıtılan bir veritabanı alır.

Merkezi bir Olay Hub'ı sayfası, dağıtımınızdaki kiracıların bağlantılarının listesini sağlar.

  1. Web tarayıcınızda Olay Hub'ını açmak için URL'yi kullanın: http://events.wingtip-dpt.<user.trafficmanager.net>. Kullanıcıyı> dağıtımınızın kullanıcı değeriyle değiştirme<.

    Events Hub

  2. Olaylar Merkezi'nde Fabrikam Jazz Club'ı seçin.

    Events

Azure Traffic Manager

Wingtip uygulaması, gelen isteklerin dağıtımını denetlemek için Azure Traffic Manager'ı kullanır. Belirli bir kiracının olaylar sayfasına erişim URL'si aşağıdaki biçimi kullanır:

  • http://events.wingtip-dpt.<user.trafficmanager.net/fabrikamjazzclub>

    Yukarıdaki biçimin bölümleri aşağıdaki tabloda açıklanmıştır.

    URL bölümü Tanım
    events.wingtip-dpt Wingtip uygulamasının olay bölümleri.

    -dpt , Wingtip Biletlerinin kiracı başına veritabanı uygulamasını diğer uygulamalardan ayırır. Örnek olarak kiracı başına tek uygulama (-sa) veya çok kiracılı veritabanı (-mt) uygulamaları verilebilir.
    .<Kullanıcı> örnekte af1 .
    .trafficmanager.net/ Traffic Manager, temel URL.
    fabrikamjazzclub Fabrikam Jazz Club adlı kiracıyı tanımlar.
  • Kiracı adı, olaylar uygulaması tarafından URL'den ayrıştırılır.

  • Kiracı adı bir anahtar oluşturmak için kullanılır.

  • Anahtar, kiracının veritabanının konumunu almak için kataloğa erişmek için kullanılır.

    • Katalog, parça eşleme yönetimi kullanılarak uygulanır.
  • Olay Hub'ı, her kiracı için olay listesi sayfası URL'lerini oluşturmak için katalogdaki genişletilmiş meta verileri kullanır.

Üretim ortamında genellikle bir şirketin internet etki alanını Traffic Manager DNS adına yönlendirmek için bir CNAME DNS kaydı oluşturursunuz.

Dekont

Bu öğreticide traffic manager kullanımının ne olduğu hemen belli olmayabilir. Bu öğretici serisinin amacı, karmaşık bir üretim ortamının ölçeğini işleyebilen desenleri göstermektir. Örneğin böyle bir durumda, dünya genelinde dağıtılmış, veritabanlarıyla birlikte bulunan birden çok web uygulamanız olur ve bu örnekler arasında yönlendirmek için Traffic Manager'a ihtiyacınız olur. Ancak traffic manager kullanımını gösteren bir diğer öğretici kümesi de coğrafi geri yükleme ve coğrafi çoğaltma öğreticileridir. Bu öğreticilerde traffic manager, bölgesel bir kesinti durumunda SaaS uygulamasının kurtarma örneğine geçiş yapmaya yardımcı olmak için kullanılır.

Kiracı veritabanları üzerinde yük oluşturmaya başlama

Uygulama dağıtıldıktan sonra çalışmaya başlayalım.

Demo-LoadGenerator PowerShell betiği, tüm kiracı veritabanlarında çalışan bir iş yükü başlatır. Birçok SaaS uygulamasındaki gerçek dünya yükü düzensiz ve öngörülemezdir. Oluşturucu, bu yük türünün benzetimini yapmak için her kiracıda rastgele ani artışlar veya etkinlik artışları içeren bir yük oluşturur. Ani artışlar rastgele aralıklarla gerçekleşir. Yük düzeninin ortaya çıkması birkaç dakika sürer. Yükü izlemeden önce oluşturucunun en az üç veya dört dakika çalışmasına izin verin.

  1. PowerShell ISE'de ...\Learning Modules\Utilities\Demo-LoadGenerator.ps1 betiğini açın.
  2. Betiği çalıştırmak ve yük oluşturucuyu başlatmak için F5 tuşuna basın. Şimdilik varsayılan parametre değerlerini bırakın.
  3. Azure hesabınızda oturum açın ve gerekirse kullanmak istediğiniz aboneliği seçin.

Yük oluşturucu betiği katalogdaki her veritabanı için bir arka plan işi başlatır ve ardından durur. Yük oluşturucu betiğini yeniden çalıştırırsanız, yenilerini başlatmadan önce çalışan arka plan işlerini durdurur.

Arka plan işlerini izleme

Arka plan işlerini denetlemek ve izlemek istiyorsanız aşağıdaki cmdlet'leri kullanın:

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

Demo-LoadGenerator.ps1 eylemleri

Demo-LoadGenerator.ps1 , müşteri işlemlerinin etkin bir iş yükünü taklit eder. Aşağıdaki adımlar Demo-LoadGenerator.ps1 tarafından başlatılan eylemlerin sırasını açıklar:

  1. Demo-LoadGenerator.ps1 ön planda LoadGenerator.ps1'i başlatır.

    • Her iki .ps1 dosyası da Learning Modules\Utilities\ klasörleri altında depolanır.
  2. LoadGenerator.ps1 , katalogdaki tüm kiracı veritabanlarında döngü oluşturur.

  3. LoadGenerator.ps1 , her kiracı veritabanı için bir arka plan PowerShell işi başlatır:

    • Varsayılan olarak, arka plan işleri 120 dakika boyunca çalışır.
    • Her iş, sp_CpuLoadGenerator yürüterek bir kiracı veritabanında CPU tabanlı yüke neden olur. Yükün yoğunluğu ve süresi öğesine bağlı $DemoScenarioolarak değişir.
    • sp_CpuLoadGenerator, yüksek CPU yüküne neden olan bir SQL SELECT deyiminin çevresinde döngüler oluşturur. SELECT sorunları arasındaki zaman aralığı, denetlenebilir bir CPU yükü oluşturmak için parametre değerlerine göre değişir. Daha gerçekçi yüklerin simülasyonunu yapmak için yük düzeyleri ve aralıklar rastgele oluşturulur.
    • Bu .sql dosyası WingtipTenantDB\dbo\StoredProcedures\ altında depolanır.
  4. ise $OneTime = $false, yük oluşturucu arka plan işlerini başlatır ve çalışmaya devam eder. Her 10 saniyede bir, sağlanan yeni kiracıları izler. ayarlarsanız $OneTime = $true, LoadGenerator arka plan işlerini başlatır ve ön planda çalışmayı durdurur. Bu öğretici için bırakın $OneTime = $false.

    Yük oluşturucuyu durdurmak veya yeniden başlatmak istiyorsanız Ctrl-C veya Durdurma İşlemi Ctrl-Break kullanın.

    Yük oluşturucuyu ön planda çalışır durumda bırakırsanız, diğer PowerShell betiklerini çalıştırmak için başka bir PowerShell ISE örneği kullanın.

 

Sonraki bölüme devam etmeden önce yük oluşturucuyu iş çağırma durumunda çalışır durumda bırakın.

Yeni bir kiracı sağlama

İlk dağıtım üç örnek kiracı oluşturur. Şimdi dağıtılan uygulama üzerindeki etkisini görmek için başka bir kiracı oluşturursunuz. Wingtip uygulamasında, yeni kiracı sağlamaya yönelik iş akışı Sağlama ve katalog öğreticisinde açıklanmıştır. Bu aşamada, bir dakikadan az süren yeni bir kiracı oluşturursunuz.

  1. Yeni bir PowerShell ISE açın.

  2. ...\Learning Modules\Provision and Catalog\Demo-ProvisionAndCatalog.ps1 dosyasını açın.

  3. Betiği çalıştırmak için F5 tuşuna basın. Şimdilik varsayılan değerleri bırakın.

    Dekont

    Birçok Wingtip SaaS betikleri, diğer betiklerdeki işlevleri çağırmak üzere klasörlere göz atmak için $PSScriptRoot kullanır. Bu değişken yalnızca F5 tuşuna basılarak tam betik yürütülürken değerlendirilir. SeçimiN F8 ile vurgulanması ve çalıştırılması hatalara neden olabilir. Betikleri çalıştırmak için F5 tuşuna basın.

Yeni kiracı veritabanı:

  • SQL elastik havuzunda oluşturulur.
  • Başlatılan.
  • Kataloğa kaydedildi.

Sağlama başarılı olduktan sonra, tarayıcınızda yeni kiracının Olaylar sitesi görüntülenir.

New tenant

Yeni kiracının listede görünmesini sağlamak için Olay Hub'ını yenileyin.

Sunucuları, havuzları ve kiracı veritabanlarını öğrenme

Artık kiracı koleksiyonunda bir yük çalıştırmaya başladığınıza göre, dağıtılan bazı kaynaklara göz atalım.

  1. Azure portalında SQL sunucuları listenize göz atın. Ardından catalog-dpt-USER<> sunucusunu açın.

    • Katalog sunucusu, tenantcatalog ve basetenantdb (yeni kiracı oluşturmak için kopyalanan şablon veritabanı) olmak üzere iki veritabanı içerir.

    Screenshot that shows a catalog server Overview page with the two databases.

  2. SQL sunucuları listenize geri dönün.

  3. Kiracı veritabanlarını barındıran tenants1-dpt-USER<> sunucusunu açın.

  4. Aşağıdaki öğelere bakın:

    • Her kiracı veritabanı, 50 eDTU standart havuzundaki bir Elastik Standart veritabanıdır.
    • Red Maple Racing veritabanı, daha önce sağladığınız kiracı veritabanıdır.

    Screenshot that shows the four databases in the server with red maple racing database highlighted.

Havuzu izleme

LoadGenerator.ps1 birkaç dakika çalıştıktan sonra, bazı izleme özelliklerine bakmaya başlamak için yeterli veri kullanılabilir olmalıdır. Bu özellikler havuzlarda ve veritabanlarında yerleşik olarak bulunur.

Sunucu kiracılarına1-dpt-user<> göz atın ve havuzun kaynak kullanımını görüntülemek için Havuz1'i seçin. Aşağıdaki grafiklerde yük oluşturucu bir saat boyunca çalıştı.

Monitor pool

  • Kaynak kullanımı etiketli ilk grafik, havuz eDTU kullanımını gösterir.
  • İkinci grafik, havuzdaki en etkin beş veritabanının eDTU kullanımını gösterir.

İki grafik, elastik havuzların ve SQL Veritabanı öngörülemeyen SaaS uygulama iş yüklerine çok uygun olduğunu göstermektedir. Grafikler her birinin 40 eDTU'ya kadar arttığını ve tüm veritabanlarının 50 eDTU havuzu tarafından rahatça desteklendiğini göstermektedir. 50-eDTU havuzu daha da ağır iş yüklerini destekleyebilir. Veritabanları tek veritabanları olarak sağlanıyorsa, seri artışları desteklemek için her birinin bir S2 (50 DTU) olması gerekir. Dört tek S2 veritabanının maliyeti havuzun fiyatının neredeyse üç katıdır. Gerçek dünyadaki durumlarda, SQL Veritabanı müşteriler 200 eDTU havuzunda 500'e kadar veritabanı çalıştırır. Daha fazla bilgi için Bkz . Performans izleme öğreticisi.

Ek kaynaklar

Sonraki adımlar

Bu öğreticide şunları öğrendiniz:

  • Wingtip Biletleri SaaS uygulamasını dağıtma.
  • Uygulamayı oluşturan sunucular, havuzlar ve veritabanları hakkında.
  • Kiracıların katalogla verilerine nasıl eşlendiği.
  • Yeni kiracılar sağlama.
  • Kiracı etkinliğini izlemek için havuz kullanımını görüntüleme.
  • İlgili faturalamayı durdurmak için örnek kaynakları silme.

Ardından Sağlama ve katalog öğreticisini deneyin.