Pemeriksaan kesehatan Azure Load Balancer

Azure Load Balancer aturan memerlukan pemeriksaan kesehatan untuk mendeteksi status titik akhir. Konfigurasi respons pemeriksaan kesehatan dan respons pemeriksaan menentukan instans kumpulan backend mana yang akan menerima alur baru. Gunakan pemeriksaan kesehatan untuk mendeteksi kegagalan aplikasi. Hasilkan respons khusus terhadap pemeriksaan kesehatan. Gunakan pemeriksaan kesehatan untuk kontrol aliran untuk mengelola beban atau waktu henti yang direncanakan. Ketika pemeriksaan kesehatan gagal, Load Balancer akan berhenti mengirim alur baru ke masing-masing instans yang tidak sehat. Konektivitas keluar tidak terpengaruh, hanya masuk.

Pemeriksaan kesehatan mendukung beberapa protokol. Ketersediaan protokol pemeriksaan kesehatan tertentu bervariasi menurut Load Balancer SKU. Selain itu, perilaku layanan bervariasi menurut Load Balancer SKU seperti yang ditunjukkan dalam tabel ini:

SKU Standar SKU Dasar
Tipe pemeriksaan TCP, HTTP, HTTPS TCP, HTTP
Perilaku tidak berfungsi pemeriksaan Semua penyelidikan turun, semua aliran TCP berlanjut. Semua penyelidikan turun, semua aliran TCP kedaluwarsa.

Penting

Pemeriksaan kesehatan Load Balancer berasal dari alamat IP 168.63.129.16 dan tidak boleh diblokir untuk pemeriksaan untuk menandai instans Anda. Tinjau alamat IP sumber penyelidikan untuk detailnya. Untuk melihat lalu lintas pemeriksaan ini dalam instans backend Anda, tinjau FAQ Azure Load Balancer.

Terlepas dari ambang batas waktu yang dikonfigurasi, pemeriksaan kesehatan penyeimbang beban HTTP(S) akan secara otomatis menandai instans sebagai tidak berfungsi jika server mengembalikan kode status apa pun yang bukan HTTP 200 OK atau jika koneksi dihentikan melalui reset TCP.

Konfigurasi pemeriksaan

Konfigurasi pemeriksaan kesehatan terdiri dari elemen-elemen berikut:

  • Durasi interval antara masing-masing pemeriksaan

  • Protokol

  • Port

  • Jalur HTTP yang digunakan untuk HTTP GET ketika menggunakan pemeriksaan HTTP(S)

Catatan

Definisi pemeriksaan tidak wajib atau diperiksa saat menggunakan Azure PowerShell, Azure CLI, Templat, atau API. Tes validasi pemeriksaan hanya dilakukan saat menggunakan Portal Azure.

Sinyal aplikasi, deteksi sinyal, dan reaksi Load Balancer

Nilai interval menentukan seberapa sering pemeriksaan kesehatan akan memeriksa respons dari instans kumpulan backend Anda. Jika pemeriksaan kesehatan gagal, instans kumpulan backend Anda akan langsung ditandai sebagai tidak sehat. Pada pemeriksaan sehat berikutnya, pemeriksaan kesehatan akan segera menandai instans kumpulan backend Anda sebagai sehat.

Misalnya, pemeriksaan kesehatan diatur lima detik. Waktu di mana pemeriksaan dikirim tidak disinkronkan dengan kapan aplikasi Anda dapat mengubah status. Total waktu yang dibutuhkan untuk pemeriksaan kesehatan Anda untuk mencerminkan keadaan aplikasi Anda dapat termasuk ke dalam salah satu dari dua skenario berikut:

  1. Jika aplikasi Anda menghasilkan respons pemeriksaan waktu habis tepat sebelum pemeriksaan berikutnya tiba, pendeteksian peristiwa ini akan memakan waktu 5 detik ditambah durasi time-out aplikasi hingga saat pemeriksaan tiba. Anda dapat mengasumsikan deteksi ini membutuhkan waktu sedikit lebih lama dari 5 detik.

  2. Jika aplikasi Anda menghasilkan respons time-out tepat setelah pemeriksaan berikutnya tiba, pendeteksian peristiwa ini tidak akan dimulai hingga pemeriksaan tiba dan waktu habis, ditambah 5 detik lagi. Anda dapat mengasumsikan deteksi ini membutuhkan waktu kurang dari 10 detik.

Untuk contoh ini, setelah deteksi terjadi, platform kemudian akan membutuhkan sedikit waktu untuk bereaksi terhadap perubahan ini.

Reaksinya tergantung pada:

  • Ketika aplikasi berubah status
  • Ketika perubahan terdeteksi
  • Ketika pemeriksaan kesehatan berikutnya dikirim
  • Ketika deteksi telah dikomunikasikan di seluruh platform

