Batch uygulama paketleriyle işlem düğümlerine uygulama dağıtma

Uygulama paketleri, Azure Batch çözümünüzdeki kodu basitleştirebilir ve görevlerinizin çalıştırabileceği uygulamaları yönetmeyi kolaylaştırabilir. Uygulama paketleriyle, görevlerinizin çalıştırdıkları uygulamaların destek dosyaları da dahil olmak üzere birden çok sürümünü karşıya yükleyebilir ve yönetebilirsiniz. Daha sonra bu uygulamalardan bir veya daha fazlasını otomatik olarak havuzunuzdaki işlem düğümlerine dağıtabilirsiniz.

Uygulama paketlerini oluşturmaya ve yönetmeye yönelik API'ler Batch Management .NET kitaplığının bir parçasıdır. Uygulama paketlerini bir işlem düğümüne yüklemeye yönelik API'ler Batch .NET kitaplığının bir parçasıdır. Diğer programlama dilleri için kullanılabilir Batch API'lerinde benzer özellikler bulunur.

Bu makalede, Azure portal uygulama paketlerini karşıya yükleme ve yönetme açıklanmaktadır. Ayrıca Batch .NET kitaplığıyla bunların havuzun işlem düğümlerine nasıl yükleneceğini de gösterir.

Uygulama paketi gereksinimleri

Uygulama paketlerini kullanmak için Bir Azure Depolama hesabını Batch hesabınıza bağlamanız gerekir.

Batch hesabı içindeki uygulama ve uygulama paketi sayısı ve en büyük uygulama paketi boyutu kısıtlamaları vardır. Daha fazla bilgi için bkz . Batch hizmeti kotaları ve sınırları.

Not

5 Temmuz 2017'ye kadar oluşturulan Batch havuzları uygulama paketlerini desteklemez (10 Mart 2016'da Cloud Services Yapılandırması kullanılarak oluşturulmadıkları sürece). Burada açıklanan uygulama paketleri özelliği, hizmetin önceki sürümlerinde kullanılabilen Batch Apps özelliğinin yerini alır.

Uygulamaları ve uygulama paketlerini anlama

Azure Batch içinde bir uygulama, havuzunuzdaki işlem düğümlerine otomatik olarak indirilebilen bir dizi sürüme sahip ikili dosyaya başvurur. Bir uygulama, uygulamanın farklı sürümlerini temsil eden bir veya daha fazla uygulama paketi içerir.

Her uygulama paketi, uygulama ikili dosyalarını ve tüm destekleyici dosyaları içeren bir .zip dosyasıdır. Yalnızca .zip biçimi desteklenir.

Uygulamaların ve uygulama paketlerinin üst düzey görünümünü gösteren diyagram.

Uygulama paketlerini havuz veya görev düzeyinde belirtebilirsiniz.

  • Havuz uygulaması paketleri havuzdaki her düğüme dağıtılır. Uygulamalar, bir düğüm bir havuza katıldığında ve yeniden başlatıldığında veya yeniden başlatıldığında dağıtılır.

    Havuzdaki tüm düğümler bir işin görevlerini çalıştırdığında havuz uygulaması paketleri uygundur. Havuz oluştururken dağıtılacak bir veya daha fazla uygulama paketi belirtebilirsiniz. Ayrıca mevcut havuzun paketlerini ekleyebilir veya güncelleştirebilirsiniz. Mevcut havuza yeni bir paket yüklemek için düğümlerini yeniden başlatmanız gerekir.

  • Görev uygulaması paketleri , görevin komut satırını çalıştırmadan hemen önce yalnızca bir görevi çalıştırmak için zamanlanmış bir işlem düğümüne dağıtılır. Belirtilen uygulama paketi ve sürümü zaten düğümdeyse, yeniden dağıtılmaz ve mevcut paket kullanılır.

    Görev uygulaması paketleri, farklı işlerin bir havuzda çalıştığı ve bir iş tamamlandığında havuzun silinmediği paylaşılan havuz ortamlarında kullanışlıdır. İşinizin havuzdaki düğümlerden daha az görevi varsa, uygulamanız yalnızca görevleri çalıştıran düğümlere dağıtıldığından, görev uygulaması paketleri veri aktarımını en aza indirebilirsiniz.

    Görev uygulaması paketlerinden yararlanabilecek diğer senaryolar, yalnızca birkaç görev için büyük bir uygulama çalıştıran işlerdir. Örneğin, görev uygulamaları ağır bir ön işlem aşaması veya birleştirme görevi için yararlı olabilir.

