HAProxy sağlık kontrolleri: httpchk kullanma ve gözlemleme?


10

Aşağıdaki arka uç yapılandırması ile HAProxy 1.4.18 kullanıyorum

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

Sunucular apache / yolcuda birden fazla uygulama çalıştırıyor.

Httpchk ve devre dışı bırakma-404 kombinasyonu, doğrudan erişebilmenin yanı sıra (örn. Test için) zarif bir kapanma ve sunucuyu lb'den kolayca kaldırmayı sağlar.

Bir uygulama çalışmadığında bir sunucuyu devre dışı bırakmak için gözlemlemek kurmaya çalışıyorum. Staging02 üzerinde uygulama yapılandırmasını kırdım, bu yüzden her zaman 500 döndürür. İlk 500'den sonra doğru AŞAĞI olarak işaretlenir, ancak bir sonraki httpchk'de UP olarak işaretlenir.

Günlük dosyası şöyledir:

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.

Bu iki kontrolü birleştirmenin bir yolu var mı?


Sadece HAProxy'nin kesinlikle sorun olduğundan emin olmak için, arka uç Apache sunucunuzdan eşleşen üç günlük satırını bulabilir ve sorunuza ekleyebilirsiniz?
Ladadadada

Apache sunucusundan biri, üzerindeki tüm uygulamaların 500 hata kodu döndürmesi için bilerek yanlış yapılandırılmıştır. Ancak /check.txt dosyayı kaldırmazsanız her zaman çalışır. Check.txt dosyası hala orada olsa bile 500 hata döndürürse apache sunucusunun devre dışı bırakılmasını istiyorum.
ouranos

Yanıtlar:


4

Şimdi anlıyorum ayrım o /check.txt olduğunu mu aslında proxy istekleri geri gelen 500s gören bir 500. HAProxy dönmek 200 tepkisini ancak uygulamaya tüm istekleri geri dönmek ve havuzun dışına sunucuyu alır ama sonra kendi başlatır kontrol eder, 200 alır ve sunucuyu havuza geri koyar.

Çözüm aşağıdakilerden birini yapmak olacaktır:

  1. Uygulama yerine Apache'yi yapılandırın, böylece her istek statik dosyada bile 500 yanıt döndürür /check.txt.
  2. Değişim /check.txtuygun bir 200 ve 500 tepki arasında bir seçim yapmak yeterli mantığı içerir Ruby app içine.
  3. interDeğeri 3600 gibi saçma bir şeye ayarlayın . Bu, testinizi yapmanız için bir saat vermeli veya (sunucu kendi başına düştüyse) sorunu çözmeli ve yeniden getirmelidir.
  4. interDeğeri 60 gibi daha küçük bir değere ayarlayın, ancak risedeğeri 60 gibi daha yüksek bir değere ayarlayın. Bu, sunucunun havuza geri eklenmesi için bir saat de verir. (Not, bu ikisi en son listelenmiştir çünkü muhtemelen çok kötü fikirlerdir.)

Evet olan bu. Sanırım kurtulmak /check.txtve bir uygulamayı httpchk işaret etmek gerekir. check.txtHızlı ve incelikle (HA kurulumunda yalnızca bir etkin 3 tanesi) Tüm HAProxy bir sunucu kaldırmak için dosya kullanışlı oldu. Ayrıca disable serveryeniden yükleme arasında devam etmiyor gibi görünüyor .
ouranos
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.