Aracılığıyla paylaş


Azure Batch en iyi uygulamaları

Bu makalede, Azure Batch hizmetini etkili bir şekilde kullanmaya yönelik en iyi yöntemler ve yararlı ipuçları ele alınmaktadır. Bu ipuçları, Batch çözümlerinizde performansı artırmanıza ve tasarım hatalarından kaçınmanıza yardımcı olabilir.

Tavsiye

Azure Batch'te güvenlik hakkında yönergeler için bkz . Batch güvenliği ve uyumluluğu için en iyi yöntemler.

Havuzlar

Havuzlar , Batch hizmetinde işleri yürütmek için kullanılacak işlem kaynaklarıdır. Aşağıdaki bölümlerde Batch havuzlarıyla çalışmaya yönelik öneriler sağlanır.

Havuz yapılandırması ve adlandırma

  • Havuz ayırma modu: Batch hesabı oluştururken iki havuz ayırma modu arasında seçim yapabilirsiniz: Batch hizmeti veya kullanıcı aboneliği. Çoğu durumda, havuzların Batch tarafından yönetilen aboneliklerde görünmez bir şekilde tahsis edildiği varsayılan Batch hizmet modunu kullanmanız gerekir. Alternatif kullanıcı aboneliği modunda, bir havuz oluşturulduğunda Batch VM'leri ve diğer kaynaklar doğrudan aboneliğinizde oluşturulur. Kullanıcı aboneliği hesapları öncelikle senaryoların küçük ama önemli bir alt kümesini etkinleştirmek için kullanılır. Daha fazla bilgi için bkz. Kullanıcı aboneliği modu yapılandırması.

  • classic veya simplified düğüm iletişim modu: Havuzlar, klasik veya basitleştirilmiş iki düğüm iletişim modundan birinde yapılandırılabilir. Klasik düğüm iletişim modelinde Batch hizmeti işlem düğümleriyle iletişim başlatır ve işlem düğümleri de Azure Depolama ile iletişim kurmanızı gerektirir. Basitleştirilmiş düğüm iletişim modelinde işlem düğümleri Batch hizmetiyle iletişim başlatır. Gelen/giden bağlantıların kapsamının azalması ve temel işlem için Azure Depolama giden erişimi gerektirmemesi nedeniyle, basitleştirilmiş düğüm iletişim modelinin kullanılması önerilir. Batch hizmetinde gelecekteki bazı iyileştirmeler için basitleştirilmiş düğüm iletişim modeli de gerekir. Klasik düğüm iletişim modeli 31 Mart 2026'da kullanımdan kaldırılacaktır.

  • İş ve görev çalışma süresiyle ilgili dikkat edilmesi gerekenler: Öncelikle kısa süreli görevlerden oluşan işleriniz varsa ve beklenen toplam görev sayısı küçükse, işin beklenen genel çalışma süresi uzun olmayacaksa, her iş için yeni bir havuz ayırmayın. Düğümlerin ayırma süresi işin çalışma süresini azaltacaktır.

  • Birden çok işlem düğümü: Tek tek düğümlerin her zaman kullanılabilir olması garanti değildir. Yaygın olmasa da, donanım hataları, işletim sistemi güncellemeleri ve bir dizi diğer sorunlar, bireysel düğümlerin çevrimdışı olmasına neden olabilir. Batch iş yükünüz belirleyici ve garantili ilerleme gerektiriyorsa, birden çok düğüme sahip havuzlar ayırmanız gerekir.

  • Yaklaşan kullanım süresi sonu (EOL) tarihleri olan görüntüler: Yaklaşan Batch desteği kullanım süresi sonu (EOL) tarihlerine sahip görüntülerden kaçınmanız kesinlikle önerilir. Bu tarihler API, ListSupportedImages veya Azure CLI aracılığıyla bulunabilir. Havuzlarınıza ilişkin EOL tarihlerine ilişkin görünümünüzü düzenli aralıklarla yenilemek ve EOL tarihi gerçekleşmeden önce iş yüklerinizi geçirmek sizin sorumluluğunuzdadır. Belirli bir düğüm aracısı ile özel görüntü kullanıyorsanız, özel görüntünüzün türetildiği veya hizalandığı görüntü için Batch desteği kullanım süresi sonu tarihlerini izlediğinizden emin olun. Belirtilen batchSupportEndOfLife tarih olmayan bir görüntü, böyle bir tarihin Batch hizmeti tarafından henüz belirlenmediğini gösterir. Bir tarihin olmaması, ilgili görüntünün süresiz olarak desteklendiğini göstermez. Gelecekte herhangi bir zamanda bir EOL tarihi eklenebilir veya güncelleştirilebilir.

  • Yaklaşan kullanım süresi sonu (EOL) tarihlerine sahip VM SKU'ları: VM görüntülerinde olduğu gibi VM SKU'ları veya aileleri de Batch desteği kullanım ömrü sonuna (EOL) ulaşabilir. Bu tarihler API, ListSupportedVirtualMachineSkus veya Azure CLI aracılığıyla bulunabilir. Desteklenen uygun VM SKU'su ile yeni bir havuz oluşturarak iş yükünüzün EOL olmayan bir VM SKU'sunun geçişini planlayın. VM SKU'su için ilişkili batchSupportEndOfLife tarihin olmaması, belirli bir VM SKU'sunun süresiz olarak desteklendiğini göstermez. Gelecekte herhangi bir zamanda bir EOL tarihi eklenebilir veya güncelleştirilebilir.

  • Benzersiz kaynak adları: Toplu iş kaynakları (işler, havuzlar vb.) genellikle zaman içinde değişebilir. Örneğin, Pazartesi günü bir havuz oluşturabilir, Salı günü silebilir ve ardından Perşembe günü benzer bir havuz oluşturabilirsiniz. Oluşturduğunuz her yeni kaynağa daha önce kullanmadığınız benzersiz bir ad verilmelidir. GUID kullanarak (tüm kaynak adı olarak veya bir parçası olarak) veya kaynağın oluşturulduğu tarih ve saati kaynak adına ekleyerek benzersizlik oluşturabilirsiniz. Batch, gerçek kaynak kimliği insan dostu olmayan bir şey olsa bile kaynağa daha okunabilir bir ad verebilen DisplayName'i destekler. Benzersiz adlar kullanmak, günlüklerde ve ölçümlerde hangi kaynağın bir şey yaptığını ayırt etmenizi kolaylaştırır. Ayrıca, bir kaynak için destek talebi göndermeniz gerekirse belirsizliği de kaldırır.

  • Havuz bakımı ve hatası sırasında süreklilik: İşlerinizin havuzları dinamik olarak kullanmasını sağlamak en iyisidir. İşleriniz her şey için aynı havuzu kullanıyorsa, havuzda bir sorun olduğunda işlerin çalışmama olasılığı vardır. Bu ilke özellikle zamana duyarlı iş yükleri için önemlidir. Örneğin, her işi zamanlarken dinamik bir şekilde bir havuz seçin veya oluşturun ya da sağlıksız havuzdan kaçınabilmeniz için havuz adını değiştirebilmenin bir yolu olsun.

  • Havuz bakımı ve hatası sırasında iş sürekliliği: İç hatalar veya kapasite kısıtlamaları gibi bir havuzun istediğiniz boyuta kadar büyümemesinin birçok nedeni vardır. Gerekirse işleri farklı bir havuzda ( updatejob kullanarak farklı bir VM boyutuyla) yeniden hedefleyebileceğinizden emin olun. Hiçbir zaman silinmeyeceği ve hiçbir zaman değişmeyeceği beklentisiyle statik havuz kimliğine güvenmekten kaçının.

