Menggunakan ekstensi Application Health dengan Virtual Machine Scale Sets
Penting
Status Kesehatan Kaya saat ini dalam pratinjau publik. Status Kesehatan Biner umumnya tersedia. Versi pratinjau ini disediakan tanpa perjanjian tingkat layanan, dan tidak disarankan untuk beban kerja produksi. Fitur tertentu mungkin tidak didukung atau mungkin memiliki kemampuan yang dibatasi. Untuk mengetahui informasi selengkapnya, lihat Ketentuan Penggunaan Tambahan untuk Pratinjau Microsoft Azure.
Memantau kesehatan aplikasi Anda adalah sinyal penting untuk mengelola dan meningkatkan penyebaran Anda. Azure Virtual Machine Scale Sets menyediakan dukungan untuk Peningkatan Bergulir termasuk Peningkatan OS-Image Otomatis dan Patching Tamu VM Otomatis, yang bergantung pada pemantauan kesehatan instans individual untuk meningkatkan penyebaran Anda. Anda juga dapat menggunakan Ekstensi Kesehatan Aplikasi untuk memantau kesehatan aplikasi setiap instans dalam set skala Anda dan melakukan perbaikan instans menggunakan Perbaikan Instans Otomatis.
Artikel ini menjelaskan bagaimana Anda dapat menggunakan dua jenis ekstensi Application Health, Status Kesehatan Biner atau Status Kesehatan Kaya, untuk memantau kesehatan aplikasi Anda yang disebarkan di Virtual Machine Scale Sets.
Prasyarat
Artikel ini mengasumsikan bahwa Anda tidak asing dengan:
Perhatian
Ekstensi Kesehatan Aplikasi mengharapkan untuk menerima respons pemeriksaan yang konsisten di port tcp
yang dikonfigurasi atau jalur http/https
permintaan untuk memberi label VM sebagai Sehat. Jika tidak ada aplikasi yang berjalan di VM, atau Anda tidak dapat mengonfigurasi respons pemeriksaan, VM Anda akan muncul sebagai Tidak Sehat.
Kapan harus menggunakan ekstensi Application Health
Ekstensi Application Health disebarkan di dalam instans Set Skala Komputer Virtual dan melaporkan kesehatan VM dari dalam instans set skala. Anda dapat mengonfigurasi ekstensi untuk menyelidiki titik akhir aplikasi dan memperbarui status aplikasi pada instans tersebut. Status instans ini diperiksa oleh Azure untuk menentukan apakah instans memenuhi syarat untuk operasi peningkatan.
Ekstensi Kesehatan Aplikasi disebarkan di dalam instans Set Skala Komputer Virtual dan melaporkan kesehatan aplikasi dari dalam instans set skala. Pemeriksaan ekstensi pada titik akhir aplikasi lokal dan akan memperbarui status kesehatan berdasarkan respons TCP/HTTP(S) yang diterima dari aplikasi. Status kesehatan ini digunakan oleh Azure untuk memulai perbaikan pada instans yang tidak sehat dan untuk menentukan apakah instans memenuhi syarat untuk operasi peningkatan.
Ekstensi melaporkan kesehatan dari dalam VM dan dapat digunakan dalam situasi di mana pemeriksaan eksternal seperti pemeriksaan kesehatan Azure Load Balancer tidak dapat digunakan.
Status Biner versus Kesehatan Kaya
Penting
Status Kesehatan Kaya saat ini dalam pratinjau publik.
Ekstensi Kesehatan Aplikasi memiliki dua opsi yang tersedia: Status Kesehatan Biner dan Status Kesehatan Kaya. Tabel berikut menyoroti beberapa perbedaan utama antara dua opsi. Lihat akhir bagian ini untuk rekomendasi umum.
Fitur | Status Kesehatan Biner | Status Kesehatan Kaya |
---|---|---|
Status Kesehatan yang Tersedia | Dua status yang tersedia: Sehat, Tidak Sehat | Empat status yang tersedia: Sehat, Tidak Sehat, Inisialisasi, Tidak Diketahui1 |
Mengirim Sinyal Kesehatan | Sinyal kesehatan dikirim melalui kode respons HTTP/HTTPS atau koneksi TCP. | Sinyal kesehatan pada protokol HTTP/HTTPS dikirim melalui kode respons probe dan isi respons. Sinyal kesehatan melalui protokol TCP tetap tidak berubah dari Status Kesehatan Biner. |
Mengidentifikasi Instans Tidak Sehat | Instans akan secara otomatis jatuh ke status Tidak Sehat jika sinyal Sehat tidak diterima dari aplikasi. Instans yang tidak sehat dapat menunjukkan masalah dengan konfigurasi ekstensi (misalnya, titik akhir yang tidak dapat dijangkau) atau masalah dengan aplikasi (misalnya, kode status non-2xx). | Instans hanya akan masuk ke status Tidak Sehat jika aplikasi memancarkan respons pemeriksaan Tidak Sehat . Pengguna bertanggung jawab untuk menerapkan logika kustom untuk mengidentifikasi dan menandai instans dengan aplikasi Tidak Sehat2. Instans dengan pengaturan ekstensi yang salah (misalnya, titik akhir yang tidak dapat dijangkau) atau respons pemeriksaan kesehatan yang tidak valid akan berada di bawah status Tidak Diketahui2. |
Menginisialisasi status untuk instans yang baru dibuat | Status inisialisasi tidak tersedia. Instans yang baru dibuat mungkin memakan waktu sebelum ditetapkan ke status stabil. | Menginisialisasi status memungkinkan instans yang baru dibuat untuk diselesaikan menjadi Status Kesehatan yang stabil sebelum membuat instans memenuhi syarat untuk peningkatan bergulir atau operasi perbaikan instans. |
Protokol HTTP/HTTPS | Didukung | Didukung |
Protokol TCP | Didukung | Dukungan Terbatas – Status tidak diketahui tidak tersedia pada protokol TCP. Lihat tabel protokol Status Kesehatan Kaya untuk perilaku Status Kesehatan pada TCP. |
1 Status Tidak Diketahui tidak tersedia pada protokol TCP. 2 Hanya berlaku untuk protokol HTTP/HTTPS. Protokol TCP akan mengikuti proses yang sama untuk mengidentifikasi instans Tidak Sehat seperti di Status Kesehatan Biner.
Secara umum, Anda harus menggunakan Status Kesehatan Biner jika:
- Anda tidak tertarik untuk mengonfigurasi logika kustom untuk mengidentifikasi dan menandai instans yang tidak sehat
- Anda tidak memerlukan masa tenggang inisialisasi untuk instans yang baru dibuat
Anda harus menggunakan Status Kesehatan Kaya jika:
- Anda mengirim sinyal kesehatan melalui protokol HTTP/HTTPS dan dapat mengirimkan informasi kesehatan melalui isi respons probe
- Anda ingin menggunakan logika kustom untuk mengidentifikasi dan menandai instans yang tidak sehat
- Anda ingin mengatur masa tenggang inisialisasi untuk instans yang baru dibuat, sehingga mereka menyelesaikan status kesehatan yang stabil sebelum membuat instans memenuhi syarat untuk peningkatan bergulir atau perbaikan instans
Status Kesehatan Biner
Pelaporan Status Kesehatan Biner berisi dua Status Kesehatan, Sehat dan Tidak Sehat. Tabel berikut ini memberikan deskripsi singkat tentang bagaimana Status Kesehatan dikonfigurasi.
Protokol HTTP/HTTPS
Protokol | Status Kesehatan | Deskripsi |
---|---|---|
http/https | Sehat | Untuk mengirim sinyal Sehat , aplikasi diharapkan mengembalikan kode respons 2xx. |
http/https | Tidak sehat | Instans akan ditandai sebagai Tidak Sehat jika kode respons 2xx tidak diterima dari aplikasi. |
Protokol TCP
Protokol | Status Kesehatan | Deskripsi |
---|---|---|
TCP | Sehat | Untuk mengirim sinyal Sehat , jabat tangan yang berhasil harus dilakukan dengan titik akhir aplikasi yang disediakan. |
TCP | Tidak sehat | Instans akan ditandai sebagai Tidak Sehat jika jabat tangan yang gagal atau tidak lengkap terjadi dengan titik akhir aplikasi yang disediakan. |
Beberapa skenario yang dapat mengakibatkan status Tidak Sehat meliputi:
- Ketika titik akhir aplikasi mengembalikan kode status non-2xx
- Ketika tidak ada titik akhir aplikasi yang dikonfigurasi di dalam instans komputer virtual untuk memberikan status kesehatan aplikasi
- Saat titik akhir aplikasi salah dikonfigurasi
- Ketika titik akhir aplikasi tidak dapat dijangkau
Status Kesehatan Kaya
Pelaporan Status Kesehatan Kaya berisi empat Status Kesehatan, Inisialisasi, Sehat, Tidak Sehat, dan Tidak Diketahui. Tabel berikut ini memberikan deskripsi singkat tentang bagaimana setiap Status Kesehatan dikonfigurasi.
Protokol HTTP/HTTPS
Protokol | Status Kesehatan | Deskripsi |
---|---|---|
http/https | Sehat | Untuk mengirim sinyal Sehat , aplikasi diharapkan mengembalikan respons pemeriksaan dengan: Kode Respons Probe: Status 2xx, Isi Respons Probe: {"ApplicationHealthState": "Healthy"} |
http/https | Tidak sehat | Untuk mengirim sinyal Tidak Sehat , aplikasi diharapkan untuk mengembalikan respons pemeriksaan dengan: Kode Respons Probe: Status 2xx, Isi Respons Probe: {"ApplicationHealthState": "Unhealthy"} |
http/https | Menginisialisasi | Instans secara otomatis memasukkan status Inisialisasi pada waktu mulai ekstensi. Untuk informasi selengkapnya, lihat Menginisialisasi status. |
http/https | Tidak dikenal | Status Tidak Diketahui dapat terjadi dalam skenario berikut: ketika kode status non-2xx dikembalikan oleh aplikasi, ketika waktu permintaan pemeriksaan habis, ketika titik akhir aplikasi tidak dapat dijangkau atau dikonfigurasi dengan salah, ketika nilai yang hilang atau tidak valid disediakan untuk ApplicationHealthState dalam isi respons, atau ketika masa tenggang kedaluwarsa. Untuk informasi selengkapnya, lihat Status tidak diketahui. |
Protokol TCP
Protokol | Status Kesehatan | Deskripsi |
---|---|---|
TCP | Sehat | Untuk mengirim sinyal Sehat , jabat tangan yang berhasil harus dilakukan dengan titik akhir aplikasi yang disediakan. |
TCP | Tidak sehat | Instans akan ditandai sebagai Tidak Sehat jika jabat tangan yang gagal atau tidak lengkap terjadi dengan titik akhir aplikasi yang disediakan. |
TCP | Tidak sehat | Instans secara otomatis memasukkan status Inisialisasi pada waktu mulai ekstensi. Untuk informasi selengkapnya, lihat Menginisialisasi status. |
Menginisialisasi status
Status ini hanya berlaku untuk Status Kesehatan Kaya. Status Inisialisasi hanya terjadi sekali pada waktu mulai ekstensi dan dapat dikonfigurasi oleh pengaturan gracePeriod
ekstensi dan numberOfProbes
.
Pada permulaan ekstensi, kesehatan aplikasi akan tetap dalam status Inisialisasi hingga salah satu dari dua skenario terjadi:
- Status Kesehatan yang sama (Sehat atau Tidak Sehat) dilaporkan beberapa kali berturut-turut seperti yang dikonfigurasi melalui numberOfProbes
- Kedaluwarsa
gracePeriod
Jika Status Kesehatan yang sama (Sehat atau Tidak Sehat) dilaporkan secara berturut-turut, kesehatan aplikasi akan beralih dari status Inisialisasi dan ke Status Kesehatan yang dilaporkan (Sehat atau Tidak Sehat).
Contoh
Jika numberOfProbes
= 3, itu berarti:
- Untuk beralih dari Menginisialisasi ke status Sehat : Ekstensi kesehatan aplikasi harus menerima tiga sinyal Sehat berturut-turut melalui protokol HTTP/HTTPS atau TCP
- Untuk transisi dari Menginisialisasi ke Status tidak sehat : Ekstensi kesehatan aplikasi harus menerima tiga sinyal Tidak Sehat berturut-turut melalui protokol HTTP/HTTPS atau TCP
Jika kedaluwarsa gracePeriod
sebelum status kesehatan berturut-turut dilaporkan oleh aplikasi, kesehatan instans akan ditentukan sebagai berikut:
- Protokol HTTP/HTTPS: Kesehatan aplikasi akan beralih dari Menginisialisasi ke Tidak Diketahui
- Protokol TCP: Kesehatan aplikasi akan beralih dari Inisialisasi ke Tidak Sehat
Status tidak diketahui
Status ini hanya berlaku untuk Status Kesehatan Kaya. Status Tidak Diketahui hanya dilaporkan untuk pemeriksaan "http" atau "https" dan terjadi dalam skenario berikut:
- Ketika kode status non-2xx dikembalikan oleh aplikasi
- Ketika waktu permintaan pemeriksaan habis
- Ketika titik akhir aplikasi tidak dapat dijangkau atau dikonfigurasi dengan salah
- Ketika nilai yang hilang atau tidak valid disediakan dalam
ApplicationHealthState
isi respons - Ketika masa tenggang berakhir
Instans dalam status Tidak Diketahui diperlakukan mirip dengan instans Tidak Sehat . Jika diaktifkan, perbaikan instans akan dilakukan pada instans Tidak Diketahui saat peningkatan bergulir akan dijeda sampai instans kembali ke status Sehat .
Tabel berikut ini memperlihatkan interpretasi status kesehatan untuk Peningkatan Bergulir dan Perbaikan Instans:
Status Kesehatan | Interpretasi Peningkatan Bergulir | Pemicu Perbaikan Instans |
---|---|---|
Menginisialisasi | Tunggu status dalam keadaan Sehat, Tidak Sehat, atau Tidak Diketahui | Tidak |
Sehat | Sehat | Tidak |
Tidak sehat | Tidak sehat | Ya |
Tidak dikenal | Tidak sehat | Ya |
Skema ekstensi untuk Status Kesehatan Biner
JSON berikut menunjukkan skema untuk ekstensi Health Application. Ekstensi memerlukan minimum permintaan "tcp", "http" atau "https" dengan port terkait atau jalur permintaan masing-masing.
{
"type": "extensions",
"name": "HealthExtension",
"apiVersion": "2018-10-01",
"location": "<location>",
"properties": {
"publisher": "Microsoft.ManagedServices",
"type": "<ApplicationHealthLinux or ApplicationHealthWindows>",
"autoUpgradeMinorVersion": true,
"typeHandlerVersion": "1.0",
"settings": {
"protocol": "<protocol>",
"port": <port>,
"requestPath": "</requestPath>",
"intervalInSeconds": 5.0,
"numberOfProbes": 1.0
}
}
}
Nilai properti
Nama | Nilai / Contoh | Jenis Data |
---|---|---|
apiVersion | 2018-10-01 |
tanggal |
penerbit | Microsoft.ManagedServices |
string |
jenis | ApplicationHealthLinux (Linux), ApplicationHealthWindows (Windows) |
string |
typeHandlerVersion | 1.0 |
string |
Pengaturan
Nama | Nilai / Contoh | Jenis Data |
---|---|---|
protokol | http atau https atau tcp |
string |
port | Opsional jika protokol adalah http atau https , wajib jika protokol adalah tcp |
int |
requestPath | Wajib jika protokol adalah http atau https , tidak diizinkan jika protokol adalah tcp |
string |
Skema ekstensi untuk Status Kesehatan Kaya
JSON berikut menunjukkan skema untuk ekstensi Rich Health States. Ekstensi ini memerlukan minimal permintaan "http" atau "https" dengan port terkait atau jalur permintaan masing-masing. Pemeriksaan TCP juga didukung, tetapi tidak akan dapat mengatur ApplicationHealthState
melalui isi respons pemeriksaan dan tidak akan memiliki akses ke status Tidak Diketahui .
{
"type": "extensions",
"name": "HealthExtension",
"apiVersion": "2018-10-01",
"location": "<location>",
"properties": {
"publisher": "Microsoft.ManagedServices",
"type": "<ApplicationHealthLinux or ApplicationHealthWindows>",
"autoUpgradeMinorVersion": true,
"typeHandlerVersion": "2.0",
"settings": {
"protocol": "<protocol>",
"port": <port>,
"requestPath": "</requestPath>",
"intervalInSeconds": 5.0,
"numberOfProbes": 1.0,
"gracePeriod": 600
}
}
}
Nilai properti
Nama | Nilai / Contoh | Jenis Data |
---|---|---|
apiVersion | 2018-10-01 |
tanggal |
penerbit | Microsoft.ManagedServices |
string |
jenis | ApplicationHealthLinux (Linux), ApplicationHealthWindows (Windows) |
string |
typeHandlerVersion | 2.0 |
string |
Pengaturan
Nama | Nilai / Contoh | Jenis Data |
---|---|---|
protokol | http atau https atau tcp |
string |
port | Opsional jika protokol adalah http atau https , wajib jika protokol adalah tcp |
int |
requestPath | Wajib jika protokol adalah http atau https , tidak diizinkan jika protokol adalah tcp |
string |
intervalInSeconds | Opsional, defaultnya adalah 5 detik | int |
numberOfProbes | Opsional, defaultnya adalah 1 | int |
gracePeriod | Opsional, default = intervalInSeconds * numberOfProbes ; masa tenggang maksimum adalah 7200 detik |
int |
Menyebarkan ekstensi Application Health
Ada beberapa cara untuk menyebarkan ekstensi Application Health ke set skala Anda seperti yang dirinci dalam contoh berikut.
Status Kesehatan Biner
Contoh berikut menambahkan ekstensi Application Health (dengan nama myHealthExtension) ke extensionProfile dengan model set skala dari set skala berbasis Windows.
Anda juga dapat menggunakan contoh ini untuk mengubah ekstensi yang ada dari Rich Health State ke Binary Health dengan melakukan panggilan PATCH alih-alih PUT.
PUT on `/subscriptions/subscription_id/resourceGroups/myResourceGroup/providers/Microsoft.Compute/virtualMachineScaleSets/myScaleSet/extensions/myHealthExtension?api-version=2018-10-01`
{
"name": "myHealthExtension",
"properties": {
"publisher": "Microsoft.ManagedServices",
"type": "ApplicationHealthWindows",
"autoUpgradeMinorVersion": true,
"typeHandlerVersion": "1.0",
"settings": {
"protocol": "<protocol>",
"port": <port>,
"requestPath": "</requestPath>"
}
}
}
Gunakan PATCH
untuk mengedit ekstensi yang sudah disebarkan.
Tingkatkan VM untuk menginstal ekstensi.
POST on `/subscriptions/<subscriptionId>/resourceGroups/<myResourceGroup>/providers/Microsoft.Compute/virtualMachineScaleSets/< myScaleSet >/manualupgrade?api-version=2022-08-01`
{
"instanceIds": ["*"]
}
Status Kesehatan Kaya
Contoh berikut menambahkan ekstensi Application Health - Rich States (dengan nama myHealthExtension
) ke extensionProfile
dalam model set skala dari set skala berbasis Windows.
Anda juga dapat menggunakan contoh ini untuk meningkatkan ekstensi yang ada dari Biner ke Status Kesehatan Kaya dengan melakukan panggilan PATCH alih-alih PUT.
PUT on `/subscriptions/subscription_id/resourceGroups/myResourceGroup/providers/Microsoft.Compute/virtualMachineScaleSets/myScaleSet/extensions/myHealthExtension?api-version=2018-10-01`
{
"name": "myHealthExtension",
"properties": {
"publisher": "Microsoft.ManagedServices",
"type": "ApplicationHealthWindows",
"autoUpgradeMinorVersion": true,
"typeHandlerVersion": "2.0",
"settings": {
"protocol": "<protocol>",
"port": <port>,
"requestPath": "</requestPath>",
"intervalInSeconds": <intervalInSeconds>,
"numberOfProbes": <numberOfProbes>,
"gracePeriod": <gracePeriod>
}
}
}
Gunakan PATCH
untuk mengedit ekstensi yang sudah disebarkan.
Tingkatkan VM untuk menginstal ekstensi.
POST on `/subscriptions/<subscriptionId>/resourceGroups/<myResourceGroup>/providers/Microsoft.Compute/virtualMachineScaleSets/< myScaleSet >/manualupgrade?api-version=2022-08-01`
{
"instanceIds": ["*"]
}
Pecahkan masalah
Lihat VMHealth - instans tunggal
Get-AzVmssVM
-InstanceView `
-ResourceGroupName <rgName> `
-VMScaleSetName <vmssName> `
-InstanceId <instanceId>
Lihat VMHealth – panggilan batch
Ini hanya tersedia untuk Virtual Machine Scale Sets dengan orkestrasi Uniform.
GET on `/subscriptions/<subscriptionID>/resourceGroups/<resourceGroupName>/providers/Microsoft.Compute/virtualMachineScaleSets/<vmssName>/virtualMachines/?api-version=2022-03-01&$expand=instanceview`
Status Kesehatan tidak muncul
Jika Status Kesehatan tidak muncul di portal Azure atau melalui panggilan GET, periksa untuk memastikan bahwa VM ditingkatkan ke model terbaru. Jika VM tidak berada pada model terbaru, tingkatkan VM dan status kesehatan akan muncul.
Log output eksekusi ekstensi
Output eksekusi ekstensi dicatat di log ke file yang ditemukan dalam direktori berikut:
C:\WindowsAzure\Logs\Plugins\Microsoft.ManagedServices.ApplicationHealthWindows\<version>\
/var/lib/waagent/Microsoft.ManagedServices.ApplicationHealthLinux-<extension_version>/status
/var/log/azure/applicationhealth-extension
Log juga menangkap status kesehatan aplikasi secara berkala.
Langkah berikutnya
Pelajari cara menyebarkan aplikasi Anda di Virtual Machine Scale Sets.