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

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

Uygulama paketlerini oluşturmak ve yönetmek için API'ler Batch Management .NET kitaplığının bir parçasıdır. bir işlem düğümüne uygulama paketleri yüklemek için API'ler Batch .NET kitaplığının bir parçasıdır. Benzer özellikler, diğer diller için kullanılabilir Batch API'lerinde yer almaktadır.

Bu makalede uygulama paketlerini karşıya yükleme ve yönetme hakkında bilgi Azure portal. Ayrıca, Batch .NET kitaplığıyla bir havuzun işlem düğümlerine nasıl yüklerini gösterir.

Uygulama paketi gereksinimleri

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

Batch hesabı içindeki uygulama ve uygulama paketlerinin sayısına ve en büyük uygulama paketi boyutuna yönelik kısıtlamalar vardır. Daha fazla bilgi için bkz. Azure Batch hizmeti için kotalar ve limitler.

Not

5 Temmuz 2017'den önce oluşturulan Batch havuzları uygulama paketlerini desteklemez (10 Mart 2016'dan sonra Cloud Services Yapılandırma kullanılarak oluşturulmadıkça). Burada açıklanan uygulama paketleri özelliği, hizmetin önceki sürümlerinde kullanılabilen Batch Apps özelliğinin yenisi olur.

Uygulamaları ve uygulama paketlerini anlama

Bu Azure Batch uygulama, havuz içindeki işlem düğümlerine otomatik olarak indirilebilen bir dizi sürüme sahip ikili dosyayı ifade eder. Bir uygulama, uygulamanın farklı sürümlerini temsil eden bir veya daha fazla uygulama paketi içerir.

Her uygulama paketi, .zip ve tüm destek dosyalarını içeren bir dosyadır. Yalnızca .zip biçimi de desteklemektedir.

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 uygulama paketleri havuza 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.

    Havuz uygulama paketleri, bir havuza tüm düğümler bir işin görevlerini yürütecek olduğunda uygundur. Bir havuz oluşturmada dağıtmak için bir veya daha fazla uygulama paketi belirtebilirsiniz. Var olan bir havuzun paketlerini de ekleyebilir veya güncelleştirebilirsiniz. Var olan bir havuza yeni bir paket yüklemek için düğümlerini yeniden başlatmanız gerekir.

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

    Görev uygulaması paketleri, bir havuzda farklı işlerin çalıştırılıyor olduğu ve bir iş tamamlandığında havuzun silinmemiş olduğu paylaşılan havuz ortamlarında kullanışlıdır. İş havuza düğümlerden daha az görev varsa, uygulamanız yalnızca görevlerin çalıştırılacağı düğümlere dağıtıldığından görev uygulaması paketleri veri aktarımını en aza indirebilir.

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

Uygulama paketleriyle, havuzun başlangıç görevinin düğümlere yüklemek için tek tek kaynak dosyalarının uzun bir listesini belirtmesi zorunda değildir. Uygulama dosyalarınızın birden çok sürümünü Azure Depolama veya düğümleriniz üzerinde el ile yönetmeniz gerekmez. Ayrıca sas URL'leri oluşturma konusunda endişelenmenize gerek yok. Bu url'ler, Depolama sağlar. Batch, uygulama paketlerini depolamak ve Depolama düğümlerine dağıtmak için Azure Depolama arka planda çalışır.

Not

Bir başlangıç görevinin toplam boyutunun kaynak dosyaları ve ortam değişkenleri dahil olmak üzere 32.768 karakter veya daha az olması gerekir. Başlangıç göreviniz bu sınırı aşarsa, uygulama paketlerini kullanmak başka bir seçenektir. Ayrıca, kaynak .zip içeren bir dosya oluşturabilir, azure Depolama'a blob olarak yükleyebilir ve ardından başlangıç görevinizin komut satırına sıkıştırmayı açabilirsiniz.

Upload yönetme ve yönetme

Batch hesabı Azure portal uygulama paketlerini yönetmek için Batch Yönetimi API'lerini veya api'leri kullanabilirsiniz. Aşağıdaki bölümlerde depolama hesabını bağlama ve uygulama ve uygulama paketlerini uygulama ve uygulama paketleri ekleme ve yönetme adımları Azure portal.

Not

Arm şablonunun Microsoft.Batch/batchAccounts kaynağında uygulama değerleri tanımlayabilirsiniz, ancak şu anda Batchhesabınıza kullanmak üzere uygulama paketlerini karşıya yüklemek için ARM şablonu kullanmak mümkün değildir. Bunları aşağıda açıklandığı gibi bağlı depolama hesabınıza yükleyebilirsiniz.

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

