Puncte:0

Cum să configurați un proxy de echilibrare a încărcăturii Apache cu un BalancerMember de așteptare la cald

drapel vn

Am două containere docker fiecare cu o aplicație care rulează pe portul 8080. Această aplicație are un punct final REST „/status” care poate semnala dacă aplicația mai are resurse pentru a accepta o altă solicitare a unui utilizator. O cerere de utilizator va fi transmisă și echilibrată către cele două containere de un proxy Apache de echilibrare a încărcăturii.

Ce vreau sa realizez:

  1. Dacă aplicația dintr-un container semnalează că nu dorește să primească mai multe solicitări, echilibratorul nu va trimite cereri către acest container
  2. Dacă fiecare rulează semnale de server de aplicații pentru a nu primi nicio solicitare, unul dintre acele servere ar trebui să primească oricum solicitările.

Ce am configurat:

<VirtualHost *:80>
    ProxyRequests off
    ProxyPreserveHost On
    
    ProxyHCExpr status_ok {hc('body') ~ /Status: ok/}
    
    <Proxy balancer://application-cluster>
            BalancerMember http://application1:8080 route=worker1 hcexpr=status_ok hcmethod=get hcuri=/status
            BalancerMember http://application2:8080 route=worker2 hcexpr=status_ok hcmethod=get hcuri=/status
            BalancerMember http://application1:8080 route=standby status=+H
            ProxySet lbmethod=byrequests 
    </Proxy>
    
    <Location /balancer-manager>
            SetHandler balancer-manager
    </Location>

    ProxyPass /balancer-manager !

    ProxyPass / balancer://application-cluster/
    ProxyPassReverse / balancer://application-cluster/
</VirtualHost>

După cum puteți vedea aici, aplicația1 este definită ca un standby la cald și ar trebui să fie „victima” pentru a gestiona solicitările dacă toți ceilalți membri Balance sunt „offline” pentru cereri noi

Ce funcționează:

  • Solicitările sunt echilibrate de încărcare pentru ambii BalancerMembers.
  • application1 și application2 pot semnala să nu primească nicio solicitare. În acest caz, ambii BalancerMembers arată starea așteptată „Init HcFl” pe pagina Balancer Manager.

Ce nu merge:

  • application1 nu apare ca standby fierbinte pe pagina Balance Manager
  • Prin urmare, cererile nu vor fi transmise aplicației1

Ce este posibil dar nu vreau să fac:

  • Dacă configurez hot standby pentru a redirecționa către alt port pe application1, va apărea și va trimite cererile către acest port.

Se pare că Apache elimină doar un BalancerMember dacă gazda și portul sunt egale cu un alt BalancerMember. Îmi lipsește ceva sau există o altă modalitate de a realiza ceea ce îmi doresc?

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.