Asumsikan reaksi terhadap respons time-out akan memakan waktu minimal 5 detik dan maksimum 10 detik untuk bereaksi terhadap perubahan.

Contoh ini diberikan untuk menggambarkan apa yang sedang terjadi. Tidak mungkin untuk memperkirakan durasi yang tepat di luar panduan dalam contoh.

Catatan

Pemeriksaan kesehatan akan pemeriksaan semua contoh yang berjalan di kolam backend. Jika instans dihentikan, instans tidak akan diselidiki sampai dimulai lagi.

Jenis pemeriksaan

Protokol yang digunakan oleh pemeriksaan kesehatan dapat dikonfigurasi ke salah satu hal berikut:

  • Pendengar TCP

  • Titik akhir HTTP

  • Titik akhir HTTPS

Protokol yang tersedia bergantung pada SKU Load Balancer yang digunakan:

TCP HTTP HTTPS
SKU Standar
SKU Dasar

probe TCP

Pemeriksaan TCP memulai koneksi dengan melakukan jabat tangan TCP terbuka tiga arah dengan port yang ditentukan. Pemeriksaan TCP mengakhiri koneksi dengan jabat tangan TCP empat arah.

Interval pemeriksaan minimum adalah 5 detik dan tidak boleh lebih dari 120 detik.

Pemeriksaan TCP gagal ketika:

  • Pendengar TCP pada instans tidak merespons sama sekali selama periode waktu habis. Pemeriksaan ditandai berdasarkan jumlah waktu permintaan pemeriksaan habis, yang dikonfigurasi untuk tidak terjawab sebelum menandai pemeriksaan.

  • Pemeriksaan menerima reset TCP dari instans.

Pemeriksaan HTTP / HTTPS

Catatan

Pemeriksaan HTTPS hanya tersedia untuk Load Balancer Standar.

Pemeriksaan HTTP dan HTTPS dibangun pada pemeriksaan TCP dan mengeluarkan HTTP GET dengan jalur yang ditentukan. Kedua pemeriksaan ini mendukung jalur relatif untuk HTTP GET. Pemeriksaan HTTPS sama dengan pemeriksaan HTTP dengan penambahan Transport Layer Security (TLS). Pemeriksaan kesehatan ditandai ketika instans merespons dengan status HTTP 200 dalam periode waktu habis. Pemeriksaan kesehatan berupaya memeriksa port pemeriksaan kesehatan yang dikonfigurasi setiap 15 detik secara default. Interval pemeriksaan minimum adalah 5 detik dan tidak boleh lebih dari 120 detik.

Pemeriksaan HTTP/HTTPS juga dapat berguna untuk mengimplementasikan logika Anda sendiri untuk menghapus instans dari load balancer jika port pemeriksaan juga merupakan pendengar untuk layanan itu sendiri. Misalnya, Anda dapat memutuskan untuk menghapus instans jika CPU di atas 90% dan mengembalikan status HTTP non-200.

Catatan

Pemeriksaan HTTPS memerlukan penggunaan sertifikat berdasarkan yang memiliki tanda tangan hash minimum SHA256 di seluruh rantai.

Jika Anda menggunakan Cloud Services dan memiliki peran web yang menggunakan w3wp.exe, Anda juga mencapai pemantauan otomatis situs web Anda. Kegagalan dalam kode situs web Anda mengembalikan status non-200 ke pemeriksaan load balancer.

pemeriksaan HTTP / HTTPS gagal ketika:

  • Titik akhir pemeriksaan mengembalikan kode respons HTTP selain 200 (misalnya, 403, 404, atau 500). Pemeriksaan ditandai dengan segera.

  • Titik akhir pemeriksaan tidak merespons sama sekali selama interval minimum pemeriksaan dan periode waktu habis 30 detik. Beberapa permintaan pemeriksaan mungkin tidak terjawab sebelum pemeriksaan ditandai sebagai tidak berjalan dan sampai jumlah semua interval waktu habis telah tercapai.

  • Titik akhir pemeriksaan menutup koneksi melalui reset TCP.

Perilaku pemeriksaan

Pemeriksaan kesehatan TCP, HTTP, dan HTTPS dianggap sehat dan menandai titik akhir backend sebagai sehat ketika:

  • Pemeriksaan kesehatan berhasil sekali setelah sepatu bot VM.

Setiap titik akhir backend yang telah mencapai keadaan sehat memenuhi syarat untuk menerima alur baru.

Catatan

Jika pemeriksaan kesehatan berfluktuasi, load balancer menunggu lebih lama sebelum menempatkan titik akhir backend kembali dalam kondisi sehat. Waktu tunggu ekstra ini melindungi pengguna dan infrastruktur dan merupakan kebijakan yang disengaja.

Perilaku pemeriksaan down

Koneksi TCP

Koneksi TCP baru akan berhasil tetap sehat titik akhir backend.