Havuz güvenliği

Yalıtım sınırı

Yalıtım amacıyla, senaryonuz işleri veya görevleri birbirinden yalıtma gerektiriyorsa, bunu ayrı havuzlarda yaparak yapın. Havuz, Batch'teki güvenlik yalıtımı sınırıdır ve varsayılan olarak iki havuz görünür değildir veya birbirleriyle iletişim kuramaz. Batch hesabının çalıştığı büyük ortam yalıtım gerektirmediği sürece ayrı Batch hesaplarını güvenlik yalıtımı aracı olarak kullanmaktan kaçının.

İsterseniz, Batch hesabı altındaki tüm havuzlara erişimi önlemek için Batch hesabına ve API'lerine uygun erişim denetimi uygulanmalıdır. Paylaşılan anahtar erişimini devre dışı bırakmak ve rol tabanlı erişim denetimini etkinleştirmek için yalnızca Entra tabanlı kimlik doğrulamasına izin vermek önerilir.

Batch Node Aracısı güncelleştirmeleri

Batch düğüm aracıları, sıfır olmayan işlem düğümlerine sahip havuzlar için otomatik olarak yükseltilmez. Batch havuzlarınızın Batch düğümü aracısı için en son güvenlik düzeltmelerini ve güncelleştirmelerini aldığından emin olmak için havuzu sıfır işlem düğümüne yeniden boyutlandırmanız veya havuzu yeniden oluşturmanız gerekir. Yeni Batch düğüm aracısı sürümlerindeki değişiklikleri anlamak için Batch Node Aracısı sürüm notlarını izlemeniz önerilir. Güncelleştirmelerin ne zaman yayımlandığını düzenli olarak denetlemek, en son aracı sürümüne yükseltmeleri planlamanıza olanak tanır.

Havuzunuzu yeniden oluşturmadan veya yeniden boyutlandırmadan önce, Batch havuzunuzda veya işlem düğümlerinizde sorunlarla karşılaşıyorsanız hata ayıklama amacıyla düğüm aracısı günlüklerini indirmeniz gerekir. Bu işlem Düğümler bölümünde daha ayrıntılı olarak açıklanmıştır.

Uyarı

Azure Batch'te güvenlik hakkında genel yönergeler için bkz . Batch güvenliği ve uyumluluğu için en iyi yöntemler.

İşletim sistemi güncelleştirmeleri

Batch havuzu için seçilen VM görüntüsünün yayımcı tarafından sağlanan en son güvenlik güncelleştirmeleriyle up-totarihe sahip olması önerilir. Bazı görüntüler, önyükleme sırasında (veya kısa bir süre sonra) otomatik paket güncelleştirmeleri gerçekleştirebilir. Bu, paket deposu güncelleştirmelerini alma (örneğin, apt update) veya StartTask gibi eylemler sırasında paketleri yükleme gibi belirli kullanıcı tarafından yönlendirilen eylemleri etkileyebilir.