Uygulama paketleriyle, havuzunuzun başlangıç görevinin düğümlere yüklenecek tek tek kaynak dosyalarının uzun bir listesini belirtmesi gerekmez. Azure Depolama'da veya düğümlerinizde uygulama dosyalarınızın birden çok sürümünü el ile yönetmeniz gerekmez. Ayrıca Azure Depolama hesabınızdaki dosyalara erişim sağlamak için SAS URL'leri oluşturma konusunda endişelenmeniz gerekmez. Batch, uygulama paketlerini depolamak ve bunları işlem düğümlerine dağıtmak için Azure Depolama ile arka planda çalışır.

Not

Başlangıç görevinin toplam boyutu, kaynak dosyaları ve ortam değişkenleri de dahil olmak üzere 32.768 karakterden küçük veya buna eşit olmalıdır. Başlangıç göreviniz bu sınırı aşarsa, uygulama paketlerini kullanmak başka bir seçenektir. Ayrıca kaynak dosyalarınızı içeren bir .zip dosyası oluşturabilir, dosyayı Blob olarak Azure Depolama'ya yükleyebilir ve ardından başlangıç görevinizin komut satırından sıkıştırmasını açabilirsiniz.

Uygulamaları karşıya yükleme ve yönetme

Batch hesabınızdaki uygulama paketlerini yönetmek için Azure portal veya Batch Yönetim API'lerini kullanabilirsiniz. Aşağıdaki bölümlerde depolama hesabını bağlama işlemi açıklanır. Azure portal uygulama ve uygulama paketleri eklemeyi ve yönetmeyi öğrenirsiniz.

Not

Bir ARM şablonununMicrosoft.Batch/batchAccounts kaynağında uygulama değerlerini tanımlayabilirsiniz ancak şu anda Batch hesabınızda kullanmak üzere uygulama paketlerini karşıya yüklemek için ARM şablonu kullanmak mümkün değildir. Bunları , Yeni uygulama ekleme bölümünde açıklandığı gibi bağlı depolama hesabınıza yüklemeniz gerekir.

Uygulama paketlerini kullanmak için bir Azure Depolama hesabını Batch hesabınıza bağlamanız gerekir. Batch hizmeti, uygulama paketlerinizi depolamak için ilişkili depolama hesabını kullanır. İdeal olarak, batch hesabınızla kullanmak üzere özel olarak bir depolama hesabı oluşturmanız gerekir.

Henüz bir depolama hesabı yapılandırmadıysanız, Batch hesabınızdaki sol gezinti menüsünden Uygulamalar'ı ilk kez seçtiğinizde Azure portal bir uyarı görüntüler. Bir depolama hesabını Batch hesabınıza bağlamanız gerekir:

  1. "Bu toplu iş hesabı için yapılandırılmış depolama hesabı yok" ifadesinin gösterildiği Uyarı penceresini seçin.
  2. Ardından bir sonraki sayfada Depolama Hesabı kümesi... öğesini seçin.
  3. Depolama Hesabı Bilgileri bölümünde Depolama hesabı seçin bağlantısını seçin.
  4. Depolama hesabı seç bölmesindeki listeden bu toplu iş hesabıyla kullanmak istediğiniz depolama hesabını seçin.
  5. Ardından sayfanın sol üst köşesindeki Kaydet'i seçin.

İki hesabı bağladıktan sonra Batch, bağlı Depolama hesabında depolanan paketleri otomatik olarak işlem düğümlerinize dağıtabilir.

Önemli

Uygulama paketlerini güvenlik duvarı kurallarıyla yapılandırılmış Azure Depolama hesaplarıyla veya Hiyerarşik ad alanıEtkin olarak ayarlanmış şekilde kullanamazsınız.

Batch hizmeti, uygulama paketlerinizi blok blobları olarak depolamak için Azure Depolama'yı kullanır. Blok blobu verileri için normal şekilde ücretlendirilirsiniz ve her paketin boyutu blok blobu boyutu üst sınırını aşamaz. Daha fazla bilgi için bkz. Blob depolama için ölçeklenebilirlik ve performans hedefleri. Maliyetleri en aza indirmek için uygulama paketlerinizin boyutunu ve sayısını dikkate aldığınızdan ve kullanım dışı bırakılan paketleri düzenli aralıklarla kaldırdığınızdan emin olun.

Yeni uygulama ekleme

Yeni uygulama oluşturmak için bir uygulama paketi ekler ve benzersiz bir uygulama kimliği belirtirsiniz.

Batch hesabınızda, sol gezinti menüsünden Uygulamalar'ı ve ardından Ekle'yi seçin.

Azure portal Yeni uygulama oluşturma işleminin ekran görüntüsü.

