Bagikan melalui


Menyebarkan aplikasi ke simpul komputasi dengan paket aplikasi Batch

Paket aplikasi dapat menyederhanakan kode dalam solusi Azure Batch Anda dan mempermudah pengelolaan aplikasi yang dijalankan tugas Anda. Dengan paket aplikasi, Anda dapat mengunggah dan mengelola beberapa versi aplikasi yang dijalankan tugas Anda, termasuk file pendukungnya. Anda kemudian dapat secara otomatis menyebarkan satu atau beberapa aplikasi ini ke simpul komputasi di kumpulan Anda.

API untuk membuat dan mengelola paket aplikasi adalah bagian dari pustaka Batch Management .NET . API untuk menginstal paket aplikasi pada simpul komputasi adalah bagian dari pustaka Batch .NET . Fitur yang sebanding ada di API Batch yang tersedia untuk bahasa pemrograman lainnya.

Artikel ini menjelaskan cara mengunggah dan mengelola paket aplikasi di portal Microsoft Azure. Ini juga memperlihatkan cara menginstalnya pada simpul kumpulan komputasi dengan pustaka Batch .NET.

Persyaratan paket aplikasi

Untuk menggunakan paket aplikasi, Anda perlu menautkan akun Azure Storage ke akun Batch Anda.

Ada batasan jumlah aplikasi dan paket aplikasi dalam akun Batch dan pada ukuran paket aplikasi maksimum. Untuk informasi selengkapnya, lihat Kuota dan batasan layanan Batch.

Nota

Kumpulan batch yang dibuat sebelum 5 Juli 2017 tidak mendukung paket aplikasi (kecuali dibuat setelah 10 Maret 2016 dengan menggunakan Konfigurasi Cloud Services). Fitur paket aplikasi yang dijelaskan di sini menggantikan fitur Aplikasi Batch yang tersedia di versi layanan sebelumnya.

Memahami aplikasi dan paket aplikasi

Dalam Azure Batch, aplikasi mengacu pada serangkaian biner versi yang dapat diunduh secara otomatis ke node komputasi di kumpulan Anda. Aplikasi berisi satu atau beberapa paket aplikasi, yang mewakili versi aplikasi yang berbeda.

Setiap paket aplikasi adalah file .zip yang berisi biner aplikasi dan file pendukung apa pun. Hanya format .zip yang didukung.

Diagram yang menunjukkan tampilan aplikasi dan paket aplikasi tingkat tinggi.

Anda dapat menentukan paket aplikasi di tingkat kumpulan atau tugas.

  • Paket aplikasi kumpulan disebarkan ke setiap node di kumpulan. Aplikasi diluncurkan ketika simpul bergabung dengan kumpulan dan ketika dinyalakan ulang atau diinstal ulang.

    Paket aplikasi kumpulan sesuai ketika semua simpul dalam kumpulan menjalankan tugas pekerjaan. Anda dapat menentukan satu atau beberapa paket aplikasi untuk disebarkan saat membuat kumpulan. Anda juga dapat menambahkan atau memperbarui paket kumpulan yang ada. Untuk menginstal paket baru ke kumpulan yang ada, Anda harus memulai ulang node.

  • Paket aplikasi tugas hanya disebarkan ke simpul komputasi yang dijadwalkan untuk menjalankan tugas, tepat sebelum menjalankan baris perintah tugas. Jika paket dan versi aplikasi yang ditentukan sudah ada di simpul, paket dan versi tersebut tidak disebarkan ulang dan paket yang ada digunakan.

    Paket aplikasi tugas berguna di lingkungan kumpulan bersama, di mana pekerjaan yang berbeda berjalan pada satu kumpulan, dan kumpulan tidak dihapus saat pekerjaan selesai. Jika pekerjaan Anda memiliki lebih sedikit tugas daripada simpul di kumpulan, paket aplikasi tugas dapat meminimalkan transfer data, karena aplikasi Anda hanya disebarkan ke simpul yang menjalankan tugas.

    Skenario lain yang dapat memperoleh manfaat dari paket aplikasi tugas adalah pekerjaan yang menjalankan aplikasi besar tetapi hanya untuk beberapa tugas. Misalnya, aplikasi tugas mungkin berguna untuk tahap pra-pemrosesan kelas berat atau tugas penggabungan.