Temel alınan Azure altyapısının havuz genelinde güncelleştirmeleri koordine etmesini sağlayan Batch havuzları için Otomatik İşletim Sistemi yükseltmesinin etkinleştirilmesi önerilir. Bu seçenek, görev yürütme için kesintisiz olacak şekilde yapılandırılabilir. Otomatik işletim sistemi yükseltmesi, Batch'in desteklediği tüm işletim sistemlerini desteklemez. Daha fazla bilgi için bkz. Sanal Makine Ölçek Kümeleri Otomatik İşletim Sistemi yükseltmesi Destek Matrisi. Windows işletim sistemleri için Batch havuzunda Otomatik İşletim Sistemi yükseltmesini kullanırken özelliğini virtualMachineConfiguration.windowsConfiguration.enableAutomaticUpdates etkinleştirmediğinizden emin olun.

Azure Batch, hizmetle birlikte kullanılmasına izin verilen görüntülerin en son güvenlik güncelleştirmelerine sahip olduğunu doğrulamaz veya garanti etmez. Görüntülerdeki güncelleştirmeler, Azure Batch'in değil, görüntünün yayımcısının görünümü altındadır. microsoft-azure-batch altında yayımlanan belirli görüntüler için, bu görüntülerin orijinal kaynak türetilmiş görüntüleriyle up-togüncel tutulmasının garantisi yoktur.

Havuz ömrü ve faturalama

Havuz ömrü, havuz yapılandırmasına uygulanan ayırma yöntemine ve seçeneklere bağlı olarak değişebilir. Havuzlar herhangi bir noktada rastgele bir yaşam süresine ve değişen sayıda işlem düğümüne sahip olabilir. Havuzdaki işlem düğümlerini açıkça veya hizmet tarafından sağlanan özellikler (otomatik ölçeklendirme veya otomatik havuz) aracılığıyla yönetmek sizin sorumluluğunuzdadır.

  • Havuz rekreasyonu: Havuzları günlük olarak silmekten ve yeniden oluşturmaktan kaçının. Bunun yerine yeni bir havuz oluşturun ve mevcut işlerinizi yeni havuza işaret eden şekilde güncelleştirin. Tüm görevler yeni havuza taşındıktan sonra eski havuzu silin.

  • Havuz verimliliği ve faturalama: Batch işlemi için ek ücret alınmaz. Ancak işlem, depolama, ağ ve Batch iş yükünüz için gerekli olabilecek diğer kaynaklar gibi kullanılan Azure kaynakları için ücretlendirilirsiniz. Durumundan bağımsız olarak havuzdaki her işlem düğümü için faturalandırılırsınız. Daha fazla bilgi için bkz. Azure Batch için maliyet analizi ve bütçeler.

  • Kısa ömürlü işletim sistemi diskleri: Sanal Makine Yapılandırma havuzları, yönetilen disklerle ilişkili ek maliyetleri önlemek için VM önbelleğinde veya geçici SSD'de işletim sistemi diski oluşturan kısa ömürlü işletim sistemi disklerini kullanabilir.

Havuz tahsis hataları

Havuz ayırma hataları, ilk ayırma veya sonraki yeniden boyutlandırmalar sırasında herhangi bir noktada oluşabilir. Bu hatalar, bir bölgedeki geçici kapasite tükenmesi veya Batch'in bağlı olduğu diğer Azure hizmetlerindeki hatalardan kaynaklanabilir. Çekirdek kotanız bir garanti değil, bir sınırdır.

Planlanmamış kapalı kalma süresi

Batch havuzlarının Azure'da kesinti olayları yaşaması mümkündür. Sorunların ortaya çıkabileceğini anlamak ve iş akışınızı yeniden yürütmelere dayanıklı olacak şekilde geliştirmeniz gerekir. Düğümler başarısız olursa Batch otomatik olarak sizin yerinize bu işlem düğümlerini kurtarmayı dener. Bu kurtarma, geri yüklenen düğümde veya farklı bir kullanılabilir düğümde herhangi bir çalışan görevin yeniden zamanlanmasını tetikleyebilir. Kesilen görevler hakkında daha fazla bilgi edinmek için bkz. Yeniden denemeler için tasarlama.

Özel görüntü havuzları

Sanal Makine Yapılandırmasını kullanarak bir Azure Batch havuzu oluşturduğunuzda, havuzdaki her işlem düğümü için işletim sistemini sağlayan bir VM görüntüsü belirtirsiniz. Havuzu desteklenen bir Azure Market görüntüsüyle veya Azure İşlem Galerisi görüntüsüyle özel görüntü oluşturabilirsiniz. Özel görüntü havuzu oluşturmak için yönetilen görüntü de kullanabilirsiniz ancak mümkün olduğunda Azure İşlem Galerisi'ni kullanarak özel görüntüler oluşturmanızı öneririz. Azure İşlem Galerisi'ni kullanmak havuzları daha hızlı sağlamanıza, daha büyük miktarlarda VM'yi ölçeklendirmenize ve VM'leri sağlarken güvenilirliği artırmanıza yardımcı olur.

Üçüncü taraf resimleri