Henüz bir depolama hesabı yapılandırmadıysanız, Azure portal Batch hesabı içinde Uygulamalar'ı ilk kez seçerek bir uyarı görüntüler. Bir depolama hesabını Batch hesabınıza bağlamak için Uyarı penceresinde Depolama hesabı seçin ve ardından Yeniden Hesap Depolama seçin.

İki hesabı birbirine bağlı verdikten sonra Batch, bağlı hesapta depolanan paketleri otomatik olarak Depolama düğümlerinize dağıtabilir.

Önemli

Güvenlik duvarı kurallarıyla yapılandırılmış Azure Depolama hesaplarıyla veya Hiyerarşik ad alanı Etkin olarak ayarlanmış uygulama paketlerini kullanamazsanız.

Batch hizmeti, uygulama Depolama blok blobu olarak depolamak için Azure Depolama'i kullanır. Blok blobu verileri için normal olarak ücret ödemeniz gerekir ve her paketin boyutu en fazla blok blobu boyutunu aşmaz. Daha fazla bilgi için bkz. Azure Depolama hesapları için ölçeklenebilirlik ve performans hedefleri. Maliyetleri en aza indirmek için uygulama paketlerinizin boyutunu ve sayısını göz önünde bulundurarak kullanım dışı paketleri düzenli aralıklarla kaldırmayı göz önünde bulundurabilirsiniz.

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

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

Uygulama menüsündeki Uygulamalar menü öğesinin ekran Azure portal.

Bu menü seçeneğine bakarak Uygulamalar penceresi açılır. Bu pencerede, hesabınızla ilgili 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, uygulamayı dağıtırken herhangi bir sürüm belirtilmezse, yüklenecek uygulama sürümü.
  • Güncelleştirmelere izin ver: Paket güncelleştirmelerine ve silmelere izin verili olup olmadığını belirtir.

İşlem düğümünde uygulama paketinin dosya yapısını görmek için, uygulama düğümünde Batch hesabınıza Azure portal. 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. Uygulamanıza aşağıdaki ayarları yapılandırabilirsiniz.

  • Güncelleştirmelere izin ver: Uygulama paketlerinin güncelleştirilip güncelleştirilene veya silinenin olmadığını 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 yine de eklenebilir.
  • Varsayılan sürüm: Herhangi bir sürüm belirtilmezse, uygulama dağıtıldığında kullanmak üzere varsayılan uygulama paketi.
  • Görünen ad: Batch çözümünüz uygulamayla ilgili bilgileri görüntülerken kullanabileceği kolay bir addır. Örneğin, bu ad Batch aracılığıyla müşterilerinize sağlanmış bir hizmetin kullanıcı arabiriminde kullanılabilir.

Yeni uygulama ekleme

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

Batch hesabında Uygulamalar'ı ve ardından Ekle'yi seçin.

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

Aşağıdaki bilgileri girin:

  • Uygulama Kimliği: Yeni uygulamanın kimliği.
  • Sürüm": Karşıya yüklediğiniz uygulama paketinin sürümü.
  • Uygulama paketi:.zip yürütmek için gerekli olan uygulama ikili dosyalarını ve destek dosyalarını içeren bir dosyadır.

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

  • Bu Windows kimlik, alfasayısal karakterlerin, kısa çizgilerin ve alt çizgilerin herhangi bir bileşimini içerebilir. Linux düğümlerde yalnızca alfasayısal karakterlere ve alt çizgilere izin verilir.
  • 64 karakterden uzun olamaz.
  • Batch hesabı içinde benzersiz olmalıdır.
  • Kimlikler büyük/büyük/büyük/büyük harfe duyarlı değildir.

Hazır olduğunda Gönder'i seçin. .zip 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ı hızınıza bağlı olarak bu biraz zaman alır.

Yeni uygulama paketi ekleme

Mevcut bir uygulamaya uygulama paketi sürümü eklemek için Batch hesabınızla ilgili Uygulamalar bölümünde uygulamayı seçin ve ardından Ekle'yi seçin.

Yeni uygulama için olduğu gibi yeni paketinizin Sürümünü belirtin, Uygulama paketi alanına .zip dosyanızı 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 bölümünde uygulamayı seçin. Değiştirmek istediğiniz uygulama paketinin satırdaki üç noktayı seçin ve ardından gerçekleştirmek istediğiniz eylemi seçin.

Uygulama paketlerinin güncelleştirme ve silme seçeneklerini gösteren ekran görüntüsü Azure portal.

