Saya menggunakan HAProxy 1.4.18 dengan konfigurasi backend berikut
backend staging
option httpchk HEAD /check.txt HTTP/1.0
http-check disable-on-404
default-server error-limit 1 on-error mark-down
server staging01 x.x.x.x:80 check observe layer7
server staging02 x.x.x.x:80 check observe layer7
Server menjalankan beberapa aplikasi pada apache / penumpang.
Kombinasi httpchk dan disable-on-404 memungkinkan shutdown yang anggun dan menghapus server dari lb cukup mudah sementara masih dapat mengakses langsung (yaitu untuk pengujian).
Saya mencoba untuk mengatur pengamatan untuk menonaktifkan server ketika aplikasi tidak berfungsi. Saya telah merusak konfigurasi aplikasi pada staging02 sehingga selalu mengembalikan 500. Ini ditandai dengan benar BAWAH setelah 500 pertama tetapi kemudian ditandai ATAS di httpchk berikutnya.
Ini file lognya:
Server staging/staging02 is DOWN, reason: Health analyze, info: "Detected 1 consecutive errors, last one was: Wrong http response". 1 active and 1 backup servers left. 2 sessions active, 0 requeued, 0 remaining in queue.
Server staging/staging02 is DOWN, reason: Health analyze, info: "Detected 1 consecutive errors, last one was: Wrong http response". 1 active and 1 backup servers left. 1 sessions active, 0 requeued, 0 remaining in queue.
Server staging/staging02 is UP, reason: Layer7 check passed, code: 200, info: "OK", check duration: 0ms. 2 active and 1 backup servers online. 0 sessions requeued, 0 total in queue.
Apakah ada cara untuk menggabungkan kedua cek itu?
Jawaban:
Perbedaan yang saya pahami sekarang adalah /check.txt benar - benar mengembalikan 200 tanggapan tetapi semua permintaan ke aplikasi mengembalikan 500. HAProxy melihat 500-an kembali dari permintaan yang diproksi dan mengeluarkan server dari kolam tetapi kemudian memulai sendiri periksa, terima 200 dan pasang kembali server.
Solusinya adalah dengan melakukan salah satu dari:
/check.txt
./check.txt
menjadi aplikasi Ruby yang berisi cukup banyak logika untuk memilih antara tanggapan 200 dan 500 bila perlu.inter
nilainya menjadi sesuatu yang konyol seperti 3600. Ini akan memberi Anda waktu satu jam untuk melakukan pengujian Anda atau (jika server turun sendiri) mencari tahu masalahnya dan membawanya kembali.inter
nilai ke sesuatu yang lebih kecil seperti 60 tetapi tetapkanrise
nilai ke sesuatu yang lebih tinggi seperti 60. Ini juga akan memberi Anda satu jam sebelum server ditambahkan kembali ke kolam. (Catatan, keduanya terdaftar terakhir karena mereka mungkin ide yang sangat buruk.)sumber
/check.txt
dan mengarahkan httpchk ke satu aplikasi. Thecheck.txt
File berguna untuk cepat dan anggun menghapus server dari semua HAProxy (3 dari mereka di setup HA, hanya satu yang aktif). Tampaknya jugadisable server
tidak ada di antara reload.