Havuzlar, Azure Market'te yayımlanan üçüncü taraf görüntüleri kullanılarak oluşturulabilir. Kullanıcı aboneliği modu Batch hesaplarıyla, belirli üçüncü taraf görüntülerini kullanarak havuz oluşturduğunuzda "Market satın alma uygunluğu denetimi nedeniyle ayırma başarısız oldu" hatasını görebilirsiniz. Bu hatayı çözmek için görüntünün yayımcısı tarafından ayarlanan koşulları kabul edin. Azure PowerShell veya AzureCLI kullanarak bunu yapabilirsiniz.

Kapsayıcı havuzları

Sanal ağ ile bir Batch havuzu oluşturduğunuzda, belirtilen sanal ağ ile varsayılan Docker köprüsü arasında etkileşim yan etkileri olabilir. Docker, varsayılan olarak alt ağ belirtimine 172.17.0.0/16sahip bir ağ köprüsü oluşturur. Docker ağ köprüsü ile sanal ağınız arasında çakışan IP aralıkları olmadığından emin olun.

Docker Hub, görüntü çekme sayısını sınırlar. İş yükünüzün Docker Hub tabanlı görüntüler için yayımlanan hız sınırlarını aşmadığından emin olun. Azure Container Registry'nin doğrudan kullanılması veya ACR'de Yapıt önbelleğinden yararlanması önerilir.

Azure bölge bağımlılığı

Zamana duyarlı veya üretim iş yükünüz varsa tek bir Azure bölgesine güvenmemelisiniz. Nadir olsa da, bölgenin tamamını etkileyebilecek sorunlar vardır. Örneğin, işlemenizin belirli bir zamanda başlaması gerekiyorsa, başlangıç zamanından önce birincil bölgenizdeki havuzun ölçeğini artırmayı göz önünde bulundurun. Bu havuz ölçeği başarısız olursa, yedekleme bölgesindeki (veya bölgelerindeki) bir havuzun ölçeğini artırmaya geri dönebilirsiniz.

Farklı bölgelerdeki birden çok hesaptaki havuzlar, başka bir havuzla ilgili bir sorun olması durumunda hazır, kolay erişilebilir bir yedekleme sağlar. Daha fazla bilgi için bkz . Uygulamanızı yüksek kullanılabilirlik için tasarlama.

Işleri

İş, yüzlerce, binlerce, hatta milyonlarca görev içerecek şekilde tasarlanmış bir kapsayıcıdır. İş oluştururken bu yönergeleri izleyin.

Daha az iş, daha fazla görev

Tek bir görevi çalıştırmak için iş kullanmak verimsizdir. Örneğin, her biri 10 görev içeren 100 iş oluşturmak yerine 1.000 görev içeren tek bir işi kullanmak daha verimlidir. Eğer her biri tek bir görev içeren 1.000 işi kullandıysanız, bu, en az verimli, en yavaş ve en pahalı yaklaşım olacaktır.

Aynı anda etkin binlerce iş gerektiren bir Batch çözümü tasarlamaktan kaçının. Görevler için kota yoktur, bu nedenle mümkün olduğunca az iş altında birçok görevi yürütmek işinizi ve iş zamanlama kotalarınızı verimli bir şekilde kullanır.

İş ömrü

Batch işinin süresi, sistemden silinene kadar süresizdir. Durumu, zamanlama için daha fazla görev kabul edip etmeyeceğini belirtir.

İş, açıkça sonlandırılmadığı sürece otomatik olarak tamamlanmış duruma taşınmaz. Bu eylem , onAllTasksComplete özelliği veya maxWallClockTime aracılığıyla otomatik olarak tetiklenebilir.

Varsayılan etkin iş ve iş zamanlama kotası vardır. Tamamlanmış durumdaki işler ve iş zamanlamaları bu kotaya dahil edilmez.

Tamamlanmış durumda olsa bile artık gerekli olmayan işleri silin. Tamamlanan işler etkin iş kotasına göre sayılmaz, ancak tamamlanan işleri düzenli aralıklarla temizlemek yararlı olur. Örneğin, toplam iş sayısı daha küçük bir küme olduğunda (isteğe uygun filtreler uygulansa bile) işleri listelemek daha verimli olur.

Görevler

Görevler , bir işi oluşturan tek tek çalışma birimleridir. Görevler kullanıcı tarafından gönderilir ve Batch tarafından işlem düğümlerine zamanlanır. Aşağıdaki bölümler, görevlerinizi sorunları işleyecek ve verimli bir şekilde gerçekleştirecek şekilde tasarlamaya yönelik öneriler sağlar.

Görev verilerini kaydetme

İşlem düğümleri doğası gereği kısa ömürlü olur. Otomatik biriktirme ve otomatik ölçeklendirme gibi toplu iş özellikleri, düğümlerin kaybolmasını kolaylaştırabilir. Düğümler havuzdan ayrıldığında (yeniden boyutlandırma veya havuz silme nedeniyle), bu düğümler üzerindeki tüm dosyalar da silinir. Bu davranış nedeniyle, bir görev tamamlanmadan önce çıktısını çalışmakta olduğu düğümden alıp dayanıklı bir depoya taşımalıdır. Benzer şekilde, bir görev başarısız olursa, başarısızlığı teşhis etmek için gereken günlükleri dayanıklı bir depoya taşıması gerekir.

