Bagikan melalui


Agen Azure Virtual Machine Scale Set

Azure DevOps

Agen Azure Virtual Machine Scale Set, selanjutnya disebut sebagai agen set skala, adalah bentuk agen yang dihost sendiri yang dapat diskalakan secara otomatis untuk memenuhi tuntutan Anda. Elastisitas ini mengurangi kebutuhan Anda untuk menjalankan agen khusus sepanjang waktu. Tidak seperti agen yang dihost Microsoft, Anda memiliki fleksibilitas atas ukuran dan gambar mesin tempat agen berjalan.

Tip

Kumpulan DevOps Terkelola adalah layanan baru yang merupakan evolusi kumpulan agen Azure DevOps Virtual Machine Scale Set, menyederhanakan pembuatan kumpulan kustom lebih jauh, dengan meningkatkan skalabilitas dan keandalan kumpulan kustom. Kumpulan DevOps Terkelola adalah layanan terkelola penuh di mana komputer virtual atau kontainer yang mendukung agen tinggal di langganan Microsoft Azure dan bukan di langganan Azure Anda sendiri, seperti saat menggunakan kumpulan agen Azure DevOps Virtual Machine Scale Set. Untuk informasi selengkapnya, lihat dokumentasi Kumpulan DevOps Terkelola.

Jika Anda menyukai agen yang dihosting Microsoft tetapi dibatasi oleh apa yang mereka tawarkan, Anda harus mempertimbangkan agen set skala. Berikut adalah beberapa contoh:

  • Anda memerlukan lebih banyak memori, lebih banyak prosesor, lebih banyak penyimpanan, atau lebih banyak IO daripada yang kami tawarkan di agen asli yang dihosting Microsoft.
  • Anda memerlukan VM NCv2 dengan set instruksi tertentu untuk pembelajaran mesin.
  • Anda perlu menyebarkan ke Azure App Service privat di VNET privat tanpa konektivitas masuk.
  • Anda perlu membuka firewall perusahaan ke alamat IP tertentu sehingga agen yang dihosting Microsoft dapat berkomunikasi dengan server Anda.
  • Anda perlu membatasi konektivitas jaringan mesin agen dan memungkinkan mereka untuk menjangkau hanya situs yang disetujui.
  • Microsoft memiliki berbagai macam agen untuk memenuhi kebutuhan Anda.
  • Pekerjaan Anda melampaui batas waktu agen yang dihosting Microsoft.
  • Anda tidak dapat mempartisi pekerjaan paralel yang dihosting Microsoft ke proyek atau tim individual di organisasi Anda.
  • Anda dapat menjalankan beberapa pekerjaan berturut-turut pada agen untuk memanfaatkan cache paket sumber dan tingkat mesin inkremental.
  • Anda ingin menjalankan konfigurasi atau pemanasan cache sebelum agen mulai menerima pekerjaan.

Jika Anda menyukai agen yang dihost sendiri tetapi berharap Anda dapat menyederhanakan pengelolaannya, Anda harus mempertimbangkan agen set skala. Berikut adalah beberapa contoh:

  • Anda tidak ingin menjalankan agen khusus sepanjang waktu. Anda dapat mendeprovisi mesin agen yang tidak digunakan untuk menjalankan pekerjaan.
  • Anda dapat menjalankan kode yang tidak tepercaya di alur dan menggambar ulang mesin agen setelah setiap pekerjaan.
  • Anda ingin menyederhanakan pembaruan gambar dasar secara berkala untuk agen Anda.

Catatan

  • Anda tidak dapat menjalankan agen Mac menggunakan set skala. Anda hanya dapat menjalankan agen Windows atau Linux dengan cara ini.

  • Menggunakan kumpulan agen Virtual Machine Scale Sets untuk Azure DevOps Services hanya didukung untuk cloud Azure Public (layanan global). Saat ini, kumpulan agen Virtual Machine Scale Sets tidak mendukung penawaran cloud nasional lainnya.

  • Anda tidak boleh mengaitkan set skala komputer virtual ke beberapa kumpulan.

Membuat set skala

Sebagai persiapan untuk membuat agen set skala, Anda harus terlebih dahulu membuat Set Skala Komputer Virtual di portal Azure. Anda harus membuat Virtual Machine Scale Set dengan cara tertentu sehingga Azure Pipelines dapat mengelolanya. Secara khusus, Anda harus menonaktifkan penskalaan otomatis sehingga Azure Pipelines dapat menentukan cara melakukan penskalaan berdasarkan jumlah pekerjaan alur masuk. Kami menyarankan agar Anda menggunakan langkah-langkah berikut untuk membuat set skala.

Dalam contoh berikut, grup sumber daya baru dan Virtual Machine Scale Set dibuat dengan Azure Cloud Shell menggunakan gambar VM UbuntuLTS.

Catatan

