Parçalı çok kiracılı bir uygulamayı dağıtma ve keşfetme

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

Bu öğreticide Wingtip Biletleri adlı örnek bir çok kiracılı SaaS uygulamasını dağıtıp keşfedeceksiniz. Wingtip Biletleri uygulaması, SaaS senaryolarının uygulanmasını basitleştiren Azure SQL Veritabanı özelliklerini göstermek için tasarlanmıştır.

Wingtip Biletleri uygulamasının bu uygulamasında parçalı çok kiracılı veritabanı deseni kullanılır. Parçalama kiracı tanımlayıcısı tarafından yapılır. Kiracı verileri, kiracı tanımlayıcı değerlerine göre belirli bir veritabanına dağıtılır.

Bu veritabanı düzeni, her parçada veya veritabanında bir veya daha fazla kiracı depolamanıza olanak tanır. Her veritabanının birden çok kiracı tarafından paylaştırılarak en düşük maliyet için iyileştirme yapabilirsiniz. Ya da her veritabanı yalnızca bir kiracı depolayarak yalıtım için iyileştirebilirsiniz. İyileştirme seçiminiz her bir kiracı için bağımsız olarak yapılabilir. Kiracı ilk kez depolandığında seçiminizi yapabilir veya daha sonra fikrinizi değiştirebilirsiniz. Uygulama her iki şekilde de düzgün çalışacak şekilde tasarlanmıştır.

Uygulama hızla dağıtılır

Uygulama Azure bulutunda çalışır ve Azure SQL Veritabanı kullanır. Aşağıdaki dağıtım bölümünde mavi Azure'a dağıt düğmesi sağlanır. Düğmeye basıldığında, uygulama beş dakika içinde Azure aboneliğinize tamamen dağıtılır. Tek tek uygulama bileşenleriyle çalışmak için tam erişiminiz vardır.

Uygulama üç örnek kiracı için verilerle dağıtılır. Kiracılar tek bir çok kiracılı veritabanında birlikte depolanır.

Herkes GitHub deposundan Wingtip Biletleri için C# ve PowerShell kaynak kodunu indirebilir.

Bu öğreticide bilgi edinin

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

Bu ilk dağıtımın üzerine derlenen bir dizi ilgili öğretici mevcuttur. Öğreticilerde çeşitli SaaS tasarım ve yönetim desenleri incelenmektedir. Öğreticiler boyunca çalışırken, farklı SaaS desenlerinin nasıl uygulandığını görmek için sağlanan betiklerde adım adım ilerleyebilirsiniz.

Ön koşullar

Bu öğreticiyi tamamlamak için aşağıdaki ön koşulların karşılandığından emin olun:

  • En son Azure PowerShell yüklüdür. Ayrıntılar için bkz . Azure PowerShell'i kullanmaya başlama.

Wingtip Biletleri uygulamasını dağıtma

Adları planlama

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

  • User:af1(Baş harfleri ve bir basamak. Uygulamayı ikinci kez dağıtırsanız farklı bir değer (örn. af2) kullanın.)
  • Kaynak grubu:wingtip-mt-af1(wingtip-mt, bunun parçalanmış çok kiracılı uygulama olduğunu gösterir. Af1 kullanıcı adının eklenmesi, kaynak grubu adını içerdiği kaynakların adlarıyla ilişkilendirilir.)

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

Adımlar

  1. Aşağıdaki mavi Azure'a dağıt düğmesine tıklayın.

    • Wingtip Biletleri SaaS dağıtım şablonuyla Azure portalını açar.

      Button for Deploy to Azure.

  2. Dağıtım için gerekli parametre değerlerini girin.

    Önemli

    Bu tanıtım için önceden var olan kaynak gruplarını, sunucuları veya havuzları kullanmayın. Bunun yerine Yeni kaynak grubu oluştur'u seçin. İlgili faturalandırmayı durdurmak için uygulamayla işiniz bittiğinde bu kaynak grubunu silin. Bu uygulamayı veya oluşturduğu kaynakları üretim için kullanmayın. Kimlik doğrulamasının bazı yönleri ve sunucu güvenlik duvarı ayarları, gösterimi kolaylaştırmak için uygulamada kasıtlı olarak güvenli değildir.

    • Kaynak grubu için - Yeni oluştur'u seçin ve kaynak grubu için bir Ad sağlayın (büyük/küçük harfe duyarlı).
      • Açılan listeden bir Konum seçin.
    • Kullanıcı için - Kısa bir Kullanıcı değeri seçmenizi öneririz.
  3. Uygulamayı dağıtın.

    • Hüküm ve koşulları kabul etmek için tıklayın.
    • Satın al’a tıklayın.
  4. Arama kutusunun sağındaki zil simgesi olan Bildirimler'e tıklayarak dağıtım durumunu izleyin. Wingtip uygulamasının dağıtılması yaklaşık beş dakika sürer.

    deployment succeeded