Batch, OutputFiles aracılığıyla ve çeşitli paylaşılan dosya sistemleriyle verileri karşıya yüklemek için Azure Depolama'yı tümleştirmiştir veya karşıya yüklemeyi görevlerinizde kendiniz gerçekleştirebilirsiniz.

Görev ömrünü yönetme

Artık gerekli olmadığında görevleri silin veya retentionTime görev kısıtlaması ayarlayın. bir retentionTime ayarlanırsa Batch, süresi dolduğunda retentionTime görev tarafından kullanılan disk alanını otomatik olarak temizler.

Görevleri silmek iki şeyi gerçekleştirir:

  • İş içinde birikmiş görevlere sahip olmadığınızı güvence altına alır. Bu eylem, Tamamlanan görevler arasında filtreleme yapmanız gerekeceği için ilgilendiğiniz görevi bulmakta zorluk çekmemeye yardımcı olur.
  • Düğümdeki ilgili görev verilerini temizler (eğer retentionTime henüz vurulmadıysa). Bu eylem, düğümlerinizin görev verileriyle dolarak disk alanının tükenmemesini sağlamaya yardımcı olur.

Uyarı

Batch'e yeni gönderilen görevler için DeleteTask API çağrısının geçerlilik kazanması 10 dakika kadar sürer. Geçerlilik kazanmadan önce diğer görevlerin zamanlanması engellenebilir. Bunun nedeni Batch Scheduler'ın yeni silinen görevleri zamanlamayı denemesidir. Gönderildikten kısa bir süre sonra bir görevi silmek istiyorsanız, lütfen bunun yerine görevi sonlandırın (sonlandırma görevi isteği hemen geçerli olacağından). Ardından 10 dakika sonra görevi silin.

Koleksiyonda çok sayıda görev gönderme

Görevler tek tek veya koleksiyonlarda gönderilebilir. Ek yükü ve gönderim süresini azaltmak için görevleri toplu gönderim yaparken bir kerede 100'e kadar olan koleksiyonlarda görev gönderin.

Düğüm başına en fazla görev sayısını uygun şekilde ayarlayın

Batch, düğümlerde görevlerin aşırı tahsis edilmesini destekler (düğümdeki çekirdeklerden daha fazla görev çalıştırmak). Görevlerinizin havuzunuzdaki düğümler için doğru boyutta olduğundan emin olmak size bağlıdır. Örneğin, her biri 25% CPU kullanımını tüketen sekiz görevi bir düğümde (bir taskSlotsPerNode = 8 havuzunun parçası olarak) zamanlamayı denerseniz, performansı düşürülmüş bir deneyim yaşayabilirsiniz.

Yeniden denemeler ve yeniden yürütme için tasarım

Görevler Batch tarafından otomatik olarak yeniden denenebilir. İki tür yeniden deneme vardır: kullanıcı tarafından denetlenen ve dahili. Kullanıcı tarafından denetlenen yeniden denemeler, görevin maxTaskRetryCount değeriyle belirtilir. Görevde belirtilen bir program sıfır olmayan bir çıkış koduyla çıktığında, görev değerine maxTaskRetryCountkadar yeniden denenecek.

Her ne kadar nadir olsa da, işlem düğümündeki iç durumu güncelleştirememe veya görev çalışırken düğümde oluşan bir hata gibi sorunlar, bir görevin sistem içinde yeniden denenmesine neden olabilir. Görev, mümkünse, bir iç sınıra kadar aynı işlem düğümünde yeniden denenecektir; iptal edilmeden önce görev Batch tarafından yeniden zamanlanmak üzere ertelenebilir, bu da muhtemelen farklı bir işlem düğümünde gerçekleşebilir.

Görevlerinizi ayrılmış veya Spot düğümlerde yürütürken tasarım açısından farklılıklar yoktur. Bir görev Spot düğümde çalışırken ertelenirse veya ayrılmış bir düğümdeki bir hata nedeniyle kesintiye uğrarsa, her iki durum da görevin hataya dayanıklı olacak şekilde tasarlanmasıyla çözümlenir.

Dayanıklı görevler oluşturma

Görevler hataya dayanacak ve yeniden denenmeye uygun olacak şekilde tasarlanmalıdır. Bu ilke özellikle uzun süre çalışan görevler için önemlidir. Görevlerinizin birden çok kez çalıştırıldığında bile aynı, tek sonucu oluşturduğundan emin olun. Bu sonuca ulaşmanın bir yolu, görevlerinizi "hedef odaklı hale getirmek"tir. Bir diğer yol, görevlerinizin idempotent olduğundan emin olmaktır (görevler ister bir kez ister defalarca çalıştırılsın aynı sonucu verir).

Yaygın bir örnek, dosyaları bir işlem düğümüne kopyalama görevidir. Basit bir yaklaşım, her çalıştığında belirtilen tüm dosyaları kopyalayan, verimli olmayan ve hatalara karşı dayanıklı olacak şekilde tasarlanmamış bir görevdir. Bunun yerine, dosyaların işlem düğümünde olduğundan emin olmak için bir görev oluşturun; zaten var olan dosyaları yeniden kopyalamayan bir görev. Bu şekilde, görev kesintiye uğrarsa kaldığınız yerden devam eder.

