Bagikan melalui


Mengonfigurasi penskalaan

Anda dapat mengelola performa dan biaya instans Kumpulan DevOps Terkelola Anda dengan mengonfigurasi pengaturan penskalaan. Untuk informasi tentang harga dan performa, lihat Mengelola biaya dan performa.

Status agen

Anda dapat mengonfigurasi kumpulan sebagai:

  • Stateless: Berikan agen baru untuk setiap pekerjaan.
  • Stateful: Izinkan berbagi agen antara beberapa tugas.

Pengaturan default untuk kumpulan bersifat stateless, yang dapat Anda capai dengan menggunakan pengaturan agen Segar setiap kali. Dalam beberapa kasus, tim mungkin ingin memanfaatkan kembali agen untuk menggunakan kembali paket atau file yang dibuat selama pelaksanaan pipeline sebelumnya. Beban kerja build adalah skenario umum di mana tim ingin mempertahankan status dan menggunakan kembali agen. Anda dapat mencapai kumpulan stateful melalui Kumpulan DevOps Terkelola sambil menyeimbangkannya dengan praktik terbaik keamanan. Agen dapat digunakan kembali selama maksimal tujuh hari secara default, tetapi Anda dapat mengonfigurasinya untuk didaur ulang lebih cepat.

Catatan

Agen keamanan siber merekomendasikan agar pengguna menggunakan kumpulan stateless untuk mempertahankan diri dari serangan rantai pasokan. Gunakan pengaturan status agen Agen baru setiap saat.

Kumpulan stateless

Saat Anda mengonfigurasi agen stateless, agen baru akan diperoleh untuk setiap pekerjaan. Agen dibuang setelah pekerjaan selesai.

Untuk mempelajari selengkapnya tentang siklus hidup agen stateless dan bagaimana mereka digunakan di Azure Pipelines, lihat Siklus hidup agen dan potensi keterlambatan dalam alokasi.

Cuplikan layar yang memperlihatkan agen stateless.

Ketika Anda mengatur status Agen ke Agen baru setiap kali, agen baru akan diperoleh untuk setiap pekerjaan. Agen dibuang setelah pekerjaan selesai.

Kumpulan stateful

Cuplikan layar yang memperlihatkan agen stateful.

Saat Anda mengaktifkan Agen yang sama dapat digunakan oleh beberapa build ( "kind": "stateful" pengaturan dalam templat sumber daya atau { "stateful": {...} } pengaturan di Azure CLI), agen di kumpulan bersifat stateful. Anda dapat mengonfigurasi kumpulan yang menyimpan status dengan menggunakan pengaturan berikut:

  • Masa aktif maksimum untuk agen siaga (maxAgentLifetime) mengonfigurasi durasi maksimum agen dalam pool dengan status dapat berjalan sebelum dimatikan dan dihapus. Format untuk Waktu maksimum untuk hidup untuk agen siaga adalah dd.hh:mm:ss. Nilai default Max time to live untuk agen siaga diatur ke durasi maksimum yang diizinkan selama tujuh hari (7.00:00:00).

  • Masa Tenggang (gracePeriodTimeSpan) mengatur jumlah waktu agen dalam pool yang memiliki status tetap menunggu pekerjaan baru sebelum dimatikan setelah semua pekerjaan saat ini dan dalam antrean selesai. Format untuk Masa Tenggang adalah dd.hh:mm:ss dan defaultnya bukan masa tenggang.

    Penting

    Jika sebuah pekerjaan berjalan ketika waktu maksimum hidup untuk agen siaga kedaluwarsa, agen tidak akan dimatikan sampai pekerjaan selesai, kecuali pekerjaan memakan waktu lebih dari dua hari untuk selesai. Pekerjaan individual di Kumpulan DevOps Terkelola dapat berlangsung maksimal dua hari, bahkan jika mereka berjalan pada agen siaga dengan lebih dari dua hari yang dikonfigurasi untuk Waktu maksimum hidup untuk agen siaga. Hubungi dukungan jika alur kerja Anda mengharuskan Anda menjalankan satu pekerjaan yang membutuhkan waktu lebih dari dua hari untuk menyelesaikannya.