Aşağıdaki bilgileri girin:

  • Uygulama Kimliği: Yeni uygulamanızın kimliği.
  • Sürüm": Karşıya yüklediğiniz uygulama paketinin sürümü.
  • Uygulama paketi: Uygulamayı çalıştırmak için gereken uygulama ikili dosyalarını ve destekleyici dosyaları içeren .zip dosyası.

Girdiğiniz Uygulama Kimliği ve Sürüm şu gereksinimleri karşılamalıdır:

  • Windows düğümlerinde kimlik herhangi bir alfasayısal karakter, kısa çizgi ve alt çizgi birleşimi içerebilir. Linux düğümlerinde yalnızca alfasayısal karakterlere ve alt çizgilere izin verilir.
  • 64 karakterden fazla olamaz.
  • Batch hesabı içinde benzersiz olmalıdır.
  • Kimlikler büyük/küçük harf koruyucu ve büyük/küçük harfe duyarlı değildir.

Hazır olduğunuzda Gönder'i seçin. .zip dosyası Azure Depolama hesabınıza yüklendikten sonra portalda bir bildirim görüntülenir. Karşıya yüklediğiniz dosyanın boyutuna ve ağ bağlantınızın hızına bağlı olarak bu işlem biraz zaman alabilir.

Geçerli uygulamaları görüntüleme

Batch hesabınızdaki uygulamaları görüntülemek için sol gezinti menüsünden Uygulamalar'ı seçin.

Azure portal Uygulamalar menü öğesinin ekran görüntüsü.

Bu menü seçeneği seçildiğinde Uygulamalar penceresi açılır. Bu pencerede hesabınızdaki her uygulamanın kimliği ve aşağıdaki özellikler görüntülenir:

  • Paketler: Bu uygulamayla ilişkili sürüm sayısı.
  • Varsayılan sürüm: Varsa, uygulama dağıtılırken sürüm belirtilmezse yüklenen uygulama sürümü.
  • Güncelleştirmelere izin ver: Paket güncelleştirmelerine ve silmelerine izin verilip verilmeyeceğini belirtir.

İşlem düğümünde uygulama paketinin dosya yapısını görmek için Azure portal Batch hesabınıza gidin. Havuzlar'ı seçin. Ardından işlem düğümünü içeren havuzu seçin. Uygulama paketinin yüklü olduğu işlem düğümünü seçin ve applications klasörünü açın.

Uygulama ayrıntılarını görüntüleme

Bir uygulamanın ayrıntılarını görmek için Uygulamalar penceresinde uygulamayı seçin. Sol gezinti menüsünden Ayarlar'ı seçerek uygulamanızı yapılandırabilirsiniz.

  • Güncelleştirmelere izin ver: Uygulama paketlerinin güncelleştirilebileceğini veya silinebileceğini gösterir. Varsayılan değer Evet’tir. Hayır olarak ayarlanırsa, mevcut uygulama paketleri güncelleştirilemez veya silinemez, ancak yeni uygulama paketi sürümleri eklenebilir.
  • Varsayılan sürüm: Hiçbir sürüm belirtilmezse uygulama dağıtılırken kullanılacak varsayılan uygulama paketi.
  • Görünen ad: Batch çözümünüzün uygulama hakkındaki bilgileri görüntülerken kullanabileceği kolay ad. Örneğin, bu ad Batch aracılığıyla müşterilerinize sağladığınız bir hizmetin kullanıcı arabiriminde kullanılabilir.

Yeni uygulama paketi ekleme

Mevcut bir uygulamaya uygulama paketi sürümü eklemek için Batch hesabınızın Uygulamalar sayfasında uygulamayı seçin. Ardından Ekle'yi seçin.

Yeni uygulama için yaptığınız gibi yeni paketinizin Sürümünü belirtin, .zip dosyanızı Uygulama paketi alanına yükleyin ve gönder'i seçin.

Uygulama paketini güncelleştirme veya silme

Mevcut bir uygulama paketini güncelleştirmek veya silmek için Batch hesabınızın Uygulamalar sayfasında uygulamayı seçin. Değiştirmek istediğiniz uygulama paketinin satırındaki üç noktayı seçin. Ardından gerçekleştirmek istediğiniz eylemi seçin.

Azure portal uygulama paketleri için güncelleştirme ve silme seçeneklerini gösteren ekran görüntüsü.

Güncelleştir'i seçerseniz yeni bir .zip dosyası yükleyebilirsiniz. Bu dosya, bu sürüm için karşıya yüklediğiniz önceki .zip dosyasının yerini alır.