Kısa yürütme süresinden kaçının

Yalnızca bir ile iki saniye arasında çalışan görevler ideal değildir. Tek bir görevde önemli miktarda çalışma yapmaya çalışın (en az 10 saniye, saat veya günlere kadar). Her görev bir dakika (veya daha fazla) boyunca yürütülüyorsa, genel işlem süresinin bir bölümü olarak zamanlama ek yükü küçüktür.

Windows düğümlerinde kısa görevler için havuz kapsamını kullanma

Batch düğümlerinde bir görevi zamanladığınızda, görev kapsamında mı yoksa havuz kapsamında mı çalıştırmayı tercih edebilirsiniz. Görev yalnızca kısa bir süre çalışacaksa, görev için otomatik kullanıcı hesabını oluşturmak için gereken kaynaklar nedeniyle görev kapsamı verimsiz olabilir. Daha fazla verimlilik için bu görevleri havuz kapsamına ayarlamayı göz önünde bulundurun. Daha fazla bilgi için bkz. Görevi havuz kapsamına sahip otomatik kullanıcı olarak çalıştırma.

Düğüm

İşlem düğümü, uygulamanızın iş yükünün bir bölümünü işlemeye ayrılmış bir Azure sanal makinesi (VM) veya bulut hizmeti VM'dir. Düğümlerle çalışırken bu kılavuzları izleyin.

Görevleri başlatma: yaşam süresi ve idempotentlik

Diğer görevlerde olduğu gibi düğüm başlatma görevi de aynı etkiye sahip olmalıdır. İşlem düğümü yeniden başlatıldığında veya Batch aracısı yeniden başlatıldığında başlangıç görevleri yeniden çalıştırılır. Aynı sonucu üreten idempotent bir görev, birden çok kez çalıştırıldığında tutarlı bir sonuç üreten görevdir.

Başlangıç görevleri uzun süre çalışmamalı veya işlem düğümünün ömrüyle birleştirilmemelidir. Hizmet veya hizmet benzeri programları doğası gereği başlatmanız gerekiyorsa, bu programların Linux veya Windows Hizmetleri gibi systemd işletim sistemi tesisleri tarafından başlatılmasını ve yönetilmesini sağlayan bir başlangıç görevi oluşturun. Bu programlar daha önce hizmet olarak yüklenmişse, başlangıç görevinin sonraki yürütmesi düzgün şekilde işlenecek şekilde başlatma görevi yine de bir kez etkili olarak oluşturulmalıdır.

Tavsiye

Batch başlangıç görevinizi yeniden çalıştırdığında, başlangıç görevi dizinini silmeyi ve yeniden oluşturmayı dener. Batch başlangıç görevi dizinini yeniden oluşturamazsa işlem düğümü başlangıç görevini başlatamaz.

Bu hizmetler düğümdeki Batch tarafından yönetilen dizinlerdeki hiçbir dosyada dosya kilitleri almamalıdır, aksi takdirde Batch dosya kilitleri nedeniyle bu dizinleri silemez. Örneğin, hizmetin başlatılmasını doğrudan başlangıç görevi çalışma dizininden yapılandırmak yerine, dosyaları bir kez etkili bir şekilde başka bir yere kopyalayın. Ardından işletim sistemi olanaklarını kullanarak hizmeti bu konumdan yükleyin.

Yalıtılmış düğümler

Uyumluluk veya mevzuat gereksinimleri olan iş yükleri için yalıtılmış VM boyutlarını kullanmayı göz önünde bulundurun. Sanal makine yapılandırma modunda desteklenen yalıtılmış boyutlar şunlardır: Standard_E80ids_v4, Standard_M128ms, Standard_F72s_v2, Standard_G5, Standard_GS5, ve Standard_E64i_v3. Yalıtılmış VM boyutları hakkında daha fazla bilgi için bkz. Azure'da sanal makine yalıtımı.

Windows'ta dizin birleşimleri oluşturmaktan kaçının

Bazen dizin sabit bağlantıları olarak da adlandırılan dizin bağlantı noktalarının görev ve iş temizleme sırasında yönetilmesi zordur. Sabit bağlantılar yerine symlinks (geçici bağlantılar) kullanın.

Geçici diskler ve AZ_BATCH_NODE_ROOT_DIR

Batch, görev yürütmeyle ilgili meta verileri ve her görev yürütmesinin yapıtlarını bu geçici disk üzerinde depolamak için, Batch uyumlu VM boyutları için VM geçici disklerine dayanır. Bu geçici disk bağlama noktalarına veya dizinlerine örnek olarak şunlar verilebilir: /mnt/batch, /mnt/resource/batchve D:\batch\tasks. Bu bağlama noktalarını ve dizinlerini veya üst dizinleri değiştirme, yeniden bağlama, birleşim, bağlantı oluşturma veya başka bir şekilde yeniden yönlendirme desteklenmez ve tutarsızlığa yol açabilir. Daha fazla disk alanı gerekiyorsa, gereksinimlerinizi karşılayan geçici disk alanına sahip bir VM boyutu veya ailesi kullanmayı veya veri diskleri eklemeyi göz önünde bulundurun. Daha fazla bilgi için işlem düğümleri için veri diskleri ekleme ve hazırlama hakkındaki sonraki bölüme bakın.

