Amazon EC2 Bilanciamento del carico elastico – strategia per il riavvio del server zero

Ho 5 server web (Apache / mod_perl) dietro Amazon EC2 Elastic Load Balancing, quando distribuisco i codici ai server web, sto facendo questo ..

  1. Per each macchina, spegnere l'Apache
  2. Aggiorna il codice
  3. Avviare il server e passare al server successivo

Penso che quando il mio server è arrestato, ELB non distribuirà la richiesta al mio server, ma come circa la richiesta che ancora serve?

  • L'installazione di MySQL si blocca su Ubuntu 16.04
  • archiviare e visualizzare le metriche dell'ambiente amazon ec2 cloudwatch
  • Un migliore command "superiore" per Mac OS X?
  • Ec2 esempio con errore: imansible creare file temp per qui-documento
  • Come configurare Elastico Beanstalk per l'utilizzo di Rails con Postgres?
  • Come trovare il motivo di una settimana di inattività settimanale su un server Web Ubuntu ospitato da AWS?
  • Penso che sia un approccio migliore

    1. Smettere di accettare una nuova richiesta da ELB
    2. Dormire a volte, server web di arresto solo se tutte le richieste vengono risposte
    3. Aggiorna i codici
    4. Avviare nuovamente il server

    Ma come eseguire (1) e (2) dal mio locale sever? Devo utilizzare l'API AWS? o altro modo semplice per farlo?

    Grazie.

    3 Solutions collect form web for “Amazon EC2 Bilanciamento del carico elastico – strategia per il riavvio del server zero”

    Ho eseguito apache / mod_perl come istanze EC2 bilanciate ed eseguire aggiornamenti di codice regolarmente come si dice. Il mio process è:

    1. prendete un'istanza o due in rotazione
    2. chiudere apache in quell'istanza
    3. aggiornare l'istanza (s)
    4. tornare alla rotazione e rimuovere gli altri

    La documentazione di AWS viene spiegata come aggiungere e rimuovere l'istanza dalla rotazione utilizzando l'API o la Console, la vostra scelta. Noterai che con il mio approccio, i webservers vanno di rotazione graziosamente, quindi non mi preoccupo se una richiesta particolare dell'utente viene uccisa. Come citato @ cyberx86, è ansible utilizzare il command apachectl -k graceful per arrestare il server apache dopo che ciascuna richiesta viene elaborata.

    Ho un altro modo per get questo risultato, se hai diverse cose da aggiornare su each server. Quello sarà molto sprecato per aggiornare 5 server per le stesse operazioni.

    Creare un gruppo di bilanciamento e scalatura del carico. Assicurarsi che il drenaggio della connessione sia abilitato.

    C'è il mio passo di aggiornamento.

    1. Rimuovere 1 istanza dall'equilibratore di carico. Aggiorna tutto quello che ti serve. E creare un'istanza di produzione di AMI. Ciò causerà il riavvio dell'istanza.
    2. Configurare il gruppo Scaling con un nuovo AMI.
    3. Rimuovere l'istanza dall'equilibratore di carico e arrestare l'istanza. La nuova istanza verrà avviata automaticamente
    4. Continuare ad arrestare un'altra istanza e dopo avere ripristinato l'istanza. L'aggiornamento è completato.

    Alcune guide:
    Bilanciamento del carico Il gruppo di scala automatica
    Drenaggio della connessione

    Se la tua distribuzione può essere modificata per supportre i nuovi installazioni in linea con un nuovo codice: puoi effettivamente rimuovere l'istanza da un ELB, attendi 60 secondi (dopo il quale l'ELB di Amazon chiuderebbe la connessione per il backend e il client) e quindi interrompere l'istanza – e contare su un gruppo di scala Auto di Amazon per portre un nuovo esempio per te. Ho creato uno strumento open-source che automatizza questo process – disponibile a awsmissingtools.com – cercare lo strumento chiamato "AWS-HA-Release".

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