AWS: configurazione multiregione che utilizza una singola istanza RDS


11

Sto cercando di ridimensionare la nostra applicazione Web (PHP, MySQL, memcache) in uno schema multi-regione. Attualmente stiamo usando un'installazione con due istanze EC2 dietro un ELB e un'istanza RDS, tutte nella regione US-EAST (Virginia).

Vorremmo essere presenti anche nella regione dell'UE (Irlanda). Ciò significa almeno una nuova istanza EC2 lì (identica alle altre, che serve la stessa applicazione).

Ho copiato l'AMI desiderato, impostato la nuova istanza, impostato una stessa configurazione ELB (richiesta per la terminazione SSL) e configurato il routing basato sulla latenza in Route53. E funziona come suggerito.

Ma i clienti dell'UE hanno problemi di velocità. Ciò è dovuto al fatto che le istanze EC2 dell'UE si collegano all'istanza RDS con sede negli Stati Uniti. Per quanto ne so, Amazon non ha ancora abilitato la replica multi-regione RDS.

Hai qualche suggerimento su come velocizzare correttamente l'intera configurazione mentre usi la singola istanza RDS?

Inoltre, hai idee in generale su come ridimensionare le cose? Idealmente vorremmo continuare a utilizzare la tecnologia RDS per vari motivi. Tuttavia, sono aperto ai suggerimenti (immagino che la prossima idea sarebbe quella di ospitare i nostri server MySQL).

Risposte:


5

Dovresti riflettere attentamente sul motivo per cui devi disporre degli stessi dati sia negli Stati Uniti che nell'UE. Dopo tutto questi sono utenti diversi.

Correre in un ambiente multi-regione è molto più complesso e di solito restituisce prestazioni a causa della latenza intrinseca tra Stati Uniti e UE.

Anche se esci da RDS e provi a replicare i tuoi dati tra regioni, sia asincrono che sincronizzati, otterrai problemi di latenza che daranno cattive prestazioni ai tuoi utenti.

Il modo più semplice è configurare un server RDS dedicato nell'UE e non condividere nulla tra queste istanze.


Ciao ragazzo, il problema qui è che i clienti UE e USA devono avere accesso agli stessi dati. C'è qualche soluzione / idea?
Ion

Con quale frequenza vengono aggiornati questi dati (se non spesso è possibile replicarli facilmente tra le regioni)?
Guy

I dati vengono aggiornati spesso in generale. E inizieranno ad essere aggiornati più spesso man mano che l'applicazione cresce negli utenti. Penso che dobbiamo cercare alcune altre soluzioni.
Ion

4

RDS è ottimo per le distribuzioni a regione singola a causa della bassa latenza, ma diventa una storia diversa quando inizi a espandersi nelle diverse regioni. Se si desidera mantenere l'istanza RDS, è possibile configurare il proprio server MySQL nella regione dell'UE ed eseguire la replica. In questo modo, la velocità sarà molto più accettabile.


1
Esiste un modo (semi) automatico per replicare un'istanza RDS in un intervallo? Qualche idea? Suppongo che questa replica sia di sola lettura, giusto?
Ion,

AWS supporta le repliche di lettura per impostazione predefinita, è corretto: aws.amazon.com/rds/faqs/#86 - Sono sicuro che è possibile eseguire la replica di lettura / scrittura, ma questo è al di fuori dell'ambito di SF (controllerei con il nostro Sito DBA).
Nathan C,

Sì, ma le repliche di lettura vengono create nella stessa area. Abbiamo bisogno di una replica di lettura in una regione diversa e l'ultima volta che ho verificato che non lo supportano.
Ion,

2

Recentemente, AWS ha fatto un passo nella direzione che avevo precedentemente chiesto nella mia domanda, annunciando repliche di lettura RDS tra regioni . Tuttavia, questo è solo un piccolo passo verso una vera configurazione multi-regione.


1

Credo che sia questo ciò che vuoi. Replica RDS su EC2 che esegue mysql in un'altra regione.

https://aws.amazon.com/about-aws/whats-new/2013/09/05/amazon-rds-new-data-migration-capabilities-mysql/


Benvenuti in Server Fault! Sebbene ciò possa teoricamente rispondere alla domanda, sarebbe preferibile includere qui le parti essenziali della risposta e fornire il collegamento come riferimento.
slm,

Grazie, sembra interessante! Questo è un link più pertinente: docs.aws.amazon.com/AmazonRDS/latest/UserGuide/…
Ion

0

Una possibile soluzione per migliorare la latenza potrebbe essere l'utilizzo di Amazon ElastiCache (che è sostanzialmente Memcached sotto le copertine).

Dovresti creare un nodo ElastiCache in ciascuna regione (US-EST ed EU) e fare in modo che la tua logica applicativa (EC2) utilizzi il nodo cache ogni volta che è possibile. Se segui questa strada dovrai riprogettare la tua applicazione 1) sapere cosa memorizzare nella cache e quando e 2) per catturare il più possibile dal nodo ElastiCache locale.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.