Yönetim betiklerini indirme ve engellemesini kaldırma

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

Dekont

Zip dosyaları bir dış kaynaktan indirilip ayıklandığında yürütülebilir içerik (betikler, DLL'ler) Windows tarafından engellenebilir. Bir zip dosyasından betikleri ayıklarken, ayıklamadan önce .zip dosyasının engelini kaldırmak için aşağıdaki adımları kullanın. .zip dosyasının engelini kaldırarak betiklerin çalışmasına izin verildiğinden emin olun.

  1. WingtipTicketsSaaS-MultiTenantDb GitHub deposuna göz atın.
  2. Kopyala veya indir'e tıklayın.
  3. ZIP İndir'e tıklayın ve dosyayı kaydedin.
  4. WingtipTicketsSaaS-MultiTenantDb-master.zip dosyasına sağ tıklayın ve Özellikler'i seçin.
  5. Genel sekmesinde Engellemeyi Kaldır'ı seçin ve Uygula'ya tıklayın.
  6. Tamam'a tıklayın.
  7. Dosyaları ayıklayın.

Betikler ,.. \WingtipTicketsSaaS-MultiTenantDb-master\Learning Modules\ klasörü.

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

Betikleri çalıştırmadan önce UserConfig.psm1 dosyasında kaynak grubunu ve kullanıcı değerlerini ayarlayın. Bu değişkenleri dağıtım sırasında ayarladığınız değerlerle 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 dosyada ayarlanan değerler tüm betikler tarafından kullanıldığından, doğru olmaları önemlidir. Uygulamayı yeniden dağıtıyorsanız, Kullanıcı ve Kaynak Grubu için farklı değerler seçmeniz gerekir. Ardından UserConfig.psm1 dosyasını yeni değerlerle yeniden güncelleştirin.

Uygulamayı çalıştırma

Wingtip uygulamasında kiracılar mekandır. Bir mekan konser salonu, spor kulübü veya etkinliklere ev sahipliği yapan başka bir konum olabilir. Mekanlar Wingtip'e müşteri olarak kaydedilir ve her mekan için bir kiracı tanımlayıcısı oluşturulur. Her mekan Wingtip'te yaklaşan etkinlikleri listeler, böylece halk etkinliklere bilet satın alabilir.

Her mekan, etkinliklerini listelemek ve bilet satmak için kişiselleştirilmiş bir web uygulaması alır. Her web uygulaması bağımsızdır ve diğer kiracılardan yalıtılır. dahili olarak Azure SQL Veritabanı her kiracının verileri varsayılan olarak parçalanmış çok kiracılı bir veritabanında depolanır. Tüm veriler kiracı tanımlayıcısıyla etiketlenir.

Merkezi bir Olay Hub'ı web sayfası, belirli bir dağıtımınızdaki kiracıların bağlantılarının listesini sağlar. Olay Hub'ı web sayfasını ve tek bir web uygulamasını deneyimlemek için aşağıdaki adımları kullanın:

  1. Olay Hub'ını web tarayıcınızda açın:

    • http://events.wingtip-mt.<user.trafficmanager.net> (Kullanıcıyı> dağıtımınızın kullanıcı değeriyle değiştirin<.)

      events hub

  2. Olay Hub’ındaFabrikam Caz Kulübü’ne tıklayın.

    Events

Azure Traffic Manager

Gelen isteklerin dağıtımını denetlemek için Wingtip uygulaması Azure Traffic Manager'ı kullanır. Her kiracının olaylar sayfası, URL'sinde kiracı adını içerir. Her URL ayrıca kendi Kullanıcı değerinizi de içerir. Her URL, aşağıdaki adımları kullanarak gösterilen biçime uyar:

  • http://events.wingtip-mt.<user.trafficmanager.net/> fabrikamjazzclub
  1. Olaylar uygulaması, URL'den kiracı adını ayrıştırıyor. Kiracı adı, önceki örnek URL'de fabrikamjazzclub şeklindedir.
  2. Ardından uygulama, parça eşleme yönetimini kullanarak kataloğa erişmek için bir anahtar oluşturmak için kiracı adını karma olarak oluşturur.
  3. Uygulama katalogdaki anahtarı bulur ve kiracının veritabanının ilgili konumunu alır.
  4. Uygulama, kiracının tüm verilerini içeren veritabanını bulmak ve bu veritabanına erişmek için konum bilgilerini kullanır.

Olay Hub'ı

  1. Olay Hub'ı, kataloğa kayıtlı tüm kiracıları ve bunların mekanlarını listeler.
  2. Olay Hub'ı, URL'leri oluşturmak üzere her eşlemeyle ilişkili kiracının adını almak için katalogdaki genişletilmiş meta verileri kullanır.

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

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 her kiracı için çalışan bir iş yükü başlatır. Çoğu SaaS uygulamasındaki gerçek dünya yükü genellikle düzensiz ve öngörülemezdir. Oluşturucu, bu yük türünün benzetimini yapmak için tüm kiracılara dağıtılmış bir yük oluşturur. Yük, rastgele aralıklarla gerçekleşen her kiracıda rastgele artışlar içerir. Yük düzeninin ortaya çıkması birkaç dakika sürer, bu nedenle yükü izlemeden önce oluşturucunun en az üç veya dört dakika çalışmasına izin vermek en iyisidir.

  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’e basın (şimdilik varsayılan parametre değerlerini bırakın).

Demo-LoadGenerator.ps1 betiği, yük oluşturucunun çalıştığı başka bir PowerShell oturumu açar. Yük oluşturucu bu oturumda her kiracı için bir tane olmak üzere arka plan yük oluşturma işlerini çağıran bir ön plan görevi olarak çalışır.

Ön plan görevi başladıktan sonra iş çağırma durumunda kalır. Görev, daha sonra sağlanan tüm yeni kiracılar için ek arka plan işleri başlatır.

PowerShell oturumunun kapatılması tüm işleri durdurur.

Farklı parametre değerleri kullanmak için yük oluşturucu oturumunu yeniden başlatmak isteyebilirsiniz. Öyleyse PowerShell oluşturma oturumunu kapatın ve Demo-LoadGenerator.ps1 dosyasını yeniden çalıştırın.

Parçalı veritabanına yeni bir kiracı sağlama

İlk dağıtım, Tenants1 veritabanında üç örnek kiracı içerir. Şimdi başka bir kiracı oluşturalım ve dağıtılan uygulama üzerindeki etkilerini gözlemleyelim. Bu adımda, yeni bir kiracı oluşturmak için bir tuşa basın:

  1. PowerShell ISE'de ...\Learning Modules\Provision and Catalog\Demo-ProvisionTenants.ps1 dosyasını açın.

  2. Betiği çalıştırmak için F5 tuşuna (F8'e değil) basın (şimdilik varsayılan değerleri bırakın).

    Dekont

    Betiğin seçili bir bölümünü çalıştırmak için F8 tuşuna basarak değil, PowerShell betiklerini yalnızca F5 tuşuna basarak çalıştırmanız gerekir. F8 ile ilgili sorun, $PSScriptRoot değişkeninin değerlendirilmemesidir. Bu değişken, klasörlerde gezinmek, diğer betikleri çağırmak veya modülleri içeri aktarmak için birçok betik tarafından gereklidir.

Yeni Red Maple Racing kiracısı Tenants1 veritabanına eklenir ve kataloğa kaydedilir. Yeni kiracının bilet satan Etkinlikler sitesi tarayıcınızda açılır:

New tenant

Olay Hub'ını yenilediğinizde yeni kiracı listede görünür.

Kendi veritabanında yeni bir kiracı sağlama

Parçalı çok kiracılı model, yeni bir kiracıyı başka kiracıları içeren bir veritabanına mı yoksa kendi veritabanına mı sağlamayı seçmenizi sağlar. Kendi veritabanında yalıtılmış bir kiracı aşağıdaki avantajlardan yararlanır:

  • Kiracı veritabanının performansı, diğer kiracıların gereksinimlerinden ödün vermeye gerek kalmadan yönetilebilir.
  • Gerekirse, başka hiçbir kiracı etkilenmeyeceğinden veritabanı zamanın önceki bir noktasına geri yüklenebilir.

Çok kiracılı veritabanlarına ücretsiz deneme müşterileri veya ekonomi müşterileri yerleştirmeyi seçebilirsiniz. Her premium kiracıyı kendi ayrılmış veritabanına yerleştirebilirsiniz. Yalnızca bir kiracı içeren çok sayıda veritabanı oluşturursanız, kaynak maliyetlerini iyileştirmek için hepsini bir elastik havuzda topluca yönetebilirsiniz.

Ardından, bu kez kendi veritabanında başka bir kiracı sağladık:

  1. ...\Learning Modules\Provision and Catalog\Demo-ProvisionTenants.ps1'de $TenantName Salix Salsa olarak değiştirin $VenueTypedans edin ve 2'ye $Scenario.

  2. Betiği yeniden çalıştırmak için F5 tuşuna basın.

    • Bu F5 basın, yeni kiracıyı ayrı bir veritabanında sağlar. Veritabanı ve kiracı kataloğa kaydedilir. Ardından tarayıcı kiracının Olaylar sayfasında açılır.

    Salix Salsa events page

    • Sayfanın en altına inin. Başlıkta, kiracı verilerinin depolandığı veritabanı adını görürsünüz.
  3. Olay Hub'ını yenilediğinizde iki yeni kiracı listede görünür.

Sunucuları ve kiracı veritabanlarını keşfetme

Şimdi dağıtılan bazı kaynaklara bakacağız:

  1. Azure portalında kaynak grupları listesine göz atın. Uygulamayı dağıtırken oluşturduğunuz kaynak grubunu açın.

    resource group

  2. catalog-mt<kullanıcı> sunucusu'na tıklayın. Katalog sunucusu tenantcatalog ve basetenantdb adlı iki veritabanı içerir. basetenantdb veritabanı boş bir şablon veritabanıdır. İster çok kiracı ister tek bir kiracı için kullanılsın, yeni bir kiracı veritabanı oluşturmak için kopyalanır.

    Screenshot of the server Overview page that shows tenant catalog and base tenant db databases.

  3. Kaynak grubuna geri dönün ve kiracı veritabanlarını barındıran tenants1-mt sunucusunu seçin.

    • tenants1 veritabanı, özgün üç kiracının ve eklediğiniz ilk kiracının depolandığı çok kiracılı bir veritabanıdır. 50 DTU Standart veritabanı olarak yapılandırılır.
    • Salixsalsa veritabanı, Salix Salsa dans mekanını tek kiracısı olarak barındırmaktadır. Varsayılan olarak 50 DTU'ya sahip bir Standart sürüm veritabanı olarak yapılandırılır.

    Screenshot of the tenants1-mt server Overview page that shows the salixsalsa and tenants1 databases.

Veritabanının performansını izleme

Yük oluşturucu birkaç dakikadır çalışıyorsa, Azure portalında yerleşik olarak bulunan veritabanı izleme özelliklerine bakmak için yeterli telemetri kullanılabilir.

  1. Tenants1-mt<kullanıcı> sunucusuna göz atın ve kiracılar1'e tıklayarak içinde dört kiracı bulunan veritabanının kaynak kullanımını görüntüleyin. Her kiracı, yük oluşturucudan gelen düzensiz bir ağır yüke tabidir:

    monitor tenants1

    DTU kullanım grafiği, çok kiracılı bir veritabanının birçok kiracıda öngörülemeyen bir iş yükünü nasıl destekleyebileceğinizi güzel bir şekilde gösterir. Bu durumda, yük oluşturucu her kiracıya kabaca 30 DTU'lardan oluşan düzensiz bir yük uyguluyor. Bu yük, 50 DTU veritabanının %60 kullanımına eşittir. %60'ı aşan tepeler, yükün aynı anda birden fazla kiracıya uygulanması sonucu elde edilir.

  2. tenants1-mt<kullanıcı> sunucusuna gidin ve salixsalsa veritabanına tıklayın. Bu veritabanında yalnızca bir kiracı içeren kaynak kullanımını görebilirsiniz.

    salixsalsa database

Yük oluşturucu, her kiracının hangi veritabanında olduğuna bakılmaksızın her kiracıya benzer bir yük uyguluyor. Salixsalsa veritabanında yalnızca bir kiracı varsa, veritabanının birkaç kiracısı olan veritabanından çok daha yüksek bir yüke dayanabileceğini görebilirsiniz.

Kaynak ayırmaları iş yüküne göre farklılık gösterir

Bazen çok kiracılı bir veritabanı, iyi performans için tek kiracılı bir veritabanından daha fazla kaynak gerektirir, ancak her zaman gerekmez. Kaynakların en uygun şekilde ayrılması, sisteminizdeki kiracılar için belirli iş yükü özelliklerine bağlıdır.

Yük oluşturucu betiği tarafından oluşturulan iş yükleri yalnızca çizim amaçlıdır.

Ek kaynaklar

Sonraki adımlar

Bu öğreticide şunları öğrendiniz:

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

Şimdi Sağlama ve katalog öğreticisini deneyin.