Aracılığıyla paylaş


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 birini veya daha fazlasını havuzunuzdaki işlem düğümlerine otomatik olarak 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ında uygulama paketlerini karşıya yükleme ve yönetme adımları açıklanmaktadır. Ayrıca Batch .NET kitaplığıyla bir 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 yüksek uygulama paketi boyutuyla ilgili kısıtlamalar vardır. Daha fazla bilgi için Batch hizmeti kotaları ve sınırları bölümüne bakın.

Uyarı

5 Temmuz 2017'ye kadar oluşturulan toplu iş 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'te bir uygulama, havuzunuzdaki işlem düğümlerine otomatik olarak indirilebilen sürümlü ikili dosyalar kümesine denir. 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 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 uygulama 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 görüntülendiğinde 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ü düğümde zaten varsa, yeniden dağıtılmaz ve mevcut paket kullanılır.

    Görev uygulaması paketleri, farklı işlerin bir havuzda çalıştığı ve 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 uygulama 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. Uygulama dosyalarınızın birden çok sürümünü Azure Depolama'da veya düğümlerinizde 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 işlem düğümlerine dağıtmak için Azure Depolama ile arka planda çalışır.

Uyarı

Başlangıç görevinin toplam boyutu, kaynak dosyaları ve ortam değişkenleri 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.

Uygulama yüklemek ve yönetmek

Batch hesabınızdaki uygulama paketlerini yönetmek için Azure portalını veya Batch Yönetim API'lerini kullanabilirsiniz. Aşağıdaki bölümlerde bir depolama hesabını bağlama, Azure portalında uygulama ve uygulama paketleri ekleme ve yönetme hakkında bilgi edineceksiniz.

Uyarı

Arm şablonununMicrosoft.Batch/batchAccounts kaynağında uygulama değerleri 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ızın 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 depolama hesabı yapılandırılmadı" ifadesinin gösterildiği Uyarı penceresini seçin.
  2. Ardından 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 işlem düğümlerinize otomatik olarak 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 almayı ve kullanım dışı bırakılan paketleri düzenli aralıklarla kaldırmayı unutmayın.

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ında 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: 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 alfasayısal karakterlerin, kısa çizgilerin ve alt çizgilerin herhangi bir bileşimini 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 portal bir bildirim görüntüler. 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ındaki 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ümlerin 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 silmelere izin verilip verilmeyeceğini belirtir.

İşlem düğümünde uygulama paketinin dosya yapısını görmek için Azure portalında 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 uygulamalar 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ştirilip güncelleştirilemeyeceğ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 yine de eklenebilir.
  • Varsayılan sürüm: Herhangi 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 ile ilgili bilgileri görüntülerken kullanabileceği kolayca anlaşılabilir 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, 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 sayfasında uygulamayı seçin. Değiştirmek istediğiniz uygulama paketinin satırındaki üç nokta simgesini seçin. Ardından gerçekleştirmek istediğiniz eylemi seçin.

Azure portalında 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ını karşıya 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, bu uygulama için Varsayılan sürüm ayarı kaldırılır.

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

Azure portalında 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. Havuz için belirttiğiniz uygulama paketleri, havuzu birleştiren 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. Böyle bir 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 uygulaması 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. Belirtilen paket ve sürüm düğümde 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, 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şkenindeki alt çizgilerle düzleştirilmiştir. Ayrıca, uygulama kimliğinin durumu korunur. Örneğin:

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 harf durumunu 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, Azure portalında Uygulamalar penceresinde 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şvurursa, 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);

Tavsiye

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

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. Bu, şu anlama gelir:

  • 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 hesaplama düğümlerinin yeniden başlatılması veya yeniden görüntülenmesi 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, var olan havuz, CloudPool.ApplicationPackageReferences sürümünden biri olarak yapılandırılmış blender uygulamasının 2.7 sürümüne sahiptir. 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ş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 tüm 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ından 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