2012-02-15 17 views
11

Estoy muy seguro de que este problema se ha resuelto, pero no puedo encontrar ninguna información al respecto ...¿Agregar nodos mediante programación a un equilibrador de carga como Haproxy?

¿Cómo los administradores de sistemas agregan un nuevo nodo a un equilibrador de carga existente y en ejecución? Digamos que tengo un equilibrador de carga ejecutándose y equilibrando, digamos, mi servidor de API entre dos instancias de EC2, y de repente hay un pico de tráfico y necesito un tercer nodo en el equilibrador de carga, pero estoy dormido ... Sería maravilloso si tenía algo de monitoreo probablemente el uso de RAM y algunos indicadores de rendimiento clave que me dicen cuándo debería tener otro nodo, y aún mejor si podría agregar un nuevo nodo al equilibrador de carga solo ...

Estoy seguro de que esto es posible e incluso trivial para hacer con node-http-proxy y distribute, pero me gustaría saber si esto es posible con HAproxy y/o Nginx ... Sé que el equilibrio de carga elástico de Amazon es probablemente mi mejor opción, pero quiero hacerlo por mi cuenta (quiero generar instancias de rackspace, EC2, Joyent y probablemente otros como sea conveniente).

Una vez más, generar un nodo es fácil, me gustaría saber cómo agregarlo a haproxy.cfg o algo similar con Nginx sin tener que volver a cargar todo el proxy, y hacerlo programáticamente. Bash scripting es mi mejor opción para esto, pero aún tiene que volver a cargar el proxy completo, ya que pierde conexiones ...

Respuesta

8

Tiene algunas preguntas allí. Para "agregar nodos a haproxy sin reiniciarlo":

Lo que hago para un problema similar es rellenar previamente el archivo de configuración con nombres de servidor ... p. web01, web02 ... web20 incluso si solo tengo 5 servidores web en ese momento. Luego, en mi archivo de hosts, los asigno a las ips reales de los servidores web.

Para agregar un nuevo servidor, solo debe crear una entrada en el archivo de hosts y comenzará a pasar revisiones de estado y ser agregado.

Para la orquestación automatizada, realmente depende de su entorno y es probable que tenga que escribir algo personalizado que se ajuste a sus necesidades. Hay soluciones pagas (se le ocurre a Scalr) para manejar la orquestación también.

+0

¡Es una muy buena idea! ¡Gracias! –

7

Lo que sí: Tengo una línea en mi sección de back-end en haproxy.cfg que dice:

# new webservers here 

Y con una secuencia de comandos sed actualizo haproxy.cfg con algo como:

sed -i -e "/new webservers here/a\ server $ip_address $ip_address:12080 check maxconn 28 weight 100" 

Y luego recarga haproxy. Funciona de manera transparente.

+1

¿Es una forma recomendada de hacerlo? No me parece práctico. Aunque, funciona. – hugofcampos

Cuestiones relacionadas