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 kullanılmaktadı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şılmasıyla en düşük maliyeti en iyi duruma getirebilirsiniz. Ya da her veritabanının yalnızca bir kiracı depolamasını sağlayarak yalıtım için iyileştirebilirsiniz. İyileştirme seçiminiz, belirli kiracılar için bağımsız olarak yapılabilir. Kiracı ilk kez depolandığında seçiminiz yapılabilir veya daha sonra fikrinizi değiştirebilirsiniz. Uygulama her iki şekilde de iyi çalışacak şekilde tasarlanmıştır.

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

Uygulama Azure bulutunda çalışır ve Azure SQL Veritabanı'nı kullanır. Aşağıdaki dağıtım bölümü mavi Azure'a Dağıt düğmesini sağlar. 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ının verileriyle dağıtılır. Kiracılar tek bir çok kiracılı veritabanında birlikte depolanır.

Wingtip Biletleri için C# ve PowerShell kaynak kodunu GitHub deposundan herkes 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. Öğreticileri incelediğinizde, farklı SaaS desenlerinin nasıl uygulandığını görmek için sağlanan betikleri adım adım izlemeniz teşvik edilir.

Önkoşullar

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

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 rakam. Uygulamayı ikinci kez dağıtırsanız farklı bir değer (örn. af2) kullanın.)
  • Kaynak grubu:wingtip-mt-af1(wingtip-mt, bunun parçalı ç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 açar.

      Azure'a Dağıt düğmesi.

  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.

    dağıtım başarılı

Yönetim betiklerini indirme ve engellemesini kaldırma

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

Not

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ğ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 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 yer 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 yapılacak 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ı'nda her kiracının verileri varsayılan olarak parçalı ç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<.)

      olay hub’ı

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

    Ekinlikler

Azure Traffic Manager

Wingtip uygulaması gelen isteklerin dağıtımını denetlemek için 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ı, kiracı adını URL'den 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 ekler.
  3. Uygulama, anahtarı katalogda 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 internet 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ığından, şimdi uygulamayı çalışır duruma getirelim! Demo-LoadGenerator PowerShell betiği, her kiracı için çalışan bir iş yükü başlatır. Birçok SaaS uygulamasındaki gerçek dünya yükü genellikle düzensiz ve tahmin edilemez. Bu yük türünün benzetimini yapmak için oluşturucu tüm kiracılara dağıtılmış bir yük üretir. Yük, her kiracıda rastgele aralıklarla gerçekleşen 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şlatıldıktan sonra iş çağırma durumunda kalır. Görev, daha sonra sağlanan yeni kiracılar için ek arka plan işleri başlatır.

PowerShell oturumunu kapatmak 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.ps1yeniden ç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, bir tuşa basarak yeni bir kiracı oluşturursunuz:

  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).

    Not

    PowerShell betiklerini, betiğin seçili bir bölümünü çalıştırmak için F8 tuşuna basarak değil, 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 birçok betik tarafından klasörlerde gezinmek, diğer betikleri çağırmak veya modülleri içeri aktarmak için 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:

Yeni kiracı

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

Kendi veritabanında yeni bir kiracı sağlama

Parçalı çok kiracılı model, yeni bir kiracıyı diğer kiracıları içeren bir veritabanına mı yoksa kendi veritabanına mı sağlamayı seçmenize olanak tanır. 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 içinde daha önceki bir noktaya 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 bunların tümünü 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.ps1içinde, $TenantNameSalix Salsa olarak değiştirin, dans etmek için $VenueType ve 2'ye$Scenario.

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

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

    Salix Salsa olayları sayfası

    • 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 kaynak grupları listesine göz atın. Uygulamayı dağıtırken oluşturduğunuz kaynak grubunu açın.

    kaynak grubu

  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.

    katalog sunucusu seçeneğine tıklayın

  3. Kaynak grubuna Geri dö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ırıyor. Varsayılan olarak 50 DTU'ya sahip bir Standart sürüm veritabanı olarak yapılandırılır.

    kiracılar sunucusu

Veritabanının performansını izleme

Yük oluşturucu birkaç dakikadır çalışıyorsa, Azure portal yerleşik 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:

    kiracıları izleme1

    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östermektedir. Bu durumda, yük oluşturucu her kiracıya yaklaşık 30 DTU'lık 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ının sonucu olur.

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

    salixsalsa veritabanı

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ı bulunduğunda, veritabanının birkaç kiracısı olan veritabanından çok daha yüksek bir yüke sahip olabileceğ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.