Dalam contoh ini, gambar VM UbuntuLTS digunakan untuk set skala. Jika Anda memerlukan gambar VM yang disesuaikan sebagai dasar untuk agen Anda, buat gambar yang disesuaikan sebelum membuat set skala, dengan mengikuti langkah-langkah dalam Membuat set skala dengan gambar kustom, perangkat lunak, atau ukuran disk.

  1. Telusuri ke Azure Cloud Shell di https://shell.azure.com/.

  2. Jalankan perintah berikut untuk memverifikasi langganan Azure default Anda.

    az account list -o table
    

    Jika langganan yang Anda inginkan tidak tercantum sebagai default, pilih langganan yang Anda inginkan.

    az account set -s <your subscription ID>
    
  3. Buat grup sumber daya untuk Set Skala Komputer Virtual Anda.

    az group create \
    --location westus \
    --name vmssagents
    
  4. Buat Set Skala Komputer Virtual di grup sumber daya Anda. Dalam contoh ini, gambar VM Ubuntu2204 ditentukan.

    az vmss create \
    --name vmssagentspool \
    --resource-group vmssagents \
    --image Ubuntu2204 \
    --vm-sku Standard_D2_v4 \
    --storage-sku StandardSSD_LRS \
    --authentication-type SSH \
    --generate-ssh-keys \
    --instance-count 2 \
    --disable-overprovision \
    --upgrade-policy-mode manual \
    --single-placement-group false \
    --platform-fault-domain-count 1 \
    --load-balancer "" \
    --orchestration-mode Uniform
    

    Catatan

    Azure Pipelines tidak mendukung provisi berlebih set skala dan autoscaling. Pastikan kedua fitur dinonaktifkan untuk set skala Anda.

    Karena Azure Pipelines mengelola set skala, pengaturan berikut diperlukan atau direkomendasikan:

    • --disable-overprovision -Diperlukan
    • --upgrade-policy-mode manual -Diperlukan
    • --load-balancer "" - Azure Pipelines tidak memerlukan load balancer untuk merutekan pekerjaan ke agen di kumpulan agen set skala, tetapi mengonfigurasi load balancer adalah salah satu cara untuk mendapatkan alamat IP untuk agen set skala yang dapat Anda gunakan untuk aturan firewall. Opsi lain untuk mendapatkan alamat IP untuk agen set skala Anda adalah membuat set skala Anda menggunakan --public-ip-address opsi . Untuk informasi selengkapnya tentang mengonfigurasi set skala Anda dengan load balancer atau alamat IP publik, lihat dokumentasi Virtual Machine Scale Sets dan az vmss create.
    • --instance-count 2 - pengaturan ini tidak diperlukan, tetapi memberi Anda kesempatan untuk memverifikasi bahwa set skala berfungsi penuh sebelum Anda membuat kumpulan agen. Pembuatan dua VM dapat memakan waktu beberapa menit. Kemudian, saat Anda membuat kumpulan agen, Azure Pipelines menghapus kedua VM ini dan membuat yang baru.

    Penting

    Jika Anda menjalankan skrip ini menggunakan Azure CLI di Windows, Anda harus memasukkan "" --load-balancer "" dengan tanda kutip tunggal seperti ini: --load-balancer '""'

    Jika ukuran VM Anda mendukung disk OS Sementara, parameter berikut untuk mengaktifkan disk OS Sementara bersifat opsional tetapi disarankan untuk meningkatkan waktu reimage komputer virtual.

    • --ephemeral-os-disk true
    • --os-disk-caching readonly

    Penting

    Disk OS Ephemeral tidak didukung pada semua ukuran VM. Untuk daftar ukuran VM yang didukung, lihat Disk OS Ephemeral untuk Azure VM.

    Pilih gambar Linux atau Windows apa pun - baik dari Marketplace Azure atau gambar kustom Anda sendiri - untuk membuat set skala. Jangan instal agen Azure Pipelines sebelumnya dalam gambar. Azure Pipelines secara otomatis menginstal agen saat menyediakan komputer virtual baru. Dalam contoh di atas, kami menggunakan gambar biasa UbuntuLTS . Untuk petunjuk tentang membuat dan menggunakan gambar kustom, lihat FAQ.

    Pilih SKU VM dan SKU penyimpanan apa pun.

    Catatan

    Pertimbangan lisensi membatasi kami mendistribusikan gambar yang dihosting Microsoft. Kami tidak dapat menyediakan gambar-gambar ini untuk Anda gunakan di agen set skala Anda. Tapi, skrip yang kita gunakan untuk menghasilkan gambar-gambar ini sumber terbuka. Anda bebas menggunakan skrip ini dan membuat gambar kustom Anda sendiri.

  5. Setelah membuat set skala Anda, navigasikan ke set skala Anda di portal Azure dan verifikasi pengaturan berikut:

    • Kebijakan peningkatan - Manual

      Verifikasi kebijakan peningkatan.

      Anda juga dapat memverifikasi pengaturan ini dengan menjalankan perintah Azure CLI berikut.

      az vmss show --resource-group vmssagents --name vmssagentspool --output table
      
      Name            ResourceGroup    Location    Zones    Capacity    Overprovision    UpgradePolicy
      --------------  ---------------  ----------  -------  ----------  ---------------  ---------------
      vmssagentspool  vmssagents       westus               0           False            Manual
      
    • Penskalakan - Skala manual

      Verifikasi kebijakan skala manual.

Penting

Azure Pipelines tidak mendukung perlindungan instans. Pastikan Anda menonaktifkan perlindungan instans tindakan penyempurnaan skala dan set skala.

Mode orkestrasi

Set skala komputer virtual Azure dapat dikonfigurasi dengan dua mode orkestrasi: Seragam dan Fleksibel. Dukungan Azure Pipelines untuk mode orkestrasi Seragam umumnya tersedia, untuk semua pelanggan.

Mode orkestrasi Fleksibel memungkinkan Azure Pipelines untuk mengantrekan beberapa operasi set skala secara paralel. Dukungan Azure Pipelines untuk orkestrasi Fleksibel tersedia berdasarkan permintaan dan tunduk pada evaluasi. Pola penggunaan pelanggan perlu menunjukkan manfaat yang signifikan darinya. Pelanggan tersebut memiliki set skala besar, tidak menggunakan kembali agen untuk beberapa pekerjaan, menjalankan beberapa pekerjaan berumur pendek secara paralel, dan secara eksklusif menggunakan disk sementara di VM mereka. Jika Anda ingin menggunakan fitur ini, hubungi tim dukungan kami.