Jika pemeriksaan kesehatan titik akhir backend gagal, koneksi TCP yang dibuat ke titik akhir backend ini berlanjut.

Jika semua pemeriksaan untuk semua instans di kumpulan backend gagal, tidak ada aliran baru yang akan dikirim ke kumpulan backend. Load Balancer Standar akan mengizinkan alur TCP yang tersambung untuk melanjutkan. Load Balancer Dasar akan mengakhiri semua alur TCP yang ada ke kumpulan backend.

Load Balancer adalah layanan kirim langsung. Load Balancer tidak menghentikan koneksi TCP. Aliran selalu antara klien dan OS tamu VM dan aplikasi. Kumpulan dengan semua probe turun menghasilkan perlindungan yang tidak akan menanggapi upaya membuka koneksi TCP. Tidak ada titik akhir backend yang sehat untuk menerima aliran dan merespons dengan pengakuan.

Datagram UDP

Datagram UDP akan dikirimkan ke titik akhir backend yang sehat.

UDP tanpa koneksi dan tidak ada status alur yang dilacak untuk UDP. Jika ada pemeriksaan kesehatan titik akhir backend yang gagal, alur UDP yang ada akan berpindah ke instans sehat lainnya di kumpulan backend.

Jika semua pemeriksaan untuk semua instans di kumpulan backend gagal, alur UDP yang ada akan berakhir untuk Load Balancer dasar dan standar.

Alamat IP Sumber pemeriksaan

Load Balancer menggunakan layanan pemeriksaan terdistribusi untuk model kesehatan internalnya. Layanan penyelidikan berada di setiap host di mana VM dan dapat diprogram sesuai permintaan untuk menghasilkan pemeriksaan kesehatan sesuai konfigurasi pelanggan. Lalu lintas pemeriksaan kesehatan berada tepat di antara layanan pemeriksaan yang menghasilkan pemeriksaan kesehatan dan VM pelanggan. Semua pemeriksaan kesehatan Load Balancer IPv4 berasal dari alamat IP 168.63.129.16 sebagai sumbernya. (Perhatikan bahwa pemeriksaan IPv6 menggunakan alamat lokal tautan sebagai sumbernya.)

Tag layanan AzureLoadBalance mengidentifikasi sumber alamat IP ini di grup keamanan jaringan Anda dan mengizinkan lalu lintas pemeriksaan kesehatan secara default.

Selain pemeriksaan kesehatan Load Balancer, operasi berikut menggunakan alamat IP ini:

  • Memungkinkan Agen VM untuk berkomunikasi dengan platform untuk memberi sinyal dalam status "Siap"

  • Memungkinkan komunikasi dengan server virtual DNS untuk memberikan resolusi nama yang difilter kepada pelanggan yang tidak menentukan server DNS kustom. Pemfilteran ini memastikan bahwa pelanggan hanya dapat menyelesaikan hostname penyebaran mereka.

  • Memungkinkan VM untuk mendapatkan alamat IP dinamis dari layanan DHCP di Azure.

