2009-05-18 21 views
23

Ha estado en juego por un tiempo, pero ahora que Amazon ha lanzado Elastic Load balancing (ELB), ¿qué piensa de implementar esta solución para una aplicación web de alto tráfico?Elastic Load Balancing en EC2

¿Deberíamos reemplazar HAProxy o considerar ELB como un servicio de cortesía frente a HAProxy?

Respuesta

28

He estado ejecutando un ELB en lugar de HAProxy durante aproximadamente un mes en un sitio que recibe unas 100.000 visitas por día, y he estado muy satisfecho con los resultados.

Gotcha aunque (UPDATE, este problema se ha solucionado por Amazon AWS, ver comentarios más abajo):

  1. No se puede equilibrar la carga de la raíz de un dominio que usted tiene que crear un alias de CNAME a su equilibrador de carga. Una vez que la solución es redirigir todo el tráfico de http://mysite.com a http://www.mysite.com.

Aparte de eso, realmente no puedo hablar lo suficiente de las ofertas de AWS ELB. También estoy usando el monitoreo y la autoescala de Cloudwatch. Ah, y no olvides que es más barato que ejecutar una pequeña instancia de EC2 ($ 0.025 por hora en lugar de $ 0.10).

+6

ELB ahora tiene capacidad de terminación SSL: http://aws.typepad.com/aws/2010/10/elastic-load-balancer-support-for-ssl-termination.html – Nathan

+0

Cómo redirigió su traffice de http://mysite.com a http://www.mysite.com – Tihom

+2

Usando una redirección HTTP en el nivel de DNS. – arfon

6

Hay quejas en el foro de Amazon sobre la fiabilidad de ELB. Le sugiero que vaya allí y busque en ELB para formar su propia opinión en ese frente.

Queríamos utilizar ELB para equilibrar la carga de las solicitudes de servicio web, pero tenemos muchas llamadas externas, algunas de las cuales envían un mensaje HTTP de 100 consultas. Lamentablemente, ELB no entiende esa parte del protocolo HTTP, por lo que no podemos ir más allá de la prueba de concepto hasta que se aborde.

2013 Actualización

De acuerdo con un mensaje en el foro de AWS, HTTP 100-Continue ahora es compatible.

https://forums.aws.amazon.com/message.jspa?messageID=144022

+0

siento comentar en esta publicación muy antigua. Pero, ¿tienes alguna idea de si el 100-Continue es compatible hoy en ELB? (No encontré ninguna información reciente sobre esta característica faltante) – ben75

+0

@ ben75: Aparentemente ahora es compatible. Actualizado la respuesta. –

19

dependencia del ELB en DNS CNAME indirección registro es bastante agobiante para los servicios web que necesitan ser muy rápido. En nuestro caso, necesitamos tener un tiempo de respuesta muy bueno. En una prueba de rendimiento rápido, el uso de un ELB aumentó la latencia promedio para las solicitudes HTTP en un factor de casi 2. Esto se debe principalmente a que el TTL en la búsqueda CNAME es cero. Por lo tanto, todas las búsquedas implican golpear los servidores de nombres para dos dominios diferentes, por lo que la resolución del nombre es mucho más lenta. (Me preocupa que derrotar el almacenamiento en caché en DNS sea simplemente un abuso del sistema). La única esperanza para ELB en nuestro caso sería alejarse de los registros CNAME haciendo que Amazon admita Elastic IP como la dirección de una instancia de balanceador de carga.

0

Un problema principal para muchos usuarios con ELB es que no es compatible con la adherencia, que es un asesino para muchas aplicaciones web.

De acuerdo con Amazon AWS desarrolladores, sin embargo, debe venir en la próxima versión.

+0

Hola Jeff ¿Qué quiere decir con stickyness? ? – Dom

+0

Sesiones fijas (para que una solicitud de un cliente siempre se dirija al mismo servidor, más comúnmente implementado con cookies) –

+0

si no puede almacenar sus datos de sesión en un almacenamiento común, probablemente debería utilizar un LB. en realidad no estará equilibrando ninguna carga :-P qué tal si hace el viejo juego de subdominio www1, www2, www3, etc. si necesita esa funcionalidad. –

10

Otro problema es obtener la dirección IP del cliente. Para HTTP normal, esto funciona bien, ya que ELB establece el encabezado X-FORWARDED-FOR. Pero para HTTPS esto no es posible porque se está reenviando a la capa TCP. Con suerte, algún día ELB tendrá la terminación de SSL.

+8

¡Y ahora sí! – crb

Cuestiones relacionadas