Membuat kumpulan agen set skala

  1. Navigasi ke pengaturan Proyek Azure DevOps Anda, pilih Kumpulan agen di bawah Alur, dan pilih Tambahkan kumpulan untuk membuat kumpulan agen baru.

    Membuat kumpulan agen.

    Penting

    Anda dapat membuat kumpulan set skala di pengaturan Proyek atau Pengaturan organisasi, tetapi saat menghapus kumpulan set skala, Anda harus menghapusnya dari pengaturan Organisasi, dan bukan pengaturan Proyek.

  2. Pilih Azure Virtual Machine Scale Set untuk jenis kumpulan. Pilih langganan Azure yang berisi set skala, pilih Otorisasi, dan pilih Set Skala Komputer Virtual yang diinginkan dari langganan tersebut. Jika Anda memiliki koneksi layanan yang sudah ada, Anda dapat memilihnya dari daftar, bukan langganan.

    Penting

    • Untuk mengonfigurasi kumpulan agen set skala, Anda harus memiliki izin Pemilik atau Administrator Akses Pengguna pada langganan yang dipilih. Jika Anda memiliki salah satu izin ini tetapi mendapatkan kesalahan saat memilih Otorisasi, lihat pemecahan masalah.

    • Satu-satunya koneksi layanan yang saat ini didukung adalah koneksi layanan Azure Resource Manager (ARM) berdasarkan kunci perwakilan layanan. Koneksi layanan ARM berdasarkan kredensial sertifikat atau Identitas Terkelola akan gagal. Saat mencoba mencantumkan set skala yang ada di langganan, Anda akan melihat kesalahan seperti ini:

      Invalid Service Endpoint with Id <guid> and Scope <guid>

  3. Pilih Set Skala Komputer Virtual yang diinginkan dari langganan tersebut.

  4. Tentukan nama untuk kumpulan agen Anda.

  5. Konfigurasikan opsi berikut:

    • Secara otomatis merobek komputer virtual setelah setiap penggunaan - Instans VM baru digunakan untuk setiap pekerjaan. VM offline setelah menjalankan pekerjaan dan digambarkan ulang sebelum mengambil pekerjaan lain.
    • Simpan agen yang tidak sehat untuk penyelidikan - Apakah akan menyimpan VM agen yang tidak sehat untuk pemecahan masalah alih-alih menghapusnya.
    • Jumlah maksimum komputer virtual dalam set skala - Azure Pipelines akan secara otomatis menskalakan jumlah agen, tetapi tidak akan melebihi batas ini.
    • Jumlah agen yang harus disiagakan - Azure Pipelines akan secara otomatis menskalakan jumlah agen, tetapi akan memastikan bahwa selalu ada banyak agen yang tersedia untuk menjalankan pekerjaan baru. Jika Anda menetapkan Jumlah agen untuk tetap siaga ke 0, misalnya untuk menghemat biaya untuk volume pekerjaan yang rendah, Azure Pipelines akan memulai VM hanya ketika memiliki pekerjaan.
    • Penundaan dalam hitungan menit sebelum menghapus kelebihan agen diam - Untuk memperhitungkan varianbilitas dalam beban build sepanjang hari, Azure Pipelines akan menunggu durasi yang ditentukan sebelum menghapus kelebihan agen diam.
    • Konfigurasikan VM untuk menjalankan pengujian interaktif (Hanya OS Windows Server) - Agen Windows dapat dikonfigurasi untuk berjalan tanpa batas dengan autologon dan dengan antarmuka pengguna interaktif, atau dapat dikonfigurasi untuk dijalankan dengan izin yang ditinggikan. Centang kotak ini untuk menjalankan unelevated dengan antarmuka pengguna interaktif. Dalam kedua kasus, pengguna agen adalah anggota grup Administrator.
  6. Saat pengaturan Anda dikonfigurasi, pilih Buat untuk membuat kumpulan agen.

Menggunakan kumpulan agen set skala

Menggunakan kumpulan agen set skala mirip dengan kumpulan agen lainnya. Anda dapat menggunakannya dalam alur build, rilis, atau YAML klasik. Izin pengguna, izin alur, persetujuan, dan pemeriksaan lainnya berfungsi dengan cara yang sama seperti di kumpulan agen lainnya. Untuk informasi selengkapnya, lihat Kumpulan agen.

Penting

Perhatian harus dilakukan saat membuat perubahan langsung ke set skala dalam portal Azure.

  • Anda mungkin tidak mengubah banyak pengaturan konfigurasi set skala di portal Azure. Azure Pipelines memperbarui konfigurasi set skala. Setiap perubahan manual yang Anda buat pada set skala dapat mengganggu pengoperasian Azure Pipelines.
  • Anda tidak boleh mengganti nama atau menghapus set skala tanpa menghapus kumpulan set skala terlebih dahulu di Azure Pipelines.

Cara Azure Pipelines mengelola set skala

Setelah kumpulan agen set skala dibuat, Azure Pipelines secara otomatis menskalakan komputer agen.

Azure Pipelines mengambil sampel status agen di kumpulan dan komputer virtual dalam set skala setiap 5 menit. Keputusan untuk menskalakan masuk atau keluar didasarkan pada jumlah agen diam pada saat itu. Agen dianggap menganggur jika online dan tidak menjalankan pekerjaan alur. Azure Pipelines melakukan operasi peluasan skala jika salah satu kondisi berikut terpenuhi:

  • Jumlah agen diam berada di bawah jumlah agen siaga yang Anda tentukan
  • Tidak ada agen menganggur untuk melayani pekerjaan alur yang menunggu dalam antrean

