Aracılığıyla paylaş


Azure Container Apps'te oturum havuzlarını kullanma

Oturum havuzları, altsaniyeli oturum ayırma süreleri sağlar ve her oturumun yaşam döngüsünü yönetir.

Her iki havuz için de yaygın kavramlar

Havuz oluşturma işlemi, kod yorumlayıcı oturum havuzu mu yoksa özel kapsayıcı havuzu mu oluşturduğunuza bağlı olarak biraz farklıdır. Aşağıdaki kavramlar her ikisi için de geçerlidir.

Azure CLI kullanarak oturum havuzları oluşturmak için Azure CLI'nın ve Azure Container Apps uzantısının en son sürümlerine sahip olduğunuzdan emin olun:

# Upgrade the Azure CLI
az upgrade

# Install or upgrade the Azure Container Apps extension
az extension add --name containerapp --upgrade --allow-preview true -y

Yaygın oturum havuzu komutları şunlardır:

  • az containerapp sessionpool create
  • az containerapp sessionpool show
  • az containerapp sessionpool list
  • az containerapp sessionpool update
  • az containerapp sessionpool delete

Kullanılabilir bağımsız değişkenleri ve desteklenen değerleri görmek için herhangi bir komutla kullanın --help .

Oturum havuzunun durumunu denetlemek için komutunu az containerapp sessionpool show kullanın:

az containerapp sessionpool show \
    --name <SESSION_POOL_NAME> \
    --resource-group <RESOURCE_GROUP> \
    --query "properties.poolManagementEndpoint" \
    --output tsv

Havuzu oluşturduğunuzda veya güncelleştirdiğinizde, en fazla eşzamanlı oturum sayısı, boşta bekleme süresi ve oturumlar için giden ağ trafiğine izin verilip verilmeyeceğini ayarlayabilirsiniz.

Önemli

Çıkışı etkinleştirirseniz oturumda çalıştırılan kod İnternet'e erişebilir. Koda güvenilmediğinde dikkatli olun çünkü hizmet reddi saldırıları gibi kötü amaçlı etkinlikleri gerçekleştirmek için kullanılabilir.

Önemli

Oturum güvenilmeyen kodu çalıştırmak için kullanılıyorsa, güvenilmeyen kodun erişmesini istemediğiniz bilgileri veya verileri eklemeyin. Kodun kötü amaçlı olduğunu ve kapsayıcıya ortam değişkenleri, gizli diziler ve dosyalar da dahil olmak üzere tam erişimi olduğunu varsayalım.

Havuz yapılandırma

Oturum havuzu yapılandırması için en son CLI bağımsız değişkenlerini görmek için kullanın az containerapp sessionpool create --help . Bu bölüm, API sürümleri arasında geçerli olan gelişmiş yapılandırma seçeneklerine odaklanır.

Oturum yaşam döngüsü yapılandırması

Bir oturum havuzu oluşturduğunuzda veya güncelleştirdiğinizde, ayarlayarak properties.dynamicPoolConfiguration.lifecycleConfigurationoturumların nasıl sonlandırıldığını yapılandırabilirsiniz. API sürümünden 2025-01-01başlayarak iki yaşam döngüsü türünden birini seçin.

TAM API belirtimi için bkz. SessionPools API belirtimi.

Zamanlanmış (varsayılan)

Yaşam döngüsü Timed ile, belli bir süre etkinlik olmadığında oturum silinir. Bir oturuma gönderilen herhangi bir istek, bekleme süresi zamanlayıcısını sıfırlayarak oturumun yaşam süresini cooldownPeriodInSeconds kadar uzatır.

Uyarı

Timed tüm oturum havuzu türleri için desteklenir ve önceki API sürümlerindekiyle aynı şekilde executionType: Timed çalışır.

{
  "dynamicPoolConfiguration": {
    "lifecycleConfiguration": {
      "cooldownPeriodInSeconds": 600,
      "lifecycleType": "Timed"
    }
  }
}
Mülkiyet Description
cooldownPeriodInSeconds Bu süre için istek olmadığında oturum silinir.
maxAlivePeriodInSeconds Yaşam döngüsü için Timed desteklenmez.