Sil'i seçerseniz, bu sürümün silinmesini onaylamanız istenir. Tamam'ı seçtikten sonra Batch, azure depolama hesabınızdan .zip dosyasını siler. Bir uygulamanın varsayılan sürümünü silerseniz, söz konusu uygulama için Varsayılan sürüm ayarı kaldırılır.

İşlem düğümlerine uygulama yükleme

Azure portal uygulama paketlerini yönetmeyi öğrendinsiniz. Artık bunları işlem düğümlerine dağıtmayı ve Batch görevleriyle çalıştırmayı öğrenebilirsiniz.

Havuz uygulama paketlerini yükleme

Bir havuzdaki tüm işlem düğümlerine uygulama paketi yüklemek için havuz için bir veya daha fazla uygulama paketi başvurusu belirtin. Bir havuz için belirttiğiniz uygulama paketleri, havuza katılan her işlem düğümüne ve yeniden başlatılmış veya yeniden tasarlanan herhangi bir düğüme yüklenir.

Batch .NET'te, yeni bir havuz oluştururken veya var olan bir havuzu kullanırken bir veya daha fazla CloudPool.ApplicationPackageReferences belirtin. ApplicationPackageReference sınıfı, havuzun işlem düğümlerine yüklenecek uygulama kimliğini ve sürümünü belirtir.