Veri disklerini ekleme ve hazırlama

Her bir işlem düğümü, Batch havuzu örneğinin bir parçası olarak belirtilirse, tam olarak aynı veri diski belirtimine sahiptir. Batch havuzlarına yalnızca yeni veri diskleri eklenebilir. İşlem düğümlerine eklenen bu veri diskleri otomatik olarak bölümlenmez, biçimlendirilmez ve bağlanmaz. Bu işlemleri başlangıç görevinizin bir parçası olarak gerçekleştirmek sizin sorumluluğunuzdadır. Bu başlangıç görevleri, birden fazla kez çalıştırıldığında aynı sonucu verecek şekilde oluşturulmalıdır. İşlem düğümlerinde başlangıç görevlerinin yeniden yürütülmesi mümkündür. Başlangıç görevi idempotent değilse, veri disklerinde potansiyel veri kaybı oluşabilir.

Tavsiye

Linux'ta bir veri diski monte edilirken, eğer disk bağlama noktası /mnt veya /mnt/resource gibi Azure geçici bağlama noktaları altında iç içe yerleştiriliyorsa, bağımlılık yarış koşullarının oluşmamasına dikkat edilmelidir. Örneğin, bu bağlamalar işletim sistemi tarafından otomatik olarak gerçekleştiriliyorsa, geçici diskin monte edilmesi ile veri disk(ler)inizin ana dizin altında monte edilmesi arasında bir yarış olabilir. Uygun bağımlılıkların, systemd gibi mevcut tesisler tarafından uygulanmasını sağlamak veya veri diskinin bağlanmasını veri diski hazırlama betiğinizin idempotent başlangıç görevine ertelemek için adımlar atılmalıdır.

Linux Batch havuzlarında veri disklerini hazırlama

Linux'taki Azure veri diskleri blok cihazları olarak sunulur ve tipik sd[X] bir tanımlayıcı atanır. Bu etiketler önyükleme zamanında dinamik olarak atandığından ve ilk ve sonraki önyüklemeler arasında tutarlı olacağı garanti edilmediğinden statik sd[X] atamalara güvenmemelisiniz. Ekli disklerinizi /dev/disk/azure/scsi1/ içinde sunulan eşlemeler aracılığıyla tanımlamalısınız. Örneğin, AddPool API'sinde veri diskiniz için LUN 0 belirttiyseniz, bu disk olarak /dev/disk/azure/scsi1/lun0bildirimde bulunur. Örneğin, bu dizini listelediyseniz şunları görebilirsiniz:

user@host:~$ ls -l /dev/disk/azure/scsi1/
total 0
lrwxrwxrwx 1 root root 12 Oct 31 15:16 lun0 -> ../../../sdc

Hazırlık betiğinizde referansı sd[X] eşlemeye geri döndürmeniz gerekmez, bunun yerine doğrudan cihaza atıfta bulunun. Bu örnekte, bu cihaz olacaktır /dev/disk/azure/scsi1/lun0. Bu kimliği doğrudan fdisk, mkfsve iş akışınız için gereken diğer araçlara sağlayabilirsiniz. Alternatif olarak, diskin UUID'sini eşlemek için lsblkblkid ile kullanabilirsiniz.

Veri disklerini ve /etc/fstab seçenekleri bulmanın alternatif yöntemleri de dahil olmak üzere Linux'taki Azure veri diskleri hakkında daha fazla bilgi için bu makaleye bakın. Yönteminizi üretim kullanımına yükseltmeden önce İpucu notu tarafından açıklandığı gibi bağımlılık veya yarış olmadığından emin olun.

Windows Batch havuzlarında veri disklerini hazırlama

Batch Windows işlem düğümlerine eklenen Azure veri diskleri bölümlenmemiş ve biçimlendirilmemiş olarak sunulur. Başlangıç görevinizin bir parçası olarak eyleme geçmek için diskleri bölümlere RAW göre listelemeniz gerekir. Bu bilgiler PowerShell cmdlet'i Get-Disk kullanılarak alınabilir. Örnek olarak şunları görebilirsiniz:

PS C:\Windows\system32> Get-Disk

Number Friendly Name Serial Number                    HealthStatus         OperationalStatus      Total Size Partition
                                                                                                             Style
------ ------------- -------------                    ------------         -----------------      ---------- ----------
0      Virtual HD                                     Healthy              Online                      30 GB MBR
1      Virtual HD                                     Healthy              Online                      32 GB MBR
2      Msft Virtu...                                  Healthy              Online                      64 GB RAW

Burada 2 numaralı disk, bu işlem düğümüne bağlı başlatılmamış veri diskidir. Bu diskler daha sonra iş akışınız için gerektiği şekilde başlatılabilir, bölümlenebilir ve biçimlendirilebilir.

Örnek PowerShell betikleri de dahil olmak üzere Windows'daki Azure veri diskleri hakkında daha fazla bilgi için bu makaleye bakın. Üretim kullanımına yükseltmeden önce örnek betiklerin aynı anda geçerli olup olmadığının doğrulandığından emin olun.

Batch aracı günlüklerini toplama