Jika salah satu kondisi ini terpenuhi, Azure Pipelines meningkatkan jumlah VM. Penskalaan dilakukan dengan kenaikan persentase tertentu dari ukuran kumpulan maksimum. Izinkan 20 menit agar komputer dibuat untuk setiap langkah.

Azure Pipelines menskalakan agen ketika jumlah agen diam melebihi jumlah siaga selama lebih dari 30 menit (dapat dikonfigurasi menggunakan Penundaan dalam hitungan menit sebelum menghapus kelebihan agen diam).

Untuk memasukkan semua ini ke dalam contoh, pertimbangkan kumpulan agen set skala yang dikonfigurasi dengan dua agen siaga dan empat agen maksimum. Mari kita katakan bahwa Anda ingin merobek VM setelah setiap penggunaan. Selain itu, mari kita asumsikan bahwa tidak ada VM untuk memulai dalam set skala.

  • Karena jumlah agen diam adalah 0, dan karena jumlah agen diam di bawah jumlah siaga 2, Azure Pipelines menskalakan dan menambahkan dua VM ke set skala. Setelah agen ini online, akan ada dua agen menganggur.

  • Mari kita katakan bahwa satu pekerjaan alur tiba dan dialokasikan untuk salah satu agen.

  • Saat ini, jumlah agen diam adalah 1, dan itu kurang dari jumlah siaga 2. Jadi, Azure Pipelines meluaskan skala dan menambahkan 2 VM lagi (ukuran kenaikan yang digunakan dalam contoh ini). Saat ini, kumpulan memiliki tiga agen diam dan satu agen sibuk.

  • Mari kita katakan bahwa pekerjaan pada agen pertama selesai. Azure Pipelines membawa agen tersebut offline untuk menggambar ulang komputer tersebut. Setelah beberapa menit, ia kembali dengan gambar baru. Saat ini, kita akan memiliki empat agen menganggur.

  • Jika tidak ada pekerjaan lain yang tiba selama 30 menit (dapat dikonfigurasi menggunakan Penundaan dalam menit sebelum menghapus kelebihan agen diam), Azure Pipelines menentukan bahwa ada lebih banyak agen diam daripada yang diperlukan. Jadi, itu menskalakan di kumpulan ke dua agen.

Sepanjang operasi ini, tujuan azure Pipelines adalah untuk mencapai jumlah agen diam yang diinginkan saat siaga. Kumpulan menskalakan keluar dan masuk secara perlahan. Selama sehari, kumpulan akan meluaskan skala karena permintaan diantrekan di pagi hari dan menskalakan saat beban mereda di malam hari. Anda dapat mengamati lebih banyak agen diam daripada yang Anda inginkan pada berbagai waktu, yang diharapkan karena Azure Pipelines berkonversi secara bertahap ke batasan yang Anda tentukan.

Catatan

Diperlukan waktu satu jam atau lebih bagi Azure Pipelines untuk menskalakan atau menskalakan di komputer virtual. Azure Pipelines akan meluaskan skala dalam langkah-langkah, memantau operasi untuk kesalahan, dan bereaksi dengan menghapus komputer yang tidak dapat digunakan dan dengan membuat yang baru dalam waktu tertentu. Operasi korektif ini dapat memakan waktu lebih dari satu jam.

Untuk mencapai stabilitas maksimum, operasi set skala dilakukan secara berurutan. Misalnya jika kumpulan perlu meluaskan skala dan ada juga komputer yang tidak sehat untuk dihapus, Azure Pipelines akan terlebih dahulu menskalakan kumpulan. Setelah kumpulan diskalakan untuk mencapai jumlah agen diam yang diinginkan saat siaga, komputer yang tidak sehat akan dihapus, tergantung pada pengaturan Simpan agen yang tidak sehat untuk penyelidikan . Untuk informasi selengkapnya, lihat Agen yang tidak sehat.

Karena ukuran pengambilan sampel 5 menit, ada kemungkinan bahwa semua agen dapat menjalankan alur untuk waktu yang singkat dan tidak ada penskalaan yang keluar akan terjadi.

Menyesuaikan Konfigurasi Agen Alur

Anda dapat menyesuaikan konfigurasi Azure Pipelines Agent dengan menentukan variabel lingkungan dalam gambar kustom sistem operasi Anda untuk set skala Anda. Misalnya, direktori kerja agen set skala default ke C:\a untuk Windows dan /agent/_work untuk Linux. Jika Anda ingin mengubah direktori kerja, atur variabel lingkungan bernama VSTS_AGENT_INPUT_WORK dengan direktori kerja yang diinginkan. Informasi lebih lanjut dapat ditemukan dalam dokumentasi Konfigurasi Tanpa Pengawas Agen Alur. Beberapa contohnya termasuk:

  • VSTS_AGENT_INPUT_WORK
  • VSTS_AGENT_INPUT_PROXYURL
  • VSTS_AGENT_INPUT_PROXYUSERNAME
  • VSTS_AGENT_INPUT_PROXYPASSWORD

Penting

Perhatian harus dilakukan saat menyesuaikan agen Alur. Beberapa pengaturan akan bertentangan dengan pengaturan lain yang diperlukan, menyebabkan agen gagal mendaftar, dan VM dihapus. Pengaturan ini tidak boleh diatur atau diubah:

  • VSTS_AGENT_INPUT_URL
  • VSTS_AGENT_INPUT_AUTH
  • VSTS_AGENT_INPUT_TOKEN
  • VSTS_AGENT_INPUT_USERNAME
  • VSTS_AGENT_INPUT_PASSWORD
  • VSTS_AGENT_INPUT_POOL
  • VSTS_AGENT_INPUT_AGENT
  • VSTS_AGENT_INPUT_RUNASSERVICE
  • ... dan apa pun yang terkait dengan Grup Penyebaran.

