2016-04-19 12 views
7

Sto usando un Web & Istanze di DB in AWS EC2 e voglio renderle disponibili, in modo che se un server fallisce (server primario), poi un altro è acceso (server secondario) .EC2 Amazon Alta disponibilità sempre attiva

Ho trovato molte informazioni per la disponibilità elevata di RDS ma non per le istanze EC2 che non sono RDS.

  1. Potresti fornirmi dei collegamenti per una buona guida su come farlo?
  2. Potrebbe dirmi in poche parole qual è il processo che dovrei fare per raggiungere l'alta disponibilità?

Grazie.

risposta

1

La domanda che dovresti porre è: come faccio ad avere la mia applicazione HA su AWS, non come faccio a fare EC2 HA. E la risposta breve è che devi dire a AWS come definisci e distribuisci prima la tua applicazione.

Nel caso di RDS, è abbondantemente chiaro quale sia l'applicazione: è il server di database di vostra scelta. Nella maggior parte dei casi, AWS può configurare un'istanza HA di RDS con impostazioni predefinite senza molti input da parte tua.

Tuttavia, nel caso della propria applicazione, è necessario fornire ad AWS ulteriori dettagli. Ci sono diversi modi per farlo:

  • creare un ELB con un gruppo di istanze EC2 in diverse zone delle disponibilità
  • creare un ELB con una auto-scaling group che vi condurrà lungo il sentiero di creare un AMI e launch configuration ; in questa modalità, puoi anche dire ad ASG di usare il controllo di stato ELB per determinare quando un'istanza EC2 non è più in salute
  • non hai menzionato quale sia la tua applicazione, ma potresti voler coinvolgere CodeDeploy per dire a AWS come implementare il codice più recente in un'istanza EC2 appena avviata; CodeDeploy funziona bene in tandem con ELB e ASG
  • invece di definire singolarmente i suddetti componenti, è possibile definirli insieme in un Elastic Beanstalk; questa è la determinazione che dovrai fare da sola: vuoi una maggiore flessibilità definendo i singoli componenti da soli, dovresti semplificare le cose e usare EB?
  • , infine, se si utilizza Docker e si può dockerize le applicazioni oi diversi componenti della stessa applicazione, AWS supporti EB con multi-container docker

Qualunque strada si decide, AWS CloudFormation modelli sono un buon modo per legare tutto insieme e definisci il tuo stack. Un vantaggio di questo è ogni volta che devi apportare una modifica allo stack, cambierai il modello CloudFormation, applichi la modifica e consenti a AWS di capire quali sono le dipendenze, quale ordine aggiornarle e come.

9

ci sono diverse possibilità per raggiungere HA con EC2:

  • creare un gruppo con una capacità autoscaling min = 1 e capacità massima = 1. Pertanto, ogni volta che l'istanza fallisce, il gruppo di scalabilità automatica ne creerà uno nuovo. Il gruppo di scalabilità automatica è gratuito, quindi questa non è una cattiva soluzione a seconda del tuo SLA.
  • utilizza la funzione ec2 auto-recovery creando un allarme cloudwatch che sostituisce l'istanza in caso di errore.
  • creare due istanze EC2 e utilizzare Itinerario 53 failover DNS per risolvere a un'istanza sana
  • Ultimo ma non meno importante: la soluzione migliore è sicuramente quello di creare diverse istanze attraverso diverse zone disponibilità e l'utilizzo di un sistema di bilanciamento del carico elastico per distribuire il traffico. In questo modo, anche se un'istanza fallisce, ne hai già altri disponibili. AWS raccomanda questa soluzione poiché hanno uno SLA del 99,95% per la loro istanza in un AZ. Mettendo in diversi AZS si può avere la disponibilità al 100%

EDIT: aggiunta di informazioni perché non v'è alcuna funzionalità come nativo per EC2.

non esiste alcuna funzione HA nativa in EC2 rispetto a RDS, poiché EC2 è puro IaaS quando RDS è più PaaS. Quindi per RDS quando si seleziona HA, dietro la scena, viene generato un database slave in un'altra zona di disponibilità e viene replicato il master. Ogni volta che il master fallisce, si ha un failover DNS automatico nel database slave, che viene eletto master, e viene creato un nuovo database slave.

2

Come utilizzare l'elastico Beanstalk (per la documentazione ufficiale vedere here)?

In sostanza, l'utilizzo di molti servizi AWS nell'utilizzo della configurazione dettagliata here.

Lo scopo principale è rendere più semplice la creazione di diversi set di ambienti per l'esecuzione delle app, monitorando allo stesso tempo l'integrità e il carico dell'applicazione e creando istanze per distribuire il carico.

È tuttavia possibile utilizzare configurare il proprio ambiente come una singola istanza (consultare la documentazione principale nella sezione Environment Types). Ciò significa che puoi usufruire del monitoraggio della salute e AWS si prenderà cura della disponibilità.

Più specificamente per rispondere alle tue domande: 1) La documentazione ufficiale di AWS è abbastanza dettagliata e dovrebbe iniziare.Esistono diverse risorse video che spiegano la configurazione di base

2) È possibile combinare diverse istanze EBS in diverse regioni per mantenere i server vicini al proprio traffico.