Güncelleştir'i seçerek yeni bir dosya .zip. Bu, önceki .zip için karşıya yüklediğiniz dosyanın yerini alar.

Sil'i seçmeniz, o sürümün silinmesini onaylamanız istenir. Tamam'ı seçmenizin ardından Batch .zip Azure Depolama siler. Bir uygulamanın varsayılan sürümünü silerseniz, bu uygulama için Varsayılan sürüm ayarı kaldırılır.

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

Uygulama paketlerini uygulama paketlerinde yönetmeyi öğrendiğiniz Azure portal, bunları işlem düğümlerine dağıtmayı ve Batch görevleriyle çalıştırmayı tartışabilirsiniz.

Havuz uygulama paketlerini yükleme

Bir havuza 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ılıp yeniden başlatılacak veya yeniden proje başlatılacak herhangi bir düğüme yüklenir.

Batch .NET'te, yeni bir havuz esnası veya var olan bir havuz için bir veya daha fazla CloudPool.ApplicationPackageReferences belirtin. ApplicationPackageReference sınıfı, havuzun işlem düğümlerine yüklanacak 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şaretlerve bu düğümde yürütme için hiçbir görev zamanılmaz. 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ı da yeniden sağlar.

Görev uygulaması paketlerini yükleme

Havuza benzer şekilde, bir görev için uygulama paketi başvuruları belirtirsiniz. Bir görev düğümde çalıştıracak şekilde zamanlandığı zamanlanmışsa, paket görevin komut satırı yürütülmeden hemen önce 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 uygulaması 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 indirilir ve düğümün içindeki adlandırılmış bir AZ_BATCH_ROOT_DIR dizine ayıklanır. Batch ayrıca adlandırılmış dizinin yolunu içeren bir ortam değişkeni oluşturur. Görev komut satırlarınız düğümdeki uygulamaya başvururken bu ortam değişkenini kullanır.

Bu Windows değişken aşağıdaki biçimdedir:

Windows:
AZ_BATCH_APP_PACKAGE_APPLICATIONID#version

Linux düğümlerde biçim biraz farklıdır. Ortam değişkende nokta (.), kısa çizgi (-) ve sayı işaretleri (#) alt çizgi olacak şekilde düzdür. Ayrıca uygulama kimliğinin büyük/yeni bir harfe sahip olduğunu unutmayın. Ö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üğümlerde yüklü olması gerektiğini belirttiyebilirsiniz; 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üğümlerde ortam değişkenlerini bu biçimde belirtin. Dönemleri (.), kısa çizgilerini (-) ve sayı işaretlerini (#) alt çizgi olarak düz ve uygulama kimliğinin büyük/küçük harflerini korur:

Linux:
AZ_BATCH_APP_PACKAGE_blender_2_7

Bir uygulama paketini karşıya yüklerken, işlem düğümlerinize dağıtacak varsayılan bir sürüm belirtebilirsiniz. Bir uygulama için varsayılan bir sürüm belirttiysanız, uygulamaya başvururken sürüm soneki atabilirsiniz. Varsayılan uygulama sürümünü, uygulama yönetimi Azure portal uygulamalar penceresinde gösterildiği gibi Upload belirtebilirsiniz.

Örneğin, "2.7" değerini uygulama blender için varsayılan sürüm olarak ayarlarsanız ve görevleriniz aşağıdaki ortam değişkenine başvurursa, Windows düğümleriniz 2.7 sürümünü yürütü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ı 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 bir uygulama paketiyle zaten yapılandırılmışsa, havuz için yeni bir paket belirtebilirsiniz. Diğer bir deyişle:

  • Batch hizmeti, yeni belirtilen paketi havuza eklenen tüm yeni düğümlere ve yeniden başlatılacak veya yeniden oluşturulan mevcut düğümlere yüklenir.
  • Paket başvurularını güncelleştirin, zaten havuzda olan işlem düğümleri yeni uygulama paketini otomatik olarak yüklemez. Bu işlem düğümlerinin yeni paketi almak için 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ı gösterir.

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

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ığından, Batch hizmeti havuza katılan yeni düğümlere 2.76b sürümünü yüklüdür. Zaten havuzda olan düğümlere 2,76b yüklemek için bunları yeniden başlatın veya yeniden görüntüden başlatın. Yeniden başlatan düğümlerin önceki paket dağıtımlarından dosyaları koruyarak.

Batch hesabı içinde uygulamaları listele

ApplicationOperations.ListApplicationSummaries yöntemini kullanarak uygulamaları ve bunların paketlerini bir Batch hesabında listeebilirsiniz.

// 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