Menyesuaikan Startup Komputer Virtual melalui Ekstensi Skrip Kustom

Pengguna mungkin ingin menjalankan skrip startup pada mesin agen set skala mereka sebelum mesin tersebut mulai menjalankan pekerjaan alur. Beberapa kasus penggunaan umum untuk skrip startup termasuk menginstal perangkat lunak, menghangatkan cache, atau mengambil repositori. Anda dapat menjalankan skrip startup dengan menginstal Ekstensi Skrip Kustom untuk Windows atau Ekstensi Skrip Kustom untuk Linux.

Ekstensi ini akan dijalankan pada setiap komputer virtual dalam set skala segera setelah dibuat atau dicitrakan ulang. Ekstensi skrip kustom akan dijalankan sebelum ekstensi agen Azure Pipelines dijalankan.

Berikut adalah contoh untuk membuat ekstensi skrip kustom untuk Linux.

az vmss extension set \
--vmss-name <scaleset name> \
--resource-group <resource group> \
--name CustomScript \
--version 2.0 \
--publisher Microsoft.Azure.Extensions \
--settings '{ \"fileUris\":[\"https://<myGitHubRepoUrl>/myScript.sh\"], \"commandToExecute\": \"bash ./myScript.sh /myArgs \" }'

Berikut adalah contoh untuk membuat ekstensi skrip kustom untuk Windows.

az vmss extension set \
--vmss-name <scaleset name> \
--resource-group <resource group> \
--name CustomScriptExtension \
--version 1.9 \
--publisher Microsoft.Compute \
--settings '{ \"FileUris\":[\"https://<myGitHubRepoUrl>/myscript.ps1\"], \"commandToExecute\": \"Powershell.exe -ExecutionPolicy Unrestricted -File myscript.ps1 -myargs 0 \" }'

Penting

Skrip yang dijalankan dalam Ekstensi Skrip Kustom harus kembali dengan kode keluar 0 agar VM menyelesaikan proses pembuatan VM. Jika ekstensi skrip kustom melemparkan pengecualian atau mengembalikan kode keluar bukan nol, ekstensi Azure Pipeline tidak akan dijalankan dan VM tidak akan mendaftar dengan kumpulan agen Azure DevOps.

Mungkin terjadi bahwa ekstensi Anda berjalan sebelum semua sumber daya VM disediakan, dalam hal ini Anda akan melihat kesalahan yang mirip dengan "gagal menginstal prasyarat dasar." Anda dapat memperbaikinya dengan menambahkan sleep perintah di awal skrip Anda, misalnya, sleep 30.

Siklus Hidup Agen Set Skala

Berikut adalah alur operasi untuk Azure Pipelines Virtual Machine Scale Set Agent

  1. Pekerjaan ukuran Kumpulan Agen Set Skala Azure DevOps menentukan kumpulan memiliki terlalu sedikit agen diam dan perlu meluaskan skala. Azure Pipelines melakukan panggilan ke Azure Scale Sets untuk meningkatkan kapasitas set skala.

  2. Azure Scale Set mulai membuat komputer virtual baru. Setelah komputer virtual berjalan, Azure Scale Sets secara berurutan menjalankan ekstensi VM yang diinstal.

  3. Jika Ekstensi Skrip Kustom diinstal, ekstensi tersebut dijalankan sebelum ekstensi Azure Pipelines Agent. Jika Ekstensi Skrip Kustom mengembalikan kode keluar bukan nol, proses pembuatan VM dibatalkan dan akan dihapus.

  4. Ekstensi Agen Azure Pipelines dijalankan. Ekstensi ini mengunduh versi terbaru Azure Pipelines Agent bersama dengan versi terbaru skrip konfigurasi. Skrip konfigurasi dapat ditemukan di URL dengan format berikut:

    • Linux: https://vstsagenttools.blob.core.windows.net/tools/ElasticPools/Linux/<script_version>/enableagent.sh, misalnya, versi 15
    • Windows: https://vstsagenttools.blob.core.windows.net/tools/ElasticPools/Windows/<script_version>/enableagent.ps1, misalnya, versi 17
  5. Skrip konfigurasi membuat pengguna lokal bernama AzDevOps jika sistem operasinya adalah Windows Server atau Linux. Untuk OS Klien Windows 10, agen berjalan sebagai LocalSystem. Skrip kemudian membuka zip, menginstal, dan mengonfigurasi Azure Pipelines Agent. Sebagai bagian dari konfigurasi, agen mendaftar dengan kumpulan agen Azure DevOps dan muncul di daftar kumpulan agen dalam status Offline.

  6. Untuk sebagian besar skenario, skrip konfigurasi kemudian segera memulai agen untuk berjalan sebagai pengguna AzDevOpslokal . Agen berjalan Online dan siap untuk menjalankan pekerjaan alur.

    Jika kumpulan dikonfigurasi untuk antarmuka pengguna interaktif, komputer virtual akan di-boot ulang setelah agen dikonfigurasi. Setelah reboot, pengguna lokal secara otomatis masuk dan agen alur dimulai. Agen kemudian online dan siap untuk menjalankan pekerjaan alur.

Membuat set skala dengan gambar kustom, perangkat lunak, atau ukuran disk