Agen dalam kumpulan stateless dimatikan dan dibuang setelah setiap tugas. Agen dalam kumpulan yang memiliki status terus berjalan jika salah satu dari kondisi-kondisi berikut terpenuhi:

  • Jika pekerjaan lain diantrekan ketika pekerjaan pertama selesai, Kumpulan DevOps Terkelola mengirimkan pekerjaan yang diantrekan ke agen yang menjalankan pekerjaan pertama alih-alih mematikannya.
  • Jika ada masa tenggang yang dikonfigurasi untuk kumpulan, agen menunggu pekerjaan baru selama durasi yang ditentukan oleh masa tenggang sebelum dimatikan.
  • Jika agen siaga diaktifkan, dan gambar agen memenuhi kriteria periode provisi aktif, agen terus berjalan dan menunggu pekerjaan.

Agen yang beroperasi dalam kumpulan stateful akan dimatikan dan dibuang jika berjalan terus menerus selama durasi yang ditentukan oleh Waktu hidup maksimum untuk agen siaga, bahkan jika semua kondisi sebelumnya terpenuhi. Misalnya, jika Waktu maksimum terbuka untuk agen siaga dikonfigurasi selama tiga hari, dan Mode Agen Siaga diatur ke Manual, All Week Scheme (Mesin tersedia 24/7), agen-agen akan dimulai ulang setelah tiga hari berturut-turut aktif.

Penting

Agen dalam kumpulan stateful masih dapat dimatikan dan dibuang setelah pekerjaan selesai jika tidak ada masa tenggang, tidak ada periode penyediaan aktif untuk agen siaga, dan tidak ada pekerjaan dalam antrean yang cocok dengan agen tersebut. Ketika agen dibuang, status apa pun hilang.

Masa tenggang memungkinkan cara paling hemat biaya untuk menjalankan kumpulan stateful pada pipeline dengan beban yang konsisten. Masa tenggang tidak memerlukan penggunaan mode agen standby untuk memastikan agen tetap online dan siap menerima tugas.

Mode agen siaga

Saat Anda membuat kumpulan, mode agen Siaga nonaktif secara default. Saat Mode Agen Siaga nonaktif, tidak ada agen siaga untuk segera ditetapkan ke pipeline Anda. Alur Anda mungkin harus menunggu dari beberapa saat hingga 15 menit agar agen disediakan sesuai permintaan. Untuk performa yang lebih baik, aktifkan mode agen Siaga dan konfigurasikan jadwal agen siaga yang menyediakan kapasitas untuk beban kerja Anda.

Saat Anda mengonfigurasi jadwal agen siaga, Kumpulan DevOps Terkelola secara berkala membandingkan jumlah agen yang disediakan dengan jumlah agen siaga yang Anda tentukan dalam skema provisi saat ini. Ini memulai agen-agen baru sesuai kebutuhan untuk mempertahankan jumlah agen siaga. Anda dapat melihat status dan jumlah agen saat ini di kumpulan Anda dengan menggunakan panel Agen .

Penting

Jumlah provisi dalam skema tidak boleh lebih besar dari nilai Agen maksimum yang Anda konfigurasikan di pengaturan Kumpulan.

Anda dapat mengonfigurasi mode agen siaga dengan menggunakan pengaturan berikut:

  • Nonaktif: Mode agen siaga nonaktif dan agen disediakan sesuai permintaan saat pekerjaan diantrekan.
  • Manual: Mengonfigurasi jadwal siaga manual.
  • Otomatis: Gunakan jadwal siaga otomatis berdasarkan riwayat penggunaan agen. Anda dapat mengonfigurasinya untuk biaya dan performa.

Cuplikan layar yang memperlihatkan pilihan untuk mode agen Siaga.

Buku Petunjuk

Mode manual adalah yang terbaik untuk tim yang mengetahui integrasi berkelanjutan dan pola penggunaan alur pengiriman berkelanjutan (CI/CD). Saat Anda menggunakan opsi manual, Anda perlu menentukan skema pra-provisi Anda. Anda menentukan skema Anda berdasarkan pemahaman Anda tentang agen apa di kumpulan yang kemungkinan besar akan digunakan dan berapa banyak agen yang kemungkinan akan digunakan. Anda menentukan jumlah penyediaan agen yang memenuhi permintaan yang diproyeksikan.

Anda dapat membuat jadwal provisi Anda sendiri atau memilih dari salah satu jadwal yang telah ditentukan sebelumnya. Anda dapat mengonfigurasi zona waktu yang akan digunakan untuk menentukan jadwal. Nilai default untuk Zona Waktu Pra-provisi adalah (UTC) Waktu Universal Terkoordinasi.

