2011-08-24 18 views
5

Estoy relanzando un sitio (~ 5 mm + visitas por día) en EC2, y estoy confundido acerca de cómo implementar nodos en diferentes centros de datos. Mi configuración más básica es dos nodos detrás de un servidor Varnish.¿Cuáles son las mejores prácticas para usar Z2 Availability Zones?

¿Debo tener dos instancias de Varnish en diferentes zonas de disponibilidad, cada una con nodos WWW que hablan con una base de datos RDS compartida? Cada instancia de barniz puede cargarse con el equilibrador de carga de Amazon.

Algo así como:

1 equilibrador de carga de hablar con:

  • barniz en Virginia, que habla con su propia us-este-x nodos
  • barniz en California, que habla con su propia nodos us-west-x

Implementar en centros de datos múltiples es un concepto nuevo para mí, por lo que toda la ayuda se agradece. ¡Gracias!

Respuesta

7

Usamos amazon EC2 ampliamente para equilibrar la carga y tolerancia a fallas. Si bien aún no utilizamos ampliamente LoadBalancers proporcionados por Amazon, tenemos nuestros propios equilibradores de carga (ejecutándose fuera de Amazon). Amazon promete que los LoadBalancers nunca bajarán, son internamente tolerantes a fallas, pero no lo he probado lo suficientemente bien.

En general, hospedamos dos instancias por zona de disponibilidad. Uno que actúa como un servidor de duplicación para el servidor real. Si en caso de que uno de los servidores caiga, enviamos a los clientes a la otra. Pero últimamente, Amazon ha mostrado un patrón de que una zona de disponibilidad individual baja con bastante frecuencia.

Así que la técnica sabia, supongo, es configurar servidores en las zonas de disponibilidad como usted mencionó. Usamos postgres para que podamos replicar contenido en la base de datos en todas las instancias. Con 9.0 hay una replicación binaria que funciona muy bien para la replicación bidireccional. De esta forma, ambos servidores pueden tomar la carga cuando están activos, pero cuando una zona de disponibilidad baja, todos los usuarios son enviados a un servidor. Dado que una base de datos común está disponible, no importa a dónde vayan los usuarios. Solo que experimentarán una ligera lentitud, si van al servidor equivocado.

Con este enfoque puede hacer la actualización en tándem de los sitios web. La actualización uno asegura que funciona bien y luego actualiza la siguiente. Entonces, incluso si el servidor no pudo actualizar, todo el sitio web siempre está activo.

+0

¿cómo se envía a los clientes a los otros servidores cuando una zona de disponibilidad se cae? – Carson

+0

Nuestros equilibradores de carga personalizados cargarán las comprobaciones de los servidores cada minuto. Usamos urls de subdominio para clientes directos. Entonces, si un clúster está inactivo, les enviamos una URL de subdominio diferente. El equilibrador de carga de Amazon funciona como una capa de abstracción y enruta internamente una solicitud http al servidor. Comprueba la disponibilidad cada 10 segundos solicitando una página web desde su servidor. Puedes simplemente poner un blank.html. Si la instancia no funciona, Amazon no enviará ninguna solicitud a este servidor. – arunmur

Cuestiones relacionadas