Dengan paket aplikasi, tugas awal kumpulan Anda tidak perlu menentukan daftar panjang file sumber daya tersendiri untuk diinstal pada node. Anda tidak perlu mengelola beberapa versi file aplikasi Anda secara manual di Azure Storage atau pada simpul Anda. Dan Anda tidak perlu khawatir tentang pembuatan URL SAS untuk menyediakan akses ke file di akun Azure Storage Anda. Batch berfungsi di latar belakang dengan Azure Storage untuk menyimpan paket aplikasi dan menyebarkannya ke simpul komputasi.

Nota

Ukuran total tugas mulai harus kurang dari atau sama dengan 32.768 karakter, termasuk file sumber daya dan variabel lingkungan. Jika tugas mulai Anda melebihi batas ini, menggunakan paket aplikasi adalah opsi lain. Anda juga dapat membuat file .zip yang berisi file sumber daya Anda, mengunggah file sebagai blob ke Azure Storage, lalu membuka zipnya dari baris perintah tugas mulai Anda.

Mengunggah dan mengelola aplikasi

Anda dapat menggunakan portal Microsoft Azure atau API Manajemen Batch untuk mengelola paket aplikasi di akun Batch Anda. Bagian berikut menjelaskan cara menautkan akun penyimpanan, Anda mempelajari cara menambahkan dan mengelola aplikasi dan paket aplikasi di portal Microsoft Azure.

Nota

Meskipun Anda dapat menentukan nilai aplikasi di sumber daya Microsoft.Batch/batchAccounts dari templat ARM, saat ini tidak dimungkinkan untuk menggunakan templat ARM untuk mengunggah paket aplikasi yang akan digunakan di akun Batch Anda. Anda harus mengunggahnya ke akun penyimpanan tertaut seperti yang dijelaskan di Menambahkan aplikasi baru.

Untuk menggunakan paket aplikasi, Anda harus menautkan akun Azure Storage ke akun Batch Anda. Layanan Batch menggunakan akun penyimpanan terkait untuk menyimpan paket aplikasi Anda. Idealnya, Anda harus membuat akun penyimpanan khusus untuk digunakan dengan akun Batch Anda.

Jika Anda belum mengonfigurasi akun penyimpanan, portal Microsoft Azure menampilkan peringatan saat pertama kali Anda memilih Aplikasi dari menu navigasi kiri di akun Batch Anda. Untuk menautkan akun penyimpanan ke akun Batch Anda, Anda perlu:

  1. Pilih jendela Peringatan yang menyatakan, "Tidak ada akun Penyimpanan yang dikonfigurasi untuk akun batch ini."
  2. Lalu pilih Set Akun Penyimpanan... pada halaman berikutnya.
  3. Pilih tautan Pilih akun penyimpanan di bagian Informasi Akun Penyimpanan .
  4. Pilih akun penyimpanan yang ingin Anda gunakan dengan akun batch ini dalam daftar di panel Pilih akun penyimpanan .
  5. Lalu pilih Simpan di sudut kiri atas halaman.

Setelah Anda menautkan dua akun, Batch dapat secara otomatis menyebarkan paket yang disimpan di akun Penyimpanan tertaut ke simpul komputasi Anda.

Penting

Anda tidak dapat menggunakan paket aplikasi dengan akun Azure Storage yang dikonfigurasi dengan aturan firewall atau dengan namespace hierarkis yang diatur ke Diaktifkan.