Jika Anda hanya ingin membuat set skala dengan disk OS default 128-GB menggunakan gambar Azure yang tersedia untuk umum, lalu langsung ke langkah 10 dan gunakan nama gambar publik (UbuntuLTS, Win2019DataCenter, dll.) untuk membuat set skala. Jika tidak, ikuti langkah-langkah ini untuk menyesuaikan gambar VM Anda.

  1. Buat VM dengan gambar OS yang Anda inginkan dan secara opsional perluas ukuran disk OS dari 128 GB ke <myDiskSizeGb>.

    • Jika dimulai dengan Gambar Azure yang tersedia, misalnya <myBaseImage> = (Win2019DataCenter, UbuntuLTS):

      az vm create --resource-group <myResourceGroup> --name <MyVM> --image <myBaseImage> --os-disk-size-gb <myDiskSize>  --admin-username myUserName --admin-password myPassword
      
    • Jika dimulai dengan VHD umum:

      1. Pertama-tama buat VM dengan disk yang tidak dikelola dari ukuran yang diinginkan lalu konversi ke disk terkelola:

        az vm create --resource-group <myResourceGroup> --name <MyVM> --image <myVhdUrl> --os-type windows --os-disk-size-gb <myDiskSizeGb> --use-unmanaged-disk --admin-username <myUserName> --admin-password <myPassword> --storage-account <myVhdStorageAccount>
        
      2. Mematikan VM

        az vm stop --resource-group <myResourceGroup> --name <MyVM>
        
      3. Membatalkan alokasi VM

        az vm deallocate --resource-group <myResourceGroup> --name <MyVM>
        
      4. Mengonversi ke disk terkelola

        az vm convert --resource-group <myResourceGroup> --name <MyVM>
        
      5. Hidupkan ulang VM

        az vm start --resource-group <myResourceGroup> --name <MyVM>
        
  2. Desktop Jarak Jauh (atau SSH) ke alamat IP publik VM untuk menyesuaikan gambar. Anda mungkin perlu membuka port di firewall untuk membuka blokir port RDP (3389) atau SSH (22).

    1. Windows - Jika <MyDiskSizeGb> lebih besar dari 128 GB, perluas ukuran disk OS untuk mengisi ukuran disk yang Anda tentukan oleh <MyDiskSizeGb>.

      Buka alat DiskPart sebagai administrator dan jalankan perintah DiskPart ini:

      1. list volume (untuk melihat volume)
      2. select volume 2 (tergantung volume mana yang merupakan drive OS)
      3. extend size 72000 (untuk memperluas drive sebesar 72 GB, dari 128 GB hingga 200 GB)
  3. Instal perangkat lunak tambahan yang diinginkan pada VM.

  4. Untuk mengkustomisasi izin pengguna agen alur, Anda dapat membuat pengguna bernama AzDevOps, dan memberi pengguna tersebut izin yang Anda butuhkan. Pengguna ini akan dibuat oleh skrip startup agen set skala jika belum ada.

  5. Reboot VM setelah selesai dengan kustomisasi

  6. Menggeneralisasi VM.

    • Windows - Dari jendela konsol admin:
      C:\Windows\System32\sysprep\sysprep.exe /generalize /oobe /shutdown
      
    • Linux:
      sudo waagent -deprovision+user -force
      

    Penting

    Tunggu hingga VM selesai generalisasi dan matikan. Jangan lanjutkan sampai VM berhenti. Tunggu 60 menit.

  7. Membatalkan alokasi VM

    az vm deallocate --resource-group <myResourceGroup> --name <MyVM>
    
  8. Tandai VM sebagai Umum

    az vm generalize --resource-group <myResourceGroup> --name <MyVM>
    
  9. Buat Gambar VM berdasarkan gambar umum. Saat melakukan langkah-langkah ini untuk memperbarui gambar set skala yang ada, catat url ID gambar dalam output.

    az image create  --resource-group <myResourceGroup> --name <MyImage> --source <MyVM>
    
  10. Membuat set skala berdasarkan gambar VM kustom

    az vmss create --resource-group <myResourceGroup> --name <myScaleSet> --image <MyImage> --admin-username <myUsername> --admin-password <myPassword> --instance-count 2 --disable-overprovision --upgrade-policy-mode manual --load-balancer '""'
    
  11. Verifikasi bahwa kedua VM yang dibuat dalam set skala online, memiliki nama yang berbeda, dan mencapai status Berhasil

Anda sekarang siap untuk membuat kumpulan agen menggunakan set skala ini.

Memperbarui set skala yang ada dengan gambar kustom baru

Untuk memperbarui gambar pada set skala yang ada, ikuti langkah-langkah di bagian Buat set skala sebelumnya dengan gambar kustom, perangkat lunak, atau ukuran disk hingga langkah az image create untuk menghasilkan gambar OS kustom. Catat URL properti ID yang merupakan output dari az image create perintah . Kemudian perbarui set skala dengan gambar baru seperti yang ditunjukkan dalam contoh berikut. Setelah gambar set skala diperbarui, semua VM di masa mendatang dalam set skala akan dibuat dengan gambar baru.

az vmss update --resource-group <myResourceGroup> --name <myScaleSet> --set virtualMachineProfile.storageProfile.imageReference.id=<id url>

Sistem operasi yang didukung

Agen set skala saat ini mendukung klien Ubuntu Linux, Windows Server/DataCenter 2016/2019, dan Windows 10.

Masalah umum

  • Distribusi Debian atau RedHat Linux tidak didukung. Hanya Ubuntu.
  • Klien Windows 10 tidak mendukung menjalankan agen alur sebagai pengguna lokal dan oleh karena itu agen tidak dapat berinteraksi dengan UI. Agen akan berjalan sebagai Layanan Lokal sebagai gantinya.

Memecahkan masalah

Navigasi ke pengaturan Proyek Azure DevOps Anda, pilih Kumpulan agen di bawah Alur, dan pilih kumpulan agen Anda. Pilih tab berlabel Diagnostik.

