Aracılığıyla paylaş


Öğretici: Kapsayıcı uygulamasını ölçeklendirme

Azure Container Apps, bir dizi bildirim temelli ölçeklendirme kuralı aracılığıyla otomatik yatay ölçeklendirmeyi yönetir. Kapsayıcı uygulamasının ölçeği genişletildikçe, kapsayıcı uygulamasının yeni örnekleri isteğe bağlı olarak oluşturulur. Bu örnekler çoğaltma olarak bilinir.

Bu öğreticide kapsayıcı uygulamanıza bir HTTP ölçek kuralı ekleyecek ve uygulamanızın ölçeklendirilişini gözlemleyeceksiniz.

Önkoşullar

Gereksinim Yönergeler
Azure hesabı Azure hesabınız yoksa ücretsiz olarak bir hesap oluşturabilirsiniz.

Devam etmek için Azure aboneliğinde Katkıda Bulunan iznine sahip olmanız gerekir. Ayrıntılar için Bkz. Azure portalını kullanarak Azure rolleri atama.
GitHub Hesabı Ücretsiz bir tane edinin.
Azure CLI Azure CLI’yi yükleyin.

Ayarlama

CLI'dan Azure'da oturum açmak için aşağıdaki komutu çalıştırın ve istemleri izleyerek kimlik doğrulama işlemini tamamlayın.

az login

CLI'nın en son sürümünü çalıştırdığınızdan emin olmak için yükseltme komutunu çalıştırın.

az upgrade

Ardından CLI için Azure Container Apps uzantısını yükleyin veya güncelleştirin.

Azure CLI'da komutları veya PowerShell'deki modülden az containerapp cmdlet'leri çalıştırdığınızda Az.App eksik parametrelerle ilgili hatalar alırsanız, Azure Container Apps uzantısının en son sürümünü yüklediğinizden emin olun.

az extension add --name containerapp --upgrade

Not

Mayıs 2024'den itibaren Azure CLI uzantıları artık önizleme özelliklerini varsayılan olarak etkinleştirmez. Container Apps önizleme özelliklerine erişmek için ile --allow-preview trueContainer Apps uzantısını yükleyin.

az extension add --name containerapp --upgrade --allow-preview true

Geçerli uzantı veya modül yüklendikten sonra ve Microsoft.App ad alanlarını kaydedinMicrosoft.OperationalInsights.

az provider register --namespace Microsoft.App
az provider register --namespace Microsoft.OperationalInsights

Kapsayıcı uygulamasını oluşturma ve dağıtma

komutuyla kapsayıcı uygulamanızı oluşturun ve dağıtın containerapp up . Bu komut bir oluşturur:

  • Kaynak grubu
  • Container Apps ortamı
  • Log Analytics çalışma alanı

Bu kaynaklardan herhangi biri zaten varsa, komut yenilerini oluşturmak yerine mevcut kaynakları kullanır.

Son olarak, komut bir genel kapsayıcı görüntüsü olan mcr.microsoft.com/dotnet/samples:aspnetapp kullanılarak kapsayıcı uygulamasını oluşturur ve dağıtır. Bu görüntü, bu makalede oluşturduğunuz ölçek kurallarını tetiklemek için kullanılır. Bu yordamı tamamlamak için .NET'i bilmeniz veya kullanmanız gerekmez.

az containerapp up \
  --name my-container-app \
  --resource-group my-container-apps \
  --location centralus \
  --environment 'my-container-apps' \
  --image mcr.microsoft.com/dotnet/samples:aspnetapp \
  --target-port 8080 \
  --ingress external \
  --query properties.configuration.ingress.fqdn \

Not

parametresinin değerinin --image küçük harf olduğundan emin olun.

olarak ayarlayarak --ingressexternalkapsayıcı uygulamasını genel istekler için kullanılabilir hale getirirsiniz.

komut, up kapsayıcı uygulaması için tam etki alanı adını (FQDN) döndürür. Bu FQDN'yi bir metin dosyasına kopyalayın. İstekleri gönder bölümünde bunu kullanırsınız. FQDN'niz aşağıdaki örneğe benzer:

https://my-container-app.icydune-96848328.centralus.azurecontainerapps.io

Ölçek kuralı ekleme

komutunu çalıştırarak az containerapp update kapsayıcı uygulamanıza bir HTTP ölçek kuralı ekleyin.

az containerapp update \
    --name my-container-app \
    --resource-group my-container-apps \
    --min-replicas 1 \
    --max-replicas 10 \
    --scale-rule-name my-http-scale-rule \
    --scale-rule-http-concurrency 1