Layanan Batch menggunakan Azure Storage untuk menyimpan paket aplikasi Anda sebagai blob blok. Anda dikenakan biaya seperti biasa untuk data blob blok, dan ukuran setiap paket tidak boleh melebihi ukuran maksimum untuk blob blok. Selengkapnya, lihat Skalabilitas dan target performa untuk penyimpanan Blob. Untuk meminimalkan biaya, pastikan untuk mempertimbangkan ukuran dan jumlah paket aplikasi Anda, dan secara berkala menghapus paket yang tidak digunakan lagi.

Menambahkan aplikasi baru

Untuk membuat aplikasi baru, Anda menambahkan paket aplikasi dan menentukan ID aplikasi yang unik.

Di akun Batch Anda, pilih Aplikasi dari menu navigasi kiri, lalu pilih Tambahkan.

Cuplikan layar proses pembuatan aplikasi baru di portal Microsoft Azure.

Masukkan informasi berikut:

  • ID Aplikasi: ID aplikasi baru Anda.
  • Versi": Versi untuk paket aplikasi yang Anda unggah.
  • Paket aplikasi: File .zip yang berisi biner aplikasi dan file pendukung yang diperlukan untuk menjalankan aplikasi.

ID Aplikasi dan Versi yang Anda masukkan harus mengikuti persyaratan berikut:

  • Pada node Windows, ID dapat memuat kombinasi karakter alfanumerik, tanda hubung, dan garis bawah. Pada node Linux, hanya karakter alfanumerik dan garis bawah yang diizinkan.
  • Tidak boleh berisi lebih dari 64 karakter.
  • Harus unik di dalam akun Batch.
  • ID mempertahankan huruf besar kecil dan tidak peka terhadap huruf besar kecil.

Jika Anda sudah siap, pilih Kirim. Setelah file .zip diunggah ke akun Azure Storage Anda, portal menampilkan pemberitahuan. Bergantung pada ukuran file yang Anda unggah dan kecepatan koneksi jaringan Anda, proses ini mungkin memakan waktu.

Lihat aplikasi saat ini

Untuk melihat aplikasi di akun Batch Anda, pilih Aplikasi di menu navigasi kiri.

Cuplikan layar item menu Aplikasi di portal Microsoft Azure.

Memilih opsi menu ini akan membuka jendela Aplikasi . Jendela ini menampilkan ID setiap aplikasi di akun Anda dan properti berikut:

  • Paket: Jumlah versi yang terkait dengan aplikasi ini.
  • Versi default: Jika berlaku, versi aplikasi yang diinstal jika tidak ada versi yang ditentukan saat menyebarkan aplikasi.
  • Izinkan pembaruan: Menentukan apakah pembaruan dan penghapusan paket diizinkan.

Untuk melihat struktur file paket aplikasi pada simpul komputasi, navigasikan ke akun Batch Anda di portal Microsoft Azure. Pilih Kumpulan. Kemudian pilih kumpulan yang berisi simpul komputasi. Pilih simpul komputasi tempat paket aplikasi diinstal dan buka folder aplikasi .

Lihat detail aplikasi

Untuk melihat detail aplikasi, pilih di jendela Aplikasi . Anda dapat mengonfigurasi aplikasi dengan memilih Pengaturan di menu navigasi kiri.

  • Izinkan pembaruan: Menunjukkan apakah paket aplikasi dapat diperbarui atau dihapus. Defaultnya adalah Ya. Jika diatur ke Tidak, paket aplikasi yang ada tidak dapat diperbarui atau dihapus, tetapi versi paket aplikasi baru masih dapat ditambahkan.
  • Versi default: Paket aplikasi default yang akan digunakan saat aplikasi disebarkan jika tidak ada versi yang ditentukan.
  • Nama tampilan: Nama yang mudah diingat yang dapat digunakan solusi Batch Anda saat menampilkan informasi tentang aplikasi. Misalnya, nama ini dapat digunakan di antarmuka pengguna layanan yang Anda berikan kepada pelanggan Anda melalui Batch.