Tab Diagnostik memperlihatkan semua tindakan yang dijalankan oleh Azure DevOps untuk Membuat, Menghapus, atau Mencitrakan Ulang VM di Set Skala Azure Anda. Diagnostik juga mencatat kesalahan apa pun yang ditemui saat mencoba melakukan tindakan ini. Tinjau kesalahan untuk memastikan set skala Anda memiliki sumber daya yang memadai untuk meluaskan skala. Jika langganan Azure Anda telah mencapai batas sumber daya di VM, inti CPU, disk, atau Alamat IP, kesalahan tersebut akan muncul di sini.

Agen Tidak Sehat

Ketika agen atau komputer virtual gagal dimulai, tidak terhubung ke Azure DevOps, atau offline secara tak terduga, Azure DevOps mencatat kegagalan ke tab Diagnostik Kumpulan Agen dan mencoba menghapus komputer virtual terkait. Konfigurasi jaringan, kustomisasi gambar, dan reboot yang tertunda dapat menyebabkan masalah ini. Menyambungkan ke VM untuk men-debug dan mengumpulkan log dapat membantu penyelidikan.

Jika Anda ingin Azure DevOps menyimpan VM agen yang tidak sehat untuk penyelidikan dan tidak secara otomatis menghapusnya saat mendeteksi status tidak sehat, navigasikan ke pengaturan Proyek Azure DevOps Anda, pilih Kumpulan agen di bawah Alur, dan pilih kumpulan agen Anda. Pilih Pengaturan, pilih opsi Simpan agen yang tidak sehat untuk penyelidikan, dan pilih Simpan.

Simpan pengaturan agen yang tidak sehat.

Sekarang, ketika agen yang tidak sehat terdeteksi dalam set skala, Azure DevOps menyimpan agen tersebut dan komputer virtual terkait. Agen yang disimpan akan terlihat pada tab Diagnostik dari UI kumpulan Agen. Navigasi ke pengaturan Proyek Azure DevOps Anda, pilih Kumpulan agen di bawah Alur, pilih kumpulan agen Anda, pilih Diagnostik, dan catat nama agen.

Kartu agen tersimpan.

Temukan komputer virtual terkait di Azure Virtual Machine Scale Set Anda melalui portal Azure, di daftar Instans.

portal Azure instans Virtual Machine Scale Set.

Pilih instans, pilih Sambungkan, dan lakukan penyelidikan Anda.

Sambungkan ke instans komputer virtual.

Untuk menghapus agen yang disimpan saat Anda selesai dengan penyelidikan, navigasikan ke pengaturan Proyek Azure DevOps Anda, pilih Kumpulan agen di bawah Alur, dan pilih kumpulan agen Anda. Pilih tab berlabel Diagnostik. Temukan agen di Agen yang disimpan untuk kartu investigasi , dan pilih Hapus. Ini menghapus agen dari kumpulan dan menghapus komputer virtual terkait.

Tombol hapus kartu agen tersimpan.

Tanya Jawab Umum

Apa saja masalah umum dan solusinya?

Anda mengamati lebih banyak agen menganggur daripada yang diinginkan pada berbagai waktu

Untuk lebih memahami mengapa hal ini terjadi, lihat Cara Azure Pipelines mengelola set skala. Sepanjang operasi penskalaan, tujuan Azure Pipelines adalah untuk mencapai jumlah agen diam yang diinginkan pada siaga. Kumpulan menskalakan keluar dan masuk secara perlahan. Selama sehari, kumpulan akan melakukan peningkatan skala karena permintaan diantrekan di pagi hari dan menurunkan skala saat beban berkurang di malam hari. Ini adalah perilaku yang diharapkan karena Azure Pipelines bertemu secara bertahap dengan batasan yang Anda tentukan.

Peningkatan Set Skala Komputer Virtual tidak terjadi dalam interval lima menit yang diharapkan

Pekerjaan penskalaan berjalan setiap lima menit, tetapi jika hanya satu operasi yang diproses, Anda dapat melihat bahwa peningkatan tidak terjadi dalam waktu lima menit; hasil ini memang disengaja.

Set Skala VM Azure DevOps Linux sering gagal memulai alur

Tempat pertama untuk diperiksa saat mengalami masalah dengan agen set skala adalah tab Diagnostik di kumpulan agen.

Selain itu, pertimbangkan untuk menyimpan VM yang tidak sehat untuk tujuan penelusuran kesalahan. Untuk informasi selengkapnya, lihat Agen yang Tidak Sehat.

Agen tersimpan ada di sana kecuali Anda menghapusnya. Jika agen tidak online dalam 10 menit, agen ditandai sebagai tidak sehat dan disimpan jika memungkinkan. Hanya satu VM yang disimpan dalam status tersimpan. Jika agen offline secara tiba-tiba (karena reboot VM atau sesuatu yang terjadi pada gambar), agen tidak disimpan untuk penyelidikan.

Hanya VM yang gagal dimulai agen yang disimpan. Jika VM memiliki status gagal selama pembuatan, VM tidak disimpan. Dalam hal ini, pesan di tab Diagnostik adalah "menghapus komputer yang tidak sehat" alih-alih "gagal memulai".

Anda memeriksa opsi untuk secara otomatis meruntuhkan komputer virtual setelah setiap penggunaan untuk kumpulan agen, tetapi Anda melihat bahwa VM tidak dicitrakan kembali seperti yang seharusnya dan hanya mengambil pekerjaan baru saat mereka diantrekan

Opsi untuk melepaskan mesin virtual setelah setiap build hanya akan berfungsi untuk Windows Server dan citra Linux yang didukung. Ini tidak didukung untuk citra klien Windows.

Virtual Machine Scale Sets menunjukkan agen sebagai offline jika VM dimulai ulang