// Create the unbound CloudPool
CloudPool myCloudPool =
    batchClient.PoolOperations.CreatePool(
        poolId: "myPool",
        targetDedicatedComputeNodes: 1,
        virtualMachineSize: "standard_d1_v2",
        VirtualMachineConfiguration: new VirtualMachineConfiguration(
            imageReference: new ImageReference(
                                publisher: "MicrosoftWindowsServer",
                                offer: "WindowsServer",
                                sku: "2019-datacenter-core",
                                version: "latest"),
            nodeAgentSkuId: "batch.node.windows amd64");

// Specify the application and version to install on the compute nodes
myCloudPool.ApplicationPackageReferences = new List<ApplicationPackageReference>
{
    new ApplicationPackageReference {
        ApplicationId = "litware",
        Version = "1.1001.2b" }
};

// Commit the pool so that it's created in the Batch service. As the nodes join
// the pool, the specified application package is installed on each.
await myCloudPool.CommitAsync();

Önemli

Bir uygulama paketi dağıtımı başarısız olursa Batch hizmeti düğümü kullanılamaz olarak işaretler ve bu düğümde yürütülmeye yönelik hiçbir görev zamanlanmamıştır. Bu durumda, paket dağıtımını yeniden başlatmak için düğümü yeniden başlatın. Düğümün yeniden başlatılması, düğümde görev zamanlamasını yeniden etkinleştirir.

Görev uygulama paketlerini yükleme

Havuza benzer şekilde, bir görev için uygulama paketi başvuruları belirtirsiniz. Bir görev bir düğümde çalışacak şekilde zamanlandığında, görevin komut satırı çalışmadan hemen önce paket indirilir ve ayıklanır. Düğümde belirtilen bir paket ve sürüm zaten yüklüyse paket indirilmez ve mevcut paket kullanılır.

Görev uygulama paketini yüklemek için görevin CloudTask.ApplicationPackageReferences özelliğini yapılandırın:

CloudTask task =
    new CloudTask(
        "litwaretask001",
        "cmd /c %AZ_BATCH_APP_PACKAGE_LITWARE%\\litware.exe -args -here");

task.ApplicationPackageReferences = new List<ApplicationPackageReference>
{
    new ApplicationPackageReference
    {
        ApplicationId = "litware",
        Version = "1.1001.2b"
    }
};

Yüklü uygulamaları yürütme

Bir havuz veya görev için belirttiğiniz paketler, düğümün içindeki AZ_BATCH_ROOT_DIR adlandırılmış bir dizine indirilir ve ayıklanır. Batch, adlandırılmış dizinin yolunu içeren bir ortam değişkeni de oluşturur. Görev komut satırlarınız düğümdeki uygulamaya başvururken bu ortam değişkenini kullanır.

Windows düğümlerinde değişken aşağıdaki biçimdedir:

Windows:
AZ_BATCH_APP_PACKAGE_APPLICATIONID#version

Linux düğümlerinde biçim biraz farklıdır. Nokta (.), kısa çizgi (-) ve sayı işaretleri (#) ortam değişkeninde alt çizgi olarak düzleştirilmiştir. Ayrıca, uygulama kimliğinin durumu korunur. Örnek:

Linux:
AZ_BATCH_APP_PACKAGE_applicationid_version

APPLICATIONID ve version dağıtım için belirttiğiniz uygulama ve paket sürümüne karşılık gelen değerlerdir. Örneğin, Uygulama Blender'ın 2.7 sürümünün Windows düğümlerine yüklenmesi gerektiğini belirtirseniz, görev komut satırlarınız dosyalarına erişmek için bu ortam değişkenini kullanır:

Windows:
AZ_BATCH_APP_PACKAGE_BLENDER#2.7

Linux düğümlerinde ortam değişkenini bu biçimde belirtin. Nokta (.), kısa çizgi (-) ve sayı işaretlerini (#) alt çizgi olarak düzleştirme ve uygulama kimliğinin büyük/küçük harflerini koruma:

Linux:
AZ_BATCH_APP_PACKAGE_blender_2_7

Bir uygulama paketini karşıya yüklediğinizde, işlem düğümlerinize dağıtılacak varsayılan sürümü belirtebilirsiniz. Bir uygulama için varsayılan bir sürüm belirttiyseniz, uygulamaya başvururken sürüm sonekini atlayabilirsiniz. Uygulamalarıkarşıya yükleme ve yönetme bölümünde gösterildiği gibi, uygulamalar penceresindeki Azure portal varsayılan uygulama sürümünü belirtebilirsiniz.

Örneğin, uygulama blender için varsayılan sürüm olarak "2.7" ayarlarsanız ve görevleriniz aşağıdaki ortam değişkenine başvuruda bulunursa, Windows düğümleriniz 2.7 sürümünü kullanır:

AZ_BATCH_APP_PACKAGE_BLENDER

Aşağıdaki kod parçacığı , blender uygulamasının varsayılan sürümünü başlatan örnek bir görev komut satırını gösterir:

string taskId = "blendertask01";
string commandLine =
    @"cmd /c %AZ_BATCH_APP_PACKAGE_BLENDER%\blender.exe -args -here";
CloudTask blenderTask = new CloudTask(taskId, commandLine);

İpucu

İşlem düğümü ortam ayarları hakkında daha fazla bilgi için bkz. Görevler için ortam ayarları.

Bir havuzun uygulama paketlerini güncelleştirme

Mevcut bir havuz zaten bir uygulama paketiyle yapılandırılmışsa havuz için yeni bir paket belirtebilirsiniz. Diğer bir deyişle:

  • Batch hizmeti, yeni belirtilen paketi havuza katılan tüm yeni düğümlere ve yeniden başlatılmış veya yeniden tasarlanan mevcut düğümlere yükler.
  • Paket başvurularını güncelleştirdiğinizde zaten havuzda olan işlem düğümleri yeni uygulama paketini otomatik olarak yüklemez. Yeni paketi almak için bu işlem düğümlerinin yeniden başlatılması veya yeniden başlatılması gerekir.
  • Yeni bir paket dağıtıldığında, oluşturulan ortam değişkenleri yeni uygulama paketi başvurularını yansıtır.

Bu örnekte mevcut havuz, CloudPool.ApplicationPackageReferences'larından biri olarak yapılandırılmış blender uygulamasının 2.7 sürümüne sahiptir. Havuzun düğümlerini 2.76b sürümüyle güncelleştirmek için yeni sürümle yeni bir ApplicationPackageReference belirtin ve değişikliği işleyin.

string newVersion = "2.76b";
CloudPool boundPool = await batchClient.PoolOperations.GetPoolAsync("myPool");
boundPool.ApplicationPackageReferences = new List<ApplicationPackageReference>
{
    new ApplicationPackageReference {
        ApplicationId = "blender",
        Version = newVersion }
};
await boundPool.CommitAsync();

Yeni sürüm yapılandırıldığına göre Batch hizmeti, havuza katılan yeni düğümlere 2.76b sürümünü yükler. Zaten havuzda olan düğümlere 2.76b yüklemek için bunları yeniden başlatın veya yeniden oluşturun. Yeniden başlatılan düğümler, önceki paket dağıtımlarına ait dosyaları korur.

Batch hesabındaki uygulamaları listeleme

ApplicationOperations.ListApplicationSummaries yöntemini kullanarak bir Batch hesabındaki uygulamaları ve paketlerini listeleyebilirsiniz.

// List the applications and their application packages in the Batch account.
List<ApplicationSummary> applications = await batchClient.ApplicationOperations.ListApplicationSummaries().ToListAsync();
foreach (ApplicationSummary app in applications)
{
    Console.WriteLine("ID: {0} | Display Name: {1}", app.Id, app.DisplayName);

    foreach (string version in app.Versions)
    {
        Console.WriteLine("  {0}", version);
    }
}

Sonraki adımlar