Il bilanciamento del carico non funziona come previsto in Apache in modalità rotonda

Stiamo affrontando un comportmento imprevisto con il bilanciamento del carico rotondo in Apache quando uno dei server Tomcat scende.

Il nostro programma di installazione: abbiamo due server Web Apache sulla parte anteriore utilizzando il module mod_jk per il bilanciamento del carico con la distribuzione del carico rotondo. Abbiamo abilitato la sensazione di session. Il carico è l'equilibrio tra i 4 server Tomcat su cui sono in esecuzione le applicazioni.

  • Configurazione Etag con più server apache o CDN / Come fa Google ETags?
  • Perché un backreference da $ 1 funziona in una riscrittura senza sottogruppi?
  • IOException: La lettura di Socket non è rioutput utilizzando Apache 2, mod_jk e Tomcat over AJP
  • Trova le pagine che causano il carico?
  • Come posso installare più applicazioni Atlassian in un singolo server?
  • Come tornare 404 dal programma Apache2 CGI
  • A volte sotto carico pesante, se c'è una lentezza nel nostro database, uno dei server Tomcat entra in uno stato sospeso e avrebbe bisogno di un riavvio. Il momento in cui rimbalziamo il server Tomcat vediamo un picco di richieste in uno degli altri server Tomcat che poi entrerebbe nello stato sospeso e avremo bisogno di un riavvio.

    Alla fine tutti i server Tomcat appendono in modo simile.

    Perché Apache trasferisce l'integer carico a un server invece di distribuire il carico?

    Ora stiamo provando il worker.balancer.method=B per vedere se questo aiuta a risolvere il nostro problema.

    Nelle Immagini sottostanti vediamo che i thread di servizio sparano,

    • in Server 1 quando Server 4 scende a circa 11.50
    • in Server 2 quando Server 1 scende a circa 11.55

    immettere qui la descrizione dell'immagineimmettere qui la descrizione dell'immagineimmettere qui la descrizione dell'immagine

  • È una buona idea avere un server separato per i server di nomi?
  • I moduli Apache dav producono cadaveri: Imansible accedere / (non abilitato a WebDAV?)
  • Host Virtuali Dinamici In Apache con sottodomini www e non-www
  • Dominio completo di ProxyPass a Tomcat, inclusa la radice
  • Misurare "il tempo di caricamento in millisecondi" each minuto
  • Nginx + Apache reindirizzamento traversa di traccia
  • One Solution collect form web for “Il bilanciamento del carico non funziona come previsto in Apache in modalità rotonda”

    (Inserendo una risposta anziché un commento in quanto potrebbe essere troppo lungo):

    Non sto dicendo "F5 può gestire il problema in modo migliore " ma:

    • Preferirei fare il bilanciamento del carico dai bilanciatori di carico: F5 grande ip, tra gli altri prodotti, where progettato per fare questo lavoro.
    • Poichè avete una piccola configuration (4 tomcat), non vedo motivo per ora avere 2 livelli di bilanciamento del carico. Avere solo F5 di verificare che una pagina personalizzata jsp restituisce 200 è molto più semplice.
    • Il punto più difettoso che ricordo sono: quando un nodo è in discesa, un certo traffico è ancora diretto fino al prossimo controllo sanitario (~ 5 sec per impostazione predefinita iirc). La session viene persa se un nodo è in discesa (forse Tomcat offre la possibilità di disporre di una soluzione, ad es. Nel database …).

    Non credo sia facile trovare un benchmarking / test di tipo pubblico "neutro" sul miglior equipement / software per fare il bilanciamento del carico. Posso solo consigliare di fare il tuo se hai f5 di riserva per stagging.

    Come regola generale, farei f5 fare quanto è ansible: bilanciamento del carico, certificati SSL, riscrittura url, asm, … Non perché f5 sono migliori ma perché è conveniente avere tutto nello stesso posto. Purtroppo, quando il traffico http inizia a crescere in poche centinaia di MB, devi iniziare a fare qualche lavoro da apache invece di f5.

    Suggerimenti per Linux e Windows Server, quali Ubuntu, Centos, Apache, Nginx, Debian e argomenti di rete.