Eğer bir düğümün veya bir düğümde çalışan görevlerin davranışı ile ilgili bir sorun fark ederseniz, söz konusu düğümleri ayırmadan önce Batch aracısı günlüklerini toplayın. Batch aracı günlükleri, Batch hizmet günlüklerini karşıya yükleme API'sini kullanarak toplanabilir. Bu günlükler Microsoft'a yönelik bir destek biletinin parçası olarak sağlanabilir ve sorun giderme ve çözüm konusunda yardımcı olur.

Batch API'si

Zaman Aşımı Hataları

Zaman aşımı hataları, hizmetin isteği işleyememiş olabileceği anlamına gelmez. Zaman aşımı hatası oluştuğunda, işlemin başarılı veya başarısız olup olmadığını doğrulamak için işlemi yeniden denemeniz veya duruma uygun olarak kaynağın durumunu almanız gerekir.

Bağlantı

Batch çözümlerinizde bağlantıyla ilgili aşağıdaki kılavuzu gözden geçirin.

Ağ Güvenlik Grupları (NSG) ve Kullanıcı Tanımlı Yollar (UDR)

Bir sanal ağda Batch havuzları sağlarken BatchNodeManagement kullanımıyla ilgili yönergeleri yakından izlediğinize emin olun. bölge hizmet etiketi, bağlantı noktaları, protokoller ve kuralın yönü. Hizmet etiketinin kullanılması şiddetle tavsiye edilir; zamanla değişebilecekleri için alt düzeydeki Batch hizmeti IP adreslerini kullanmayın. Batch hizmeti IP adreslerinin doğrudan kullanılması, Batch havuzlarınızda istikrarsızlık, kesinti veya kesintilere neden olabilir.

Kullanıcı Tanımlı Yollar (UDR) için, Batch hizmeti IP adresleri zaman içinde değişebileceğinden, BatchNodeManagement bölgehizmet etiketleri kullanılması önerilir.

DNS'yi onurlandırma

Sistemlerinizin Batch hesabı hizmet URL'niz için DNS Yaşam Süresi'ne (TTL) uygun olduğundan emin olun. Ayrıca, Batch hizmeti istemcilerinizin ve Batch hizmetine yönelik diğer bağlantı mekanizmalarınızın IP adreslerine güvenmediğinden emin olun.

Yanıttaki "Bağlantı: kapat" üst bilgisinin yanı sıra 5xx düzey durum kodları içeren tüm HTTP istekleri, Batch hizmeti istemci davranışınızın ayarlanmasını gerektirir. Batch hizmeti istemciniz mevcut bağlantıyı kapatarak, Batch hesabı hizmeti URL'si için DNS'yi yeniden çözümleyerek ve yeni bir bağlantı üzerinden istekleri gerçekleştirmeye çalışarak öneriyi yerine getirmelidir.

İstekleri otomatik olarak yeniden deneme

Batch hizmeti istemcilerinizin, yalnızca herhangi bir hizmet bakım süresi boyunca değil, normal işlem sırasında bile isteklerinizi otomatik olarak yeniden denemek için uygun yeniden deneme ilkelerine sahip olduğundan emin olun. Bu yeniden deneme ilkeleri en az 5 dakikalık bir zaman aralığına yayılmalıdır. Otomatik yeniden deneme özellikleri , .NET RetryPolicyProvider sınıfı gibi çeşitli Batch SDK'larıyla sağlanır.

Statik genel IP adresleri

Genellikle, batch havuzundaki sanal makinelere havuzun ömrü boyunca değişebilen genel IP adresleri üzerinden erişilir. Bu dinamik doğa, erişimi belirli IP adresleriyle sınırlayan bir veritabanı veya diğer dış hizmetle etkileşim kurmayı zorlaştırabilir. Bu sorunu gidermek için, denetlediğiniz statik genel IP adresleri kümesini kullanarak bir havuz oluşturabilirsiniz. Daha fazla bilgi için bkz . Belirtilen genel IP adresleriyle Azure Batch havuzu oluşturma.

Batch düğümünün altta yatan bağımlılıkları

Batch çözümlerinizi tasarlarken aşağıdaki bağımlılıkları ve kısıtlamaları göz önünde bulundurun.

Sistem tarafından oluşturulan kaynaklar

Azure Batch, VM'de değiştirilmemesi gereken bir kullanıcı ve grup kümesi oluşturur ve yönetir:

Windows:

  • PoolNonAdmin adlı bir kullanıcı
  • WATaskCommon adlı bir kullanıcı grubu

Linux:

  • _azbatch adlı bir kullanıcı

Tavsiye

Bu kullanıcıların veya grupların adlandırılması uygulama yapıtlarıdır ve herhangi bir zamanda değiştirilebilir.

Dosya temizleme

Batch, bekletme süresi dolduğunda görevlerin çalıştırıldığı çalışma dizinini aktif olarak temizlemeye çalışır. Bu dizinin dışında yazılan tüm dosyalar, disk alanını doldurmaktan kaçınmak için temizleme sorumluluğunuzdadır .

Windows'ta başlangıç görevi çalışma dizininden bir hizmet çalıştırırsanız, klasör hala kullanımda olduğundan çalışma dizini için otomatik temizleme engellenir. Bu eylem performansın düşmesine neden olur. Bu sorunu çözmek için bu hizmetin dizinini Batch tarafından yönetilmeyen ayrı bir dizinle değiştirin.

Sonraki Adımlar