Yönetim uç noktası

Önemli

Oturum tanımlayıcısı, değerini oluşturup yönetirken güvenli bir işlem gerektiren hassas bilgilerdir. Bu değeri korumak için uygulamanızın her kullanıcının veya kiracının yalnızca kendi oturumlarına erişimi olduğundan emin olması gerekir.

Oturumlara erişimin güvenliğinin sağlanamaması, kullanıcılarınızın oturumlarında depolanan verilere yanlış veya yetkisiz erişime neden olabilir. Daha fazla bilgi için bkz . Oturum tanımlayıcıları

Havuz yönetimi uç noktasına yapılan tüm istekler bir taşıyıcı jeton içeren Authorization üst bilgi bulundurmalıdır. Havuz yönetimi API'siyle kimlik doğrulaması yapmayı öğrenmek için bkz. Kimlik doğrulaması.

Her API isteğinin oturum kimliğine sahip sorgu dizesi parametresini identifier de içermesi gerekir. Bu benzersiz oturum kimliği, uygulamanızın belirli oturumlarla etkileşim kurmasını sağlar. Oturum tanımlayıcıları hakkında daha fazla bilgi edinmek için bkz. Oturum tanımlayıcıları.

Görüntü önbelleğe alma

Bir oturum havuzu oluşturulduğunda veya güncelleştirildiğinde, Azure Container Apps havuzdaki kapsayıcı görüntüsünü önbelleğe alır. Bu önbelleğe alma, yeni oturum oluşturma işlemini hızlandırmaya yardımcı olur.

Görüntüde yapılan değişiklikler oturumlara otomatik olarak yansıtılmaz. Görüntüyü güncelleştirmek için oturum havuzunu yeni bir görüntü etiketiyle güncelleştirin. Yeni görüntünün çekildiğinden emin olmak için her görüntü güncelleştirmesi için benzersiz bir etiket kullanın.

Kod yorumlayıcı oturum havuzu

az containerapps sessionpool create Havuzu oluşturmak için komutunu kullanın. Aşağıdaki örnek adlı my-session-poolbir Python kod yorumlayıcısı oturum havuzu oluşturur. komutunu çalıştırmadan önce öğesini kaynak grubu adınızla değiştirdiğinizden <RESOURCE_GROUP> emin olun.

az containerapp sessionpool create \
    --name my-session-pool \
    --resource-group <RESOURCE_GROUP> \
    --location westus2 \
    --container-type PythonLTS \
    --max-sessions 100 \
    --cooldown-period 300 \
    --network-status EgressDisabled

Oturum havuzu oluştururken aşağıdaki ayarları tanımlayabilirsiniz:

Setting Description
--container-type Kullanılacak kod yorumlayıcı türü. Desteklenen değerler , , PythonLTSNodeLTSve Shelldeğerlerini içerirCustomContainer.
--max-sessions Eşzamanlı olarak izin verilen en fazla ayrılmış oturum sayısı. En büyük değer: 600.
--cooldown-period Sonlandırmadan önce izin verilen boşta kalan saniye sayısı. Oturumun API'si her çağrıldığında boşta kalma süresi sıfırlanır. İzin verilen aralık 300 ile 3600 arasındadır.
--network-status Oturumdan giden ağ trafiğine izin verilip verilmeyeceğini belirtir. Geçerli değerler EgressDisabled (varsayılan) ve EgressEnabled'dir.

Kod yorumlayıcı yönetim uç noktası

LLM çerçevesi tümleştirmeleriyle veya doğrudan yönetim API'sinin uç noktalarını çağırarak kod yorumlayıcı oturumlarını kullanmak için havuzun yönetim API'sinin uç noktası gerekir.

Endpoint şu formatta bulunmaktadır: https://<REGION>.dynamicsessions.io/subscriptions/<SUBSCRIPTION_ID>/resourceGroups/<RESOURCE_GROUP>/sessionPools/<SESSION_POOL_NAME>.