Anda dapat mengonfigurasi agen siaga manual dengan salah satu dari tiga cara berikut:

Setiap mulai cepat pra-provisi memiliki pengaturan umum berikut (selain pengaturan yang khusus untuk mulai cepat tersebut):

  • Zona Waktu Pra-provisi: Memungkinkan Anda mengonfigurasi zona waktu untuk periode waktu dalam skema pra-provisi Anda. Nilai default untuk Zona Waktu Pra-provisi adalah (UTC) Waktu Universal Terkoordinasi.
  • Persentase agen siaga: Mengonfigurasi persentase agen siaga yang Anda inginkan untuk setiap gambar. Anda dapat memasukkan * untuk memastikan semua gambar disediakan secara merata, atau Anda dapat menentukan bilangan bulat dari 0 hingga 100 untuk mewakili persentase. Jika Anda menentukan persentase, total untuk semua gambar harus sama dengan 100. Jika Anda memiliki satu gambar, tentukan * atau 100. Saat Anda menggunakan templat Azure Resource Manager (templat ARM), Anda dapat mengonfigurasi pengaturan persentase agen Siaga di bagian tersebut images . Untuk informasi selengkapnya, lihat Mengonfigurasi gambar.

Cuplikan layar yang memperlihatkan Mode siaga manual.

Mulai dari awal

Jika Anda memilih untuk memulai dari awal, Anda dapat menambahkan daftar periode provisi sebagai skema provisi Anda. Setiap periode provisi terdiri dari hari mulai, hari akhir, zona waktu, waktu mulai, waktu akhir, dan jumlah. Periode provisi tidak dapat saling tumpang tindih.

Properti Deskripsi
Beberapa Hari Saat Anda memilih opsi ini, Anda dapat mengonfigurasi Start Day dan End Day untuk skema provisi Anda.
Hingga periode berikutnya Saat Anda memilih opsi ini, periode provisi berjalan dari nilai Waktu Mulai hingga awal periode provisi berikutnya.
Hari Mulai Hari dimulainya periode provisi.
Hari Akhir Hari berakhirnya periode provisi. Diperlukan jika Multi-Hari dipilih.
Waktu Mulai Waktu ketika periode provisi dimulai.
Waktu Berakhir Waktu ketika periode provisi berakhir. Diperlukan, kecuali jika Sampai periode berikutnya dipilih.
Penghitung Jumlah agen siaga yang akan disediakan. Angka ini harus lebih besar dari nol, dan tidak boleh lebih besar dari nilai Agen maksimum dalam pengaturan Kumpulan.

Setelah membuat periode provisi, Anda dapat menghapus atau mengedit periode dari daftar Skema pra-provisi .

Contoh berikut menunjukkan cara mengonfigurasi skema manual dengan satu agen yang disediakan pada Senin pagi dari pukul 12.00 hingga 05.00 EST.

Cuplikan layar yang memperlihatkan skema penskalakan manual.

Skema hari kerja

Jika Anda memilih skema hari kerja, Anda dapat menentukan waktu mulai dan waktu akhir, di mana jumlah agen siaga yang ditentukan siaga setiap hari kerja.

Properti Deskripsi
Waktu Mulai Waktu ketika periode provisi dimulai.
Waktu Berakhir Waktu ketika periode provisi berakhir.
Jumlah Penyediaan Jumlah agen siaga yang akan disediakan. Angka ini harus lebih besar dari nol, dan tidak boleh lebih besar dari nilai Agen maksimum yang dikonfigurasi dalam Pengaturan Pool.

Contoh berikut mengonfigurasi empat agen yang akan digunakan selama jam kerja, dan tidak ada agen di luar jam kerja, serta akhir pekan, menggunakan Waktu Standar Timur (UTC-5).

Cuplikan layar yang memperlihatkan skema hari kerja.

Skema sepanjang minggu

Jika Anda memilih skema sepanjang minggu, Anda dapat menentukan jumlah agen yang ingin Anda sediakan sepanjang waktu.

Cuplikan layar yang memperlihatkan skema sepanjang minggu.

Otomatis