Bu komut, kapsayıcı uygulamanıza adı my-http-scale-rule ve eşzamanlılık ayarıyla 1bir HTTP ölçek kuralı ekler. Uygulamanız birden fazla eşzamanlı HTTP isteği alıyorsa, çalışma zamanı istekleri işlemek için uygulamanızın çoğaltmalarını oluşturur.

Komut, update isteğinizin başarılı olduğunu doğrulamak için yeni yapılandırmayı JSON yanıtı olarak döndürür.

Günlük çıkışını başlatma

Container Apps çalışma zamanı tarafından oluşturulan günlükleri görüntüleyerek uygulama ölçeklendirmenizin etkilerini gözlemleyebilirsiniz. az containerapp logs show Günlük girdilerini dinlemeye başlamak için komutunu kullanın.

az containerapp logs show \
    --name my-container-app \
    --resource-group my-container-apps \
    --type=system \
    --follow=true

Komut, show kapsayıcı uygulamanız için sistem günlüklerindeki girişleri gerçek zamanlı olarak döndürür. Aşağıdaki örneğe benzer bir yanıt bekleyebilirsiniz:

{
    "TimeStamp":"2023-08-01T16:49:03.02752",
    "Log":"Connecting to the container 'my-container-app'..."
}
{
    "TimeStamp":"2023-08-01T16:49:03.04437",
    "Log":"Successfully Connected to container:
    'my-container-app' [Revision: 'my-container-app--9uj51l6',
    Replica: 'my-container-app--9uj51l6-5f96557ffb-5khg9']"
}
{
    "TimeStamp":"2023-08-01T16:47:31.9480811+00:00",
    "Log":"Microsoft.Hosting.Lifetime[14]"
}
{
    "TimeStamp":"2023-08-01T16:47:31.9481264+00:00",
    "Log":"Now listening on: http://[::]:80"
}
{
    "TimeStamp":"2023-08-01T16:47:31.9490917+00:00",
    "Log":"Microsoft.Hosting.Lifetime[0]"
}
{
    "TimeStamp":"2023-08-01T16:47:31.9491036+00:00",
    "Log":"Application started. Press Ctrl+C to shut down."
}
{
    "TimeStamp":"2023-08-01T16:47:31.949723+00:00",
    "Log":"Microsoft.Hosting.Lifetime[0]"
}
{
    "TimeStamp":"2023-08-01T16:47:31.9497292+00:00",
    "Log":"Hosting environment: Production"
}
{
    "TimeStamp":"2023-08-01T16:47:31.9497325+00:00",
    "Log":"Microsoft.Hosting.Lifetime[0]"
}
{
    "TimeStamp":"2023-08-01T16:47:31.9497367+00:00",
    "Log":"Content root path: /app/"
}

Daha fazla bilgi için bkz . az containerapp logs.

İstek gönderme

Yeni bir bash kabuğu açın. Öğesini Kapsayıcı uygulamasını oluşturma ve dağıtma<YOUR_CONTAINER_APP_FQDN>kapsayıcı uygulamanızın tam etki alanı adıyla değiştirerek aşağıdaki komutu çalıştırın.

seq 1 50 | xargs -Iname -P10 curl "<YOUR_CONTAINER_APP_FQDN>"

Bu komutlar, kapsayıcı uygulamanıza her biri 10 isteğin eşzamanlı toplu işlemleri halinde 50 istek gönderir.

Komut veya bağımsız değişken Açıklama
seq 1 50 1'den 50'ye kadar bir sayı dizisi oluşturur.
| Kanal işleci, diziyi komutuna xargs gönderir.
xargs Belirtilen URL ile çalışır curl
-Iname çıktısı seqiçin yer tutucu işlevi görür. Bu bağımsız değişken, dönüş değerinin komuta gönderilmesini curl engeller.
curl Verilen URL'yi çağırır.
-P10 Bir kerede en fazla 10 işlem çalıştırma yönergelerini xargs sağlar.

Daha fazla bilgi için şu belgelere bakın:

komutu çalıştırdığınız az containerapp logs show ilk kabukta çıkışta aşağıdaki gibi bir veya daha fazla günlük girdisi bulunur.

{
    "TimeStamp":"2023-08-01 18:09:52 +0000 UTC",
    "Type":"Normal",
    "ContainerAppName":"my-container-app",
    "RevisionName":"my-container-app--00001111",
    "ReplicaName":"my-container-app--00001111-aaaaa22222-bbbb",
    "Msg":"Replica 'my-container-app--00001111-aaaaa22222-bbbb' has been scheduled to run on a node.",
    "Reason":"AssigningReplica",
    "EventSource":"ContainerAppController",
    "Count":0
}

Azure portalında ölçeklendirmeyi görüntüleme (isteğe bağlı)

  1. Azure Portal’ında oturum açın.

  2. Üstteki Arama çubuğuna my-container-app yazın.

  3. Arama sonuçlarında Kaynaklar'ın altında my-container-app öğesini seçin.

  4. Sol taraftaki gezinti çubuğunda Uygulama'yı genişletin ve Ölçek ve çoğaltmalar'ı seçin.

  5. Ölçek ve Çoğaltmalar sayfasında Çoğaltmalar'ı seçin.

  6. Kapsayıcı uygulamanızda artık birden fazla çoğaltma çalışıyor.

    Kapsayıcı uygulaması çoğaltmalarının ekran görüntüsü.

    Yeni çoğaltmaları görmek için Yenile'yi seçmeniz gerekebilir.

  7. Sol taraftaki gezinti çubuğunda İzleme'yi genişletin ve Ölçümler'i seçin.

  8. Ölçümler sayfasında Ölçüm'leri İstekler olarak ayarlayın.

  9. Bölme uygula'yı seçin.

  10. Değerler açılan listesini genişletin ve Çoğaltma'ya bakın.

  11. Bölmeyi düzenlemeyi tamamlamak için mavi onay işareti simgesini seçin.

  12. Grafik, kapsayıcı uygulamanız tarafından alınan istekleri çoğaltmaya göre bölünmüş olarak gösterir.

    Çoğaltmaya göre bölünmüş istekleri gösteren kapsayıcı uygulaması ölçümleri grafiği.

  13. Varsayılan olarak, grafik ölçeği 15 dakikalık zaman ayrıntı düzeyiyle son 24 saat olarak ayarlanır. Ölçeği seçin ve bir dakikalık zaman ayrıntı düzeyiyle son 30 dakikaya değiştirin. Uygula düğmesini seçin.

  14. Kapsayıcı uygulamanız tarafından alınan isteklerdeki son artışı vurgulamak için grafikte öğesini seçin ve sürükleyin.

    30 dakikalık bir ölçek ve bir dakikalık zaman ayrıntı düzeyine sahip istekleri çoğaltmaya göre bölen istekleri gösteren kapsayıcı uygulaması ölçümleri grafiğinin ekran görüntüsü.

    Aşağıdaki ekran görüntüsünde, kapsayıcı uygulamanız tarafından alınan isteklerin çoğaltmalar arasında nasıl bölündüğüne ilişkin yakınlaştırmalı bir görünüm gösterilmektedir.

    Kapsayıcı uygulaması ölçümleri grafiğinin ekran görüntüsü, isteklerin çoğaltmaya göre bölünmesini ve yakınlaştırılmış bir görünümde gösterilmesini sağlar.

CPU ve bellek ölçeklendirme

Mümkün olduğunda HTTP ölçek kurallarını CPU veya bellek ölçek kurallarına tercih etmelisiniz. CPU ve bellek ölçeklendirme, kapsayıcı uygulamanızın sıfıra ölçeklendirilmesine izin vermez.

CPU veya bellek ölçek kuralı ekledikten sonra kapsayıcı uygulamanıza istek göndererek ve Azure portalında ölçeklendirmeyi görüntüleyerek bunu test edebilirsiniz.

Ölçek uygulamanıza istek gönderdikten sonra, ölçek kuralının tetiklenip yeni çoğaltmaların oluşturulması bir dakika sürebilir.

CPU ölçeklendirme

CPU ölçeklendirme, cpu'nuzun ne kadar kullanıldığına bağlı olarak uygulamanızın ölçeğini daraltmasına veya genişletmesine olanak tanır.

Örneğin, kullanım değeri 50olan bir CPU ölçek kuralı oluşturursanız Azure Container Apps, tüm çoğaltmalar için ortalama CPU kullanımı 50%ulaştığında kapsayıcı uygulamanızın daha fazla çoğaltmasını oluşturur.

CPU ölçeklendirme, kapsayıcı uygulamanızın sıfıra ölçeklendirilmesine izin vermez. Bu tetikleyici hakkında daha fazla bilgi için bkz. KEDA CPU ölçek tetikleyicisi.

komutunu çalıştırarak az containerapp update kapsayıcı uygulamanıza bir CPU ölçek kuralı ekleyin.

Not

Zaten ölçek kuralı olan bir kapsayıcı uygulamasına ölçek kuralı eklemek için Azure CLI kullandığınızda, yeni ölçek kuralı eski ölçek kuralının yerini alır. Birden çok ölçek kuralı eklemeyi görmek için bkz . Birden çok ölçek kuralı.

Aşağıdaki komutu çalıştırmadan önce <PLACEHOLDERS> yerine kendi değerlerinizi yerleştirin. Bu öğreticide <UTILIZATION> ifadesini 1 ile değiştirin. Bu, tüm çoğaltmalar için ortalama CPU kullanımı 1%ulaştığında kapsayıcı uygulamanızın ölçeklendirilmesine neden olur. Bu değer yalnızca gösterim içindir. Çoğaltma sayısı, --max-replicas 10 çalıştırırken belirttiğiniz az containerapp update ve 10 ile sınırlıdır.

az containerapp update \
    --name my-container-app \
    --resource-group my-container-apps \
    --min-replicas 1 \
    --max-replicas 10 \
    --scale-rule-name my-cpu-scale-rule \
    --scale-rule-type cpu \
    --scale-rule-metadata type=Utilization value=<UTILIZATION>

Bellek ölçeklendirme

Bellek ölçeklendirme, uygulamanızın ne kadar bellek kullanıldığına bağlı olarak ölçeği daraltmasına veya genişletmesine olanak tanır.

Örneğin, kullanım değeri 50 ile bir bellek ölçek kuralı oluşturursanız, Azure Container Apps, tüm çoğaltmalar için ortalama bellek kullanımı %50 ulaştığında kapsayıcı uygulamanızın daha fazla çoğaltmasını oluşturur.

Bellek ölçeklendirme, kapsayıcı uygulamanızın sıfıra ölçeklendirilmesine izin vermez. Bu tetikleyici hakkında daha fazla bilgi için bkz. KEDA bellek ölçek tetikleyicisi.

komutunu çalıştırarak az containerapp update kapsayıcı uygulamanıza bir bellek ölçek kuralı ekleyin.

Not

Zaten ölçek kuralı olan bir kapsayıcı uygulamasına ölçek kuralı eklemek için Azure CLI kullandığınızda, yeni ölçek kuralı eski ölçek kuralının yerini alır. Birden çok ölçek kuralı eklemeyi görmek için bkz . Birden çok ölçek kuralı.

Aşağıdaki komutu çalıştırmadan önce <PLACEHOLDERS> yerine kendi değerlerinizi yerleştirin. Bu öğreticide <UTILIZATION> ifadesini 1 ile değiştirin. Bu, tüm kopyalar için ortalama bellek kullanımı %1'e ulaştığında kapsayıcı uygulamanızın ölçeklenmesine neden olur. Bu değer yalnızca gösterim içindir. Çoğaltma sayısı, --max-replicas 10 çalıştırırken belirttiğiniz az containerapp update ve 10 ile sınırlıdır.

az containerapp update \
    --name my-container-app \
    --resource-group my-container-apps \
    --min-replicas 1 \
    --max-replicas 10 \
    --scale-rule-name my-memory-scale-rule \
    --scale-rule-type memory \
    --scale-rule-metadata type=Utilization value=<UTILIZATION>

Birden çok ölçek kuralı

Azure CLI kullanarak kapsayıcı uygulamanıza birden çok ölçek kuralı eklemek için YAML kullanmanız gerekir.

  1. komutuyla kapsayıcı uygulaması yapılandırmanızı YAML'ye aktarın az containerapp show .

    az containerapp show \
        --name my-container-app \
        --resource-group my-container-apps \
        --output yaml > app.yaml
    
  2. properties > template > scale > rules bölümünde app.yamlaşağıdaki özellikleri ekleyin. <PLACEHOLDERS> ifadesini değerlerinizle değiştirin.

    ...
    properties:
    ...
      template:
    ...
        scale:
    ...
          rules:
            - name: cpu-scaling-rule
              custom:
                type: cpu
                metadata:
                  type: "Utilization"
                  value: "<CPU_UTILIZATION>"
            - name: memory-scaling-rule
              custom:
                type: memory
                metadata:
                  type: "Utilization"
                  value: "<MEMORY_UTILIZATION>"
    ...
    
  3. Kapsayıcı uygulama yapılandırmanızı app.yaml'dan az containerapp update komutuyla içeri aktarın.

    az containerapp update \
      --name my-container-app \
      --resource-group my-container-apps \
      --yaml app.yaml
    

Kaynakları temizleme

Bu uygulamayı kullanmaya devam etmeyecekseniz, bu öğreticide oluşturulan tüm kaynaklarla birlikte kaynak grubunu silmek için aşağıdaki komutu çalıştırın.

Dikkat

Aşağıdaki komut, belirtilen kaynak grubunu ve içindeki tüm kaynakları siler. Bu öğreticinin kapsamı dışındaki kaynaklar belirtilen kaynak grubunda varsa, bunlar da silinir.

az group delete --name my-container-apps

İpucu

Sorun mu yaşıyorsunuz? Azure Container Apps deposunda bir sorun açarak GitHub'da bize bildirin.

Sonraki adımlar