Menampilkan agen sebagai offline jika VM dimulai ulang adalah perilaku yang diharapkan. Layanan agen hanya berjalan dalam konteks systemd. Namun, jika mesin dimulai ulang karena alasan tertentu, mesin tersebut dianggap sebagai mesin virtual yang tidak sehat dan dihapus. Untuk informasi selengkapnya, lihat Agen yang Tidak Sehat.

Ketika agen atau komputer virtual gagal dimulai, tidak dapat terhubung ke Azure DevOps, atau offline secara tak terduga, Azure DevOps mencatat kegagalan ke tab Diagnostik Kumpulan Agen dan mencoba menghapus komputer virtual terkait. Konfigurasi jaringan, kustomisasi gambar, dan reboot yang tertunda dapat menyebabkan masalah ini. Untuk menghindari masalah ini, nonaktifkan pembaruan perangkat lunak pada citra. Anda juga dapat terhubung ke VM untuk men-debug dan mengumpulkan log guna membantu menyelidiki masalah.

Anda dapat melihat beberapa tag seperti _AzureDevOpsElasticPoolTimeStamp untuk Virtual Machine Scale Sets dalam manajemen biaya

Saat kumpulan dibuat, tag ditambahkan ke set skala untuk menandai set skala sebagai sedang digunakan (untuk menghindari dua kumpulan menggunakan set skala yang sama), dan tag lain ditambahkan untuk stempel waktu yang diperbarui setiap kali pekerjaan konfigurasi berjalan (setiap dua jam).

Anda tidak dapat membuat kumpulan agen set skala baru dan mendapatkan pesan kesalahan bahwa kumpulan dengan nama yang sama sudah ada

Anda mungkin mendapatkan pesan kesalahan seperti This virtual machine scale set is already in use by pool <pool name> karena tag masih ada pada set skala bahkan setelah dihapus. Ketika kumpulan agen dihapus, Anda mencoba menghapus tag dari set skala, tetapi ini adalah upaya terbaik, dan Anda menyerah setelah tiga kali percobaan ulang. Selain itu, mungkin ada kesenjangan maksimum dua jam, di mana Set Skala Komputer Virtual yang tidak digunakan oleh kumpulan agen apa pun tidak dapat ditetapkan ke yang baru. Perbaikan yang dapat dilakukan adalah menunggu interval waktu tersebut berlalu, atau menghapus tag secara manual untuk set skala dari portal Azure. Saat melihat set skala di portal Azure, pilih link Tag di sebelah kiri dan hapus tag berlabel _AzureDevOpsElasticPool.

Pekerjaan pemeliharaan Virtual Machine Scale Sets tidak berjalan pada agen atau mendapatkan log

Pekerjaan pemeliharaan dijalankan setiap 24 jam. Ada kemungkinan bahwa mesin virtual terisi sebelum waktu ini. Pertimbangkan untuk meningkatkan ukuran disk pada mesin virtual dan menambahkan skrip di alur untuk menghapus konten.

Jika Anda menentukan AzDevOps sebagai administrator utama dalam skrip Anda untuk Virtual Machine Scale Sets, Anda dapat mengamati masalah dengan konfigurasi agen pada instans set skala

Jika Anda menentukan AzDevOps sebagai administrator utama dalam skrip Anda untuk Virtual Machine Scale Set, Anda dapat mengamati masalah dengan konfigurasi agen pada instans set skala (kata sandi untuk pengguna diubah jika sudah ada).

Masalah ini terjadi karena skrip ekstensi agen mencoba membuat pengguna AzDevOps dan mengubah kata sandinya.

Catatan

Tidak apa-apa untuk membuat pengguna dan memberinya izin tambahan, tetapi seharusnya bukan administrator utama, dan tidak ada yang harus bergantung pada kata sandi, karena kata sandi akan diubah. Untuk menghindari masalah ini, pilih pengguna lain sebagai administrator utama saat membuat set skala, bukan AzDevOps.

Penginstalan ekstensi agen gagal pada instans set skala karena konfigurasi keamanan jaringan dan firewall

Ekstensi harus dapat mengunduh file agen build dari https://vstsagentpackage.azureedge.net/agent, dan agen build harus dapat mendaftar ke Azure DevOps Services. Pastikan URL ini serta IP dan URL terkait Layanan Azure DevOps ini terbuka pada instans. Untuk IP dan URL yang perlu dibuka blokirnya di firewall, lihat Alamat IP dan URL domain yang diizinkan.

Mengapa skrip konfigurasi agen set skala saya memanggil Add-MpPreference dan mengonfigurasi Windows Defender pada agen?

Untuk meningkatkan performa dan keandalan, skrip konfigurasi memanggil Add-MpPreference dengan ExclusionPath yang berisi C:\ dan D:\, yang menonaktifkan pemindaian Windows Defender terjadwal dan real-time untuk file di folder ini pada agen. Untuk mengubah perilaku default, atur variabel lingkungan bernama ELASTIC_POOLS_SKIP_DEFENDER_EXCLUSION ke true.

Saya ingin meningkatkan ukuran kolam saya. Apa yang harus saya pertimbangkan?

Sebelum Anda meningkatkan ukuran kumpulan Anda, pastikan Azure Virtual Network yang dikonfigurasi untuk kumpulan Set Skala Komputer Virtual Anda memiliki rentang ruang Alamat yang cukup besar untuk mengakomodasi semua agen baru Anda. Jika tidak, Anda mungkin mendapatkan kesalahan yang mirip dengan Gagal meningkatkan kapasitas. Subnet azure-devops-agent-pool-fabrikam-fiber dengan awalan alamat 12.123.45.224/28 tidak memiliki kapasitas yang cukup untuk 5 alamat IP.