Menambahkan paket aplikasi baru

Untuk menambahkan versi paket aplikasi untuk aplikasi yang sudah ada, pilih aplikasi di halaman Aplikasi akun Batch Anda. Kemudian pilih Tambahkan.

Seperti yang Anda lakukan untuk aplikasi baru, tentukan Versi untuk paket baru Anda, unggah file .zip Anda di bidang Paket aplikasi , lalu pilih Kirim.

Memperbarui atau menghapus paket aplikasi

Untuk memperbarui atau menghapus paket aplikasi yang ada, pilih aplikasi di halaman Aplikasi akun Batch Anda. Pilih elipsis di baris paket aplikasi yang ingin Anda ubah. Lalu pilih tindakan yang ingin Anda lakukan.

Cuplikan layar yang memperlihatkan opsi pembaruan dan penghapusan untuk paket aplikasi di portal Microsoft Azure.

Jika Anda memilih Perbarui, Anda dapat mengunggah file .zip baru. File ini menggantikan file .zip sebelumnya yang Anda unggah untuk versi tersebut.

Jika Anda memilih Hapus, Anda akan diminta untuk mengonfirmasi penghapusan versi tersebut. Setelah Anda memilih OK, Batch menghapus file .zip dari akun Azure Storage Anda. Jika Anda menghapus versi default aplikasi, pengaturan Versi default akan dihapus untuk aplikasi tersebut.

Menginstal aplikasi pada simpul komputasi

Anda telah mempelajari cara mengelola paket aplikasi di portal Microsoft Azure. Sekarang Anda dapat mempelajari cara menyebarkannya ke simpul komputasi dan menjalankannya dengan tugas Batch.

Menginstal paket aplikasi kumpulan

Untuk menginstal paket aplikasi pada semua simpul komputasi dalam kumpulan, tentukan satu atau beberapa referensi paket aplikasi untuk kumpulan. Paket aplikasi yang Anda tentukan untuk kumpulan diinstal pada setiap simpul komputasi yang bergabung dengan kumpulan dan pada node apa pun yang di-boot ulang atau dicitrakan ulang.

Di Batch .NET, tentukan satu atau beberapa CloudPool.ApplicationPackageReferences saat Anda membuat kumpulan baru atau saat Anda menggunakan kumpulan yang ada. Kelas ApplicationPackageReference menentukan ID dan versi aplikasi untuk diinstal pada simpul komputasi kumpulan.

// 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();

Penting

Jika penyebaran paket aplikasi gagal, layanan Batch menandai simpul tidak dapat digunakan dan tidak ada tugas yang dijadwalkan untuk eksekusi pada simpul tersebut. Jika ini terjadi, nyalakan ulang node untuk memulai ulang penyebaran paket. Memulai ulang simpul juga memungkinkan penjadwalan tugas lagi pada simpul.

Menginstal paket aplikasi tugas

Mirip dengan kumpulan, Anda menentukan referensi paket aplikasi untuk tugas. Ketika tugas dijadwalkan untuk berjalan pada simpul, paket diunduh dan diekstrak tepat sebelum baris perintah tugas berjalan. Jika paket dan versi tertentu sudah diinstal pada simpul, paket tidak diunduh dan paket yang ada digunakan.

Untuk menginstal paket aplikasi tugas, konfigurasikan properti CloudTask.ApplicationPackageReferences tugas:

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"
    }
};

Menjalankan aplikasi yang diinstal

Paket yang Anda tentukan untuk kumpulan atau tugas akan diunduh dan diekstrak ke direktori yang diberi nama dalam AZ_BATCH_ROOT_DIR simpul tersebut. Batch juga membuat variabel lingkungan yang berisi jalur ke direktori bernama. Baris perintah tugas Anda menggunakan variabel lingkungan ini saat mereferensikan aplikasi pada simpul.

Pada simpul Windows, variabel dalam format berikut:

Windows:
AZ_BATCH_APP_PACKAGE_APPLICATIONID#version

Pada simpul Linux, formatnya sedikit berbeda. Titik (.), tanda hubung (-), dan tanda angka (#) diubah menjadi garis bawah dalam variabel lingkungan. Selain itu, format penulisan ID aplikasi dipertahankan. Contohnya:

Linux:
AZ_BATCH_APP_PACKAGE_applicationid_version

APPLICATIONID dan version merupakan nilai yang sesuai dengan aplikasi dan versi paket yang telah Anda tentukan untuk penyebaran. Misalnya, jika Anda menentukan bahwa blender aplikasi versi 2.7 harus diinstal pada simpul Windows, baris perintah tugas Anda akan menggunakan variabel lingkungan ini untuk mengakses filenya:

Windows:
AZ_BATCH_APP_PACKAGE_BLENDER#2.7

Pada simpul Linux, tentukan variabel lingkungan dalam format ini. Ratakan tanda titik (.), tanda hubung (-) dan angka (#) ke garis bawah, dan pertahankan kasus ID aplikasi:

Linux:
AZ_BATCH_APP_PACKAGE_blender_2_7

Saat mengunggah paket aplikasi, Anda dapat menentukan versi default untuk disebarkan ke simpul komputasi Anda. Jika Anda telah menentukan versi default untuk aplikasi, Anda dapat menghilangkan akhiran versi saat mereferensikan aplikasi. Anda dapat menentukan versi aplikasi default di portal Microsoft Azure, di jendela Aplikasi , seperti yang ditunjukkan dalam Mengunggah dan mengelola aplikasi.

Misalnya, jika Anda mengatur "2.7" sebagai versi default untuk blender aplikasi, dan tugas Anda mereferensikan variabel lingkungan berikut, maka simpul Windows Anda menggunakan versi 2.7:

AZ_BATCH_APP_PACKAGE_BLENDER

Cuplikan kode berikut menunjukkan contoh baris perintah tugas yang meluncurkan versi default aplikasi blender :

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

Petunjuk / Saran

Untuk informasi selengkapnya tentang pengaturan lingkungan simpul komputasi, lihat Pengaturan lingkungan untuk tugas.

Memperbarui paket aplikasi kumpulan

Jika kumpulan yang ada telah dikonfigurasi dengan paket aplikasi, Anda dapat menentukan paket baru untuk kumpulan. Ini berarti:

  • Layanan Batch menginstal paket yang baru ditentukan pada semua simpul baru yang bergabung dengan kumpulan dan pada simpul yang ada yang di-boot ulang atau digambarkan ulang.
  • Simpul komputasi yang sudah ada di kumpulan ketika Anda memperbarui referensi paket tidak secara otomatis menginstal paket aplikasi baru. Simpul komputasi ini harus di-boot ulang atau direimage untuk menerima paket baru.
  • Saat paket baru disebarkan, variabel lingkungan yang dibuat mencerminkan referensi paket aplikasi baru.

Dalam contoh ini, kumpulan yang ada memiliki versi 2.7 dari aplikasi blender yang dikonfigurasi sebagai salah satu dari CloudPool.ApplicationPackageReferences-nya. Untuk memperbarui simpul kumpulan dengan versi 2.76b, tentukan ApplicationPackageReference baru dengan versi baru, dan terapkan perubahan.

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();

Sekarang setelah versi baru dikonfigurasi, layanan Batch menginstal versi 2.76b ke node baru yang bergabung dengan kumpulan. Untuk menginstal 2.76b pada simpul yang sudah ada di kumpulan, boot ulang atau reimage. Simpul yang di-boot ulang menyimpan file dari penyebaran paket sebelumnya.

Mencantumkan aplikasi dalam akun Batch

Anda dapat mencantumkan aplikasi dan paketnya di akun Batch dengan menggunakan metode ApplicationOperations.ListApplicationSummaries .

// 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);
    }
}

Langkah berikutnya