Jika Anda tidak mengetahui pola penggunaan dan ingin mengandalkan prakiraan otomatis berdasarkan data sebelumnya, pilih Otomatis. Anda dapat menyeimbangkan antara biaya dan performa agen dengan menggunakan penggeser dengan lima opsi berikut. Kolam DevOps yang Dikelola menjalankan kueri atas data historis Anda selama tiga minggu terakhir (jika tersedia). Ini mengatur sesi yang diantrekan dari kumpulan ke dalam periode lima menit dan menetapkan persentil tertentu (untuk menghindari fluktuasi mendadak) pada setiap jam.

  • Paling hemat biaya (MostCostEffective): persentil ke-10.
  • Lebih hemat biaya (MoreCostEffective): Persentil ke-25.
  • Seimbang (default) (Balanced): persentil ke-50.
  • Kinerja lebih tinggi (MorePerformance): Persentil ke-75.
  • Performa terbaik (BestPerformance): Persentil ke-90.

Cuplikan layar yang memperlihatkan pengaturan penskalakan otomatis.

Siklus hidup agen dan potensi keterlambatan alokasi

Saat Anda mengaktifkan agen siaga dengan menggunakan skema stateless , Anda perlu menginstal dan mengonfigurasi agen Azure Pipelines sebelum Anda beralih dari status siap ke status yang dialokasikan dan menjalankan alur.

Ketika Kumpulan DevOps Terkelola menyediakan agen baru, ia mencoba mengunduh agen Azure Pipelines terbaru sehingga sudah diunduh pada agen siaga sebelum mereka beralih ke status siap. Startup, koneksi, dan memulai pekerjaan dapat memakan waktu dari 10 detik hingga satu menit tergantung pada kecepatan SKU kumpulan, gambar yang digunakan, dan beban jaringan. Selain itu, ketika Anda menentukan pengaturan tertentu dalam pekerjaan pipa, ini dapat menyebabkan pengunduhan ulang dan menjalankan agen yang berbeda. Regresi dan pemutaran kembali agen juga dapat menyebabkan pengunduhan ulang agen.

Agen siap selalu memiliki potensi penundaan karena Kumpulan DevOps Terkelola menggunakan agen ini dengan cara "ephemeral", yang berarti kita memulai dan menjalankan agen tugas satu kali per pekerjaan. Jika Anda melihat keterlambatan agen yang siap mengambil pekerjaan dari Azure DevOps, pertimbangkan pertanyaan berikut:

  • Apakah Anda memiliki agen yang siap? Masalah yang paling umum adalah kesalahpahaman tentang kapan agen harus diprovisikan sebelumnya. Mesin harus dijalankan dari nol ketika kondisi berikut terpenuhi:
    • Jumlah pekerjaan yang diantrekan lebih besar dari jumlah agen siaga pada kumpulan.
    • Pekerjaan diantrekan di luar jadwal pra-provisi.
    • Jumlah agen siaga diatur menjadi kosong.
  • Apakah Anda mengonfigurasi agen siaga dengan benar yang memiliki beberapa gambar? Jika Anda tidak menentukan gambar mana yang akan digunakan dalam pipeline Anda dengan menggunakan perintah ImageOverride, pekerjaan akan menargetkan gambar pertama. Bergantung pada pengaturan penskalan Anda, Anda mungkin tidak memiliki agen sebanyak yang Anda harapkan, karena beberapa dialokasikan untuk gambar lain.
  • Apakah Anda menggunakan ImageVersionOverride permintaan di dalam pipeline Anda? Saat Anda menggunakan ImageVersionOverride perintah untuk menentukan versi gambar yang berbeda dari yang dikonfigurasi di pengaturan kumpulan Anda, setiap agen-agen memulai sesuai kebutuhan dengan versi gambar yang ditentukan. Agen siaga disiapkan dengan menggunakan versi citra yang ditentukan dalam konfigurasi kumpulan Anda. Jika Anda menggunakan ImageVersionOverride, setiap agen siaga tidak akan cocok dengan versi tersebut dan agen baru dimulai.
  • Apakah pengaturan proksi, jaringan virtual, atau firewall memperlambat kumpulan Anda? Potensi perlambatan dari pengaturan jaringan apa pun menghasilkan agen yang membutuhkan waktu lebih lama untuk memulai agen dan menyambungkannya ke Azure DevOps.
  • Apakah Anda mengambil alih versi agen? Secara default, Kumpulan DevOps Terkelola berjalan pada versi agen tugas Azure DevOps terbaru. Pengaturan dalam pipeline YAML (seperti Agent.Version permintaan) dan pengaturan organisasi Azure DevOps dapat memaksa pipeline untuk menggunakan versi agen tugas yang lebih lama, yang memerlukan pengunduhan ulang setelah komputer dialokasikan.