Panduan desain

  • Pemeriksaan kesehatan digunakan untuk membuat layanan tangguh Anda dapat diskalakan. Kesalahan konfigurasi dapat memengaruhi ketersediaan dan skalabilitas layanan Anda. Tinjau seluruh dokumen ini dan pertimbangkan apa efeknya terhadap skenario Anda ketika respons pemeriksaan naik atau turun. Pertimbangkan bagaimana respons probe memengaruhi ketersediaan aplikasi Anda.

  • Ketika Anda merancang model kesehatan untuk aplikasi Anda, periksa port pada titik akhir backend yang mencerminkan kesehatan instans itu dan layanan aplikasi. Port aplikasi dan port pemeriksaan tidak harus sama. Dalam beberapa skenario, mungkin diinginkan agar port pemeriksaan berbeda dari port yang digunakan aplikasi Anda.

  • Ini dapat berguna untuk aplikasi Anda untuk menghasilkan respons pemeriksaan kesehatan, dan memberi sinyal pada load balancer apakah instans Anda harus menerima koneksi baru. Anda dapat memanipulasi respons pemeriksaan untuk membatasi pengiriman koneksi baru ke instans dengan kegagalan dalam pemeriksaan kesehatan. Anda dapat mempersiapkan pemeliharaan aplikasi Anda dan memulai pengeringan koneksi ke aplikasi Anda. Sinyal pemeriksaan tidak berfungsi akan selalu memungkinkan aliran TCP berlanjut hingga waktu menganggur habis atau penutupan koneksi di Standard Load Balancer.

  • Untuk aplikasi keseimbangan beban UDP, buat sinyal pemeriksaan kesehatan kustom dari titik akhir backend. Gunakan TCP, HTTP, atau HTTPS untuk pemeriksaan kesehatan yang cocok dengan pendengar yang sesuai.

  • Aturan penyeimbangan beban Port HA dengan Standard Load Balancer. Semua port memiliki beban seimbang dan respons pemeriksaan kesehatan tunggal harus mencerminkan status seluruh instans.

  • Jangan menerjemahkan atau proksi pemeriksa kesehatan melalui instans yang menerima pemeriksa kesehatan ke instans lain dalam jaringan virtual Anda. Konfigurasi ini dapat menyebabkan kegagalan kaskade dalam skenario Anda. Sebagai contoh: Satu set appliance pihak ketiga disebarkan di kumpulan backend load balancer untuk memberikan skala dan redundansi untuk appliance. Pemeriksaan kesehatan dikonfigurasi untuk memeriksa port proksi appliance pihak ketiga atau diterjemahkan ke mesin virtual lain di belakang appliance. Jika Anda memeriksa port yang sama yang digunakan untuk menerjemahkan atau meminta proksi ke mesin virtual lain di belakang appliance, setiap respons pemeriksaan dari satu mesin virtual akan menandai appliance tersebut. Konfigurasi ini dapat menyebabkan kegagalan kaskade aplikasi. Pemicunya bisa menjadi kegagalan pemeriksaan berselang yang akan menyebabkan load balancer menandai instans appliance. Tindakan ini dapat menonaktifkan aplikasi Anda. Pemeriksaan kesehatan appliance itu sendiri. Pemilihan pemeriksaan untuk menentukan sinyal kesehatan merupakan pertimbangan penting untuk skenario appliance jaringan virtual (NVA). Konsultasikan dengan vendor aplikasi Anda untuk sinyal kesehatan yang sesuai dengan skenario tersebut.

  • Jika Anda tidak mengizinkan IP sumber pemeriksaan dalam kebijakan firewall Anda, pemeriksaan kesehatan akan gagal karena tidak dapat mencapai instans Anda. Pada gilirannya, Load Balancer akan menandai instans Anda karena kegagalan pemeriksaan kesehatan. Kesalahan konfigurasi ini dapat menyebabkan skenario aplikasi seimbang beban Anda gagal.

  • Untuk pemeriksaan kesehatan Load Balancer untuk menandai instans Anda, Anda harus mengizinkan alamat IP ini di grup keamanan jaringan Azure dan kebijakan firewall lokal. Secara default, setiap grup keamanan jaringan menyertakan tag layanan AzureLoadBalancer untuk mengizinkan lalu lintas pemeriksaan kesehatan.

  • Untuk menguji kegagalan pemeriksa kesehatan atau menandai instans individu, gunakan kelompok keamanan jaringan untuk secara eksplisit memblokir pemeriksa kesehatan. Buat aturan NSG untuk memblokir port tujuan atau IP sumber untuk mensimulasikan kegagalan pemeriksaan.

  • Jangan konfigurasikan VNet Anda dengan rentang alamat IP milik Microsoft yang berisi 168.63.129.16. Konfigurasi tersebut akan bertabrakan dengan alamat IP pemeriksaan kesehatan dan dapat menyebabkan skenario Anda gagal.

  • Jika Anda memiliki beberapa antarmuka yang dikonfigurasi di mesin virtual Anda, pastikan Anda menanggapi pemeriksaan pada antarmuka yang Anda terima. Anda mungkin perlu sumber alamat jaringan menerjemahkan alamat ini di VM berdasarkan per antarmuka.

  • Jangan aktifkan tanda waktu TCP. Stempel waktu TCP dapat menyebabkan pemeriksaan kesehatan gagal karena paket TCP dijatuhkan oleh tumpukan TCP OS tamu mesin virtual. Paket yang dijatuhkan dapat menyebabkan load balancer menandai titik akhir tidak berfungsi. Tanda waktu TCP secara rutin diaktifkan secara default pada gambar VM yang diperkeras keamanan dan harus dinonaktifkan.

Pemantauan

Load Balancer Standarpublik dan internal mengekspos status pemeriksaan kesehatan per titik akhir dan titik akhir backend melalui Azure Monitor. Metrik ini dapat dikonsumsi oleh layanan Azure atau aplikasi mitra lainnya.

Log Azure Monitor tidak tersedia untuk Basic Load Balancer publik dan internal.

Batasan

  • Pemeriksaan HTTPS tidak mendukung autentikasi timbal balik dengan sertifikat klien.

  • Anda harus menganggap pemeriksaan kesehatan akan gagal ketika tanda waktu TCP diaktifkan.

  • Pemeriksaan kesehatan penyeimbang beban Basic SKU tidak didukung dengan set skala komputer virtual.

  • Pemeriksaan HTTP tidak mendukung pemeriksaan pada port berikut karena masalah keamanan: 19, 21, 25, 70, 110, 119, 143, 220, 993.

Langkah berikutnya