AWS: configuração de várias regiões usando uma única instância do RDS


11

Estou tentando escalar nosso aplicativo da web (PHP, MySQL, memcache) em um esquema de várias regiões. Atualmente, estamos usando uma instalação com duas instâncias EC2 atrás de uma instância ELB e RDS, todas na região US-EAST (Virgínia).

Gostaríamos de estar presentes também na região da UE (Irlanda). Isso significa pelo menos uma nova instância do EC2 lá (idêntica às outras, servindo o mesmo aplicativo).

Copiei a AMI desejada, instalei a nova instância, instale a mesma configuração ELB (necessária para a terminação SSL) e configurei o roteamento baseado em latência no Route53. E funciona como sugerido.

Mas, os clientes da UE têm problemas de velocidade. Isso ocorre porque as instâncias do EC2 da UE se conectam à instância do RDS dos EUA. Até onde eu sei, a Amazon ainda não ativou a replicação de várias regiões do RDS.

Você tem alguma sugestão sobre como acelerar corretamente toda a instalação enquanto usa a única instância do RDS?

Além disso, alguma idéia geral sobre como escalar as coisas? Idealmente, gostaríamos de continuar usando a tecnologia RDS por vários motivos. No entanto, estou aberto a sugestões (acho que a próxima idéia seria hospedar nossos próprios servidores MySQL).

Respostas:


5

Você deve pensar cuidadosamente por que precisa ter os mesmos dados nos EUA e na UE. Afinal, esses são usuários diferentes.

A execução em um ambiente de várias regiões é muito mais complexa e geralmente retorna o desempenho devido à latência inerente entre os EUA e a UE.

Mesmo se você sair do RDS e tentar replicar seus dados entre regiões, de forma assíncrona ou sincronizada, você terá problemas de latência que prejudicarão seus usuários.

A maneira mais fácil é configurar um servidor RDS dedicado na UE e compartilhar nada entre essas instâncias.


Olá pessoal, o problema aqui é que os clientes da UE e dos EUA precisam ter acesso aos mesmos dados. Existe alguma solução alternativa / ideia?
Ion

Com que frequência esses dados são atualizados (se não frequentemente, você pode replicá-los facilmente entre regiões)?
Guy

Os dados são atualizados frequentemente em geral. E eles começarão a ser atualizados com mais frequência à medida que o aplicativo crescer nos usuários. Acho que temos que procurar outras soluções.
Ion

4

O RDS é ótimo para implantações de região única devido à baixa latência, mas torna-se uma história diferente quando você começa a expandir para as diferentes regiões. Se você deseja manter a instância do RDS, pode configurar seu próprio servidor MySQL na região da UE e fazer replicação. Dessa forma, a velocidade será muito mais aceitável.


1
Existe alguma maneira (semi) automática de replicar uma instância do RDS em um intervalo? Alguma ideia? Suponho que essa réplica também seria somente leitura, certo?
Ion

A AWS suporta réplicas de leitura por padrão, isso é correto: aws.amazon.com/rds/faqs/#86 - Tenho certeza de que é possível fazer replicação de leitura / gravação, mas isso está fora do escopo do SF (consulte nosso Site DBA).
Nathan C

Sim, mas as réplicas de leitura são criadas na mesma região. Precisamos de uma réplica de leitura em uma região diferente e, da última vez que verifiquei, eles não suportam isso.
Ion

2

Recentemente, a AWS avançou na direção que eu havia perguntado anteriormente em minha pergunta, anunciando réplicas de leitura RDS entre regiões . No entanto, este é apenas um pequeno passo em direção a uma verdadeira configuração de várias regiões.


1

Eu acredito que é isso que você quer. Replicação RDS para EC2 executando o mysql em uma região diferente.

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


Bem-vindo à falha do servidor! Embora isso possa teoricamente responder à pergunta, seria preferível incluir aqui as partes essenciais da resposta e fornecer o link para referência.
Slm

Obrigado, parece interessante! Este é um link mais relevante: docs.aws.amazon.com/AmazonRDS/latest/UserGuide/…
Ion

0

Uma solução possível para melhorar a latência seria usar o Amazon ElastiCache (que é basicamente o Memcached nos bastidores).

Você precisaria criar um nó ElastiCache em cada região (US-EST e EU) e fazer com que sua lógica de aplicativo (EC2) usasse o nó de cache sempre que possível. Se você seguir esse caminho, terá que re-arquitetar seu aplicativo 1) saber o que armazenar em cache e quando e 2) obter o máximo possível do nó local do ElastiCache.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.