Bir oturum havuzunun yönetim API'sinin uç noktasını almak için örnek bir komut için yukarıdaki ortak bölüme bakın.

Havuzdaki oturumları yönetmek için aşağıdaki uç noktalar kullanılabilir:

Uç nokta yolu Yöntem Description
code/execute POST Bir oturumda kod yürütün.
files/upload POST Oturuma dosya yükleme.
files/content/{filename} GET Oturumdan dosya indirin.
files GET Oturumdaki dosyaları listeleme.

Havuzun yönetim API'si uç noktasını uç nokta yolu ile birleştirerek her uç nokta için tam URL oluşturursunuz. Sorgu dizesi oturum tanımlayıcısını içeren bir identifier parametre ve değerine api-versionsahip bir 2024-02-02-preview parametre içermelidir. API sürümleri değişebilir, bu nedenle üretimde kullanmadan önce her zaman REST API belgelerindeki en son sürümü onaylayın.

Örneğin: {sessionManagementEndpoint}/code/execute?api-version=2024-02-02-preview&identifier=<IDENTIFIER>

REST API başvuruları için bkz. Container Apps veri düzlemi API'leri ve Container Apps veri düzlemi işlemlerine genel bakış.

Özel kapsayıcı oturum havuzu

Özelleştirilmiş kapsayıcı oturum havuzu oluşturmak için bir kapsayıcı görüntüsü ve havuz yapılandırma ayarlarını sağlamanız gerekir.

HTTP isteklerini kullanarak her oturumu çağırır veya bunlarla iletişim kurarsınız. Özel kapsayıcı, bu istekleri yanıtlamak için belirttiğiniz bir bağlantı noktasında bir HTTP sunucusunu kullanıma sunmalıdır.

Aşağıdaki özellikler yalnızca özel kapsayıcı oturumu havuzları için geçerlidir.

Özel kapsayıcı yönetimi uç noktası

Özel kapsayıcı oturumu havuzları için Yönetim uç noktasını Azure portalından veya Azure CLI çıkışından alın. Uç nokta poolManagementEndpoint olarak döndürülür.

Endpoint şu formatta bulunmaktadır: https://<SESSION_POOL_NAME>.<ENVIRONMENT_ID>.<REGION>.azurecontainerapps.io.

OnContainerExit

Yaşam döngüsü süreciyle OnContainerExit birlikte, kapsayıcı kendi kendine çıkana veya maksimum canlı kalma süresine ulaşılana kadar oturum etkin kalır.

{
  "dynamicPoolConfiguration": {
    "lifecycleConfiguration": {
      "maxAlivePeriodInSeconds": 6000,
      "lifecycleType": "OnContainerExit"
    }
  }
}
Mülkiyet Description
maxAlivePeriodInSeconds Silinmeden önce oturumun etkin kalabileceği maksimum süre.
cooldownPeriodInSeconds Yaşam döngüsü için OnContainerExit desteklenmez.

Kapsayıcı sınamaları

Oturum kapsayıcıları için sağlık kontrolleri tanımlamanıza olanak tanıyan kapsayıcı yoklamaları, havuzun sağlıksız oturumları algılayıp onları değiştirerek readySessionInstances hedefi iyi durumda tutmasını sağlar.

Oturum havuzları Canlılık ve Başlangıç yoklamalarını destekler. Daha fazla bilgi için prob davranışıyla ilgili bkz. Azure Container Apps'te sağlık probları.

Oturum havuzu oluştururken veya güncelleştirirken yoklamaları properties.customContainerTemplate.containers içinde belirtin. İstek gövdesi şemasının tamamı için SessionPools Oluşturma veya Güncelleştirme API referansı'na bakın. Aşağıdaki örnekte yoklama tanımlarıyla kısmi bir yapılandırma gösterilmektedir:

{
  "properties": {
    "customContainerTemplate": {
      "containers": [
        {
          "name": "my-session-container",
          "image": "myregistry.azurecr.io/my-session-image:latest",
          "probes": [
            {
              "type": "Liveness",
              "httpGet": {
                "path": "/health",
                "port": 8080
              },
              "periodSeconds": 10,
              "failureThreshold": 3
            },
            {
              "type": "Startup",
              "httpGet": {
                "path": "/ready",
                "port": 8080
              },
              "periodSeconds": 5,
              "failureThreshold": 30
            }
          ]
        }
      ]
    },
    "dynamicPoolConfiguration": {
      "readySessionInstances": 5
    }
  }
}

Özel kapsayıcı oturum havuzları, iş yükü profilleri etkinleştirilmiş bir Azure Container Apps ortamı gerektirir. Ortamınız yoksa, bir tane oluşturmak için az containerapp env create -n <ENVIRONMENT_NAME> -g <RESOURCE_GROUP> --location <LOCATION> komutunu kullanın.

az containerapp sessionpool create komutunu özel bir kapsayıcı oturum havuzu oluşturmak için kullanın.

Aşağıdaki örnek, özel kapsayıcı görüntüsüyle my-session-pooladlı myregistry.azurecr.io/my-container-image:1.0 bir oturum havuzu oluşturur.

İsteği göndermeden önce köşeli ayraçlar arasındaki <> yer tutucuları oturum havuzunuz ve oturum tanımlayıcınız için uygun değerlerle değiştirin.

az containerapp sessionpool create \
    --name my-session-pool \
    --resource-group <RESOURCE_GROUP> \
    --environment <ENVIRONMENT> \
    --registry-server myregistry.azurecr.io \
    --registry-username <USER_NAME> \
    --registry-password <PASSWORD> \
    --container-type CustomContainer \
    --image myregistry.azurecr.io/my-container-image:1.0 \
    --cpu 0.25 --memory 0.5Gi \
    --target-port 80 \
    --cooldown-period 300 \
    --network-status EgressDisabled \
    --max-sessions 10 \
    --ready-sessions 5 \
    --env-vars "key1=value1" "key2=value2" \
    --location <LOCATION>

Bu komut aşağıdaki ayarlarla bir oturum havuzu oluşturur:

Parametre Değer Description
--name my-session-pool Oturum havuzunun adı.
--resource-group my-resource-group Oturum havuzunu içeren kaynak grubu.
--environment my-environment Kapsayıcı uygulamasının ortamının adı veya kaynak kimliği.
--container-type CustomContainer Oturum havuzunun container türü. Özel kapsayıcı oturumları için olmalıdır CustomContainer .
--image myregistry.azurecr.io/my-container-image:1.0 Oturum havuzu için kullanılacak kapsayıcı görüntüsü.
--registry-server myregistry.azurecr.io Kapsayıcı kayıt defteri sunucusu ana bilgisayar adı.
--registry-username my-username Kapsayıcı kayıt defterinde oturum açmak için kullanılan kullanıcı adı.
--registry-password my-password Kapsayıcı kayıt defterinde oturum açma parolası.
--cpu 0.25 Gerekli CPU çekirdek sayısı.
--memory 0.5Gi Gerekli bellek.
--target-port 80 Giriş trafiği için kullanılan oturum bağlantı noktası.
--cooldown-period 300 Oturumun sonlandırılmadan önce boşta bulunabileceği saniye sayısı. Oturumun API'si her çağrıldığında boşta kalma süresi sıfırlanır. Değer, 300 ile 3600 arasında olmalıdır.
--network-status EgressDisabled Oturumdan giden ağ trafiğine izin verilip verilmeyeceğini belirtir. Geçerli değerler EgressDisabled (varsayılan) ve EgressEnabled'dir.
--max-sessions 10 Aynı anda ayrılabilecek en fazla oturum sayısı.
--ready-sessions 5 Oturum havuzunda her zaman hazır olan hedef oturum sayısı. Oturumlar, havuz yenilendiğinden daha hızlı tahsis edilirse bu sayıyı artırın.
--env-vars "key1=value1" "key2=value2" Kapsayıcıda ayarlanacağı ortam değişkenleri.
--location "Supported Location" Oturum havuzunun konumu.

Oturum havuzunu güncelleştirmek için komutunu kullanın az containerapp sessionpool update .