¿Cómo se automatiza la conmutación por error en EC2?

13

De las personas que administran sus propios clústeres (es decir, no utilizan / pagan Amazon Autoscale, Rightscale, Scalr, etc.), ¿cómo administran sus instancias en EC2 y manejan (por ejemplo) la conmutación por error? Me pregunto si la mayoría de la gente acaba de escribir sus propias cargas de scripts contra la API EC2, como sospecho.

Ese es sin duda nuestro enfoque: preparar nuestro propio demonio de monitoreo / reinicio basado en Python Boto que se ejecuta fuera del sitio, escuchando UDP UDP de nuestras instancias. En caso de falla, tomamos instantáneas de volúmenes, registramos imágenes, iniciamos nuevas instancias, eliminamos volúmenes antiguos, etc.

De vez en cuando, al piratear nuestros scripts, creo que debe haber algunas herramientas de código abierto que se encarguen de estos problemas y que no tengan las restricciones de (digamos) Scalr, pero siempre vuelvo de Google con las manos vacías. (Cosas como Scalr son bastante limitadas en el conjunto / versiones / configuraciones compatibles de software, y tienen formas engorrosas especializadas e IMO de manipular estas configuraciones).

Además, el ecosistema Linux-HA / Pacemaker (Heartbeat, ldirectord, etc.) parece que no es realmente adecuado para EC2 . (Pero luego encontré esto , aunque no estoy seguro de que sea realmente una solución de alta calidad).

Yang
fuente

Respuestas:

5

Bueno, no quiero decir simplemente lo obvio, sino que la idea general es impulsar esta complejidad a los servicios administrados por Amazon.

Por lo tanto, en la interfaz, usaría Amazon Elastic Load Balancing (ELB) para proporcionar un equilibrio de carga altamente disponible. En la parte posterior, utiliza Amazon Relational Database Service (MySQL alojado), SimpleDB y S3 para el almacenamiento. Todos estos son administrados por Amazon y contienen algún tipo de manejo de alta disponibilidad / conmutación por error.

Esto generalmente deja sus servidores de aplicaciones web y cualquier tipo de servidor menos común que pueda estar usando (servidores de representación, almacenes de datos NoSQL autoinstalados, etc.)

Los servidores de aplicaciones web generalmente se manejan lo suficientemente bien con las comprobaciones de estado integradas en ELB. Puede aceptar una pequeña degradación del rendimiento cuando un servidor de aplicaciones web está inactivo, o aprovisionar consistentemente un servidor +1 más de lo que necesita. O si su configuración es simple, cuando un servidor de aplicaciones web falla, ELB junto con Cloudwatch puede generar automáticamente un nuevo servidor de aplicaciones web para usted.

Sus propios servidores personalizados son otra cuestión. Para estos es cierto, usted está solo y tendrá que conformarse con los métodos integrados de la aplicación, o unir con cinta adhesiva algo con scripts personalizados / herramientas HA de código abierto.

Comprar la solución de Rightscale podría ser demasiado costoso. Pero las herramientas menos costosas de Amazon, como ELB, las alertas básicas de CloudWatch (ahora gratuitas para una resolución de 5 minutos) o AutoScale valen la pena si necesita alta disponibilidad.

Jesper M
fuente
3
Estamos familiarizados con el conjunto de características de AWS, así como sus limitaciones. Para tomar su primer ejemplo, se accede a ELB a través de RR de CNAME, que no pueden coexistir con RR de SOA y, por lo tanto, no pueden servir TLD, además no se puede acceder a través de IP estáticas; las frustraciones se hicieron eco ampliamente en los foros. Para tomar su segundo ejemplo, sí, RDS es MySQL, que es la limitación gigante. Sí, estamos interesados ​​en automatizar la conmutación por error de nuestros propios tipos de máquinas. Sí, la implementación de la nube privada es relevante para nosotros. Sí, solo tengo curiosidad. Etc.
Yang
2
@Yang: Deberías haber formulado tu pregunta con más cuidado y ahorrado la molestia de escribir mi respuesta. No existe una solución única para HA; depende del servicio en cuestión, cómo se mantiene el estado, las propiedades de conmutación por error del protocolo, etc. Tiene razón sobre las limitaciones / dificultades en el uso de herramientas HA típicas de nivel de IP en EC2. Pero no hay una respuesta única que se aplique universalmente a "HA en AWS".
Jesper M
0

RightScale tiene excelentes artículos sobre cómo automatizar la conmutación por error en EC2. Si bien la mayoría de ellos le muestran cómo hacerlo utilizando RightScale, los principios son generales y probablemente útiles para cualquiera que esté pensando en cómo configurar una arquitectura de conmutación por error en EC2.

Suman
fuente
0

Los problemas que usted describe (HA, monitoreo de servidores personalizados, servicios de 'duct-taping') generalmente son manejados por un proveedor de PaaS. Rightscale y Scalr ya se mencionaron en una respuesta anterior y hay buenas opciones adicionales (vea aquí algunas opciones de PaaS:

/programming/9542784/looking-for-paas-providers-recommendations )

Debe considerar cuál de los proveedores se adapta mejor a lo que necesita.

Aviso: trabajo para cloudify, un proveedor de PaaS de código abierto.

Barak
fuente
0

Recientemente escribí una publicación en nuestro blog de ingeniería sobre cómo usar ELB junto con Auto Scaling para lograr la conmutación por error automática para cualquier tipo de aplicación. Cubre cómo se pueden usar las comprobaciones de estado de ELB para hacer ping al estado de su aplicación y activar acciones de escalado automático.

El desarrollador
fuente
0

Instala heartbeat en ambos servidores Adjunta una IP elástica al servidor 'activo' Configura un script para realizar la conmutación por error iniciando una solicitud de API para obtener la IP elástica Tan pronto como el servidor 'stand-by' obtuvo la IP elástica ( toma alrededor de 30-60 segundos) puede ser el maestro / activo.

No tengo los detalles para proporcionar aquí.

Amir Mehler
fuente
-1

Amazon ya ofrece Equilibrio de carga elástico ... ¿Por qué reinventar la rueda?

Chris S
fuente
3
¿Debido a las diversas limitaciones de ELB? ¿Porque requiere CNAME y no puede servir tanto a foo.com como a www.foo.com? ¿Porque quiero implementar una lógica de programación personalizada? ¿Porque tengo curiosidad de cómo implementaría ELB usted mismo en un grupo de máquinas virtuales poco confiables? Elige tu opción.
Yang
@Yang, lo haces de la misma manera que lo harías si fueran servidores en tu centro de datos. No hay una diferencia fundamental, no hay salsa mágica que lo convierta en un entorno de nube.
Chris S