3 votos

Nginx y unicornio en máquinas separadas

Tengo un bonito estándar Rieles de la aplicación que se ejecuta con el Unicornio y Nginx todo en una caja. Me gustaría dividir la aplicación en sí y tienen Nginx en una máquina y el Unicornio (con la aplicación Rails) en otra máquina. La idea aquí es que me gustaría añadir otro servidor de aplicaciones con el Unicornio más adelante en el futuro, sobre todo para la parte de la luz de equilibrio de carga.

Me pueden abordar esto desde el ángulo equivocado. Es esto normal o posible? Si es así, ¿alguien me señale ejemplo configs o documentación?

Si no es el camino a seguir, ¿cuál es la ruta adecuada para lograr el objetivo final? He mirado en HAProxy, pero después de leer a través de algunos Nginx/Unicornio documentación, me da la idea de que esto puede ser logrado sin ningún software adicional.

7voto

cjc Puntos 17092

Esto es normal. Usted no necesita HAProxy, aunque HAProxy puede proporcionar usted con más "justo" equilibrio de carga entre los servidores de aplicaciones de la nginx equilibrio de carga.

Así, en su aplicación, servidores, conjunto de Unicornio para escuchar una interfaz de red. Este debe ser preferiblemente una dirección IP privada. Para este ejemplo, vamos a decir que sus servidores de aplicaciones son 192.168.1.100, 192.168.1.101 y 192.168.1.102. Configurar unicornio para escuchar en el puerto 8000 en todos los servidores de aplicaciones.

En el nginx lado, tendrá un "aguas arriba" bloque como:

upstream unicorn {
  server 192.168.1.100:8000;
  server 192.168.1.101:8000;
  server 192.168.1.102:8000;
}

Entonces usted tendrá su servidor virtual definición con un bloque como:

location / {

    proxy_set_header  X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header  X_FORWARDED_PROTO $scheme;
    proxy_set_header  Host $host;

    proxy_connect_timeout 3;
    proxy_read_timeout 60;
    proxy_send_timeout 60;

    proxy_redirect off;
    proxy_max_temp_file_size 0;

    if (!-f $request_filename) {
      proxy_pass http://unicorn;
    }
}

Usted puede necesitar otras declaraciones de apoderados para conseguir que las cosas funcionen como usted quiere, pero esto se debe esencialmente a hacerlo. El proxy_pass declaración se utilice el bloque definido en la parte de arriba del bloque, y distribuir las tareas a la lista de servidores de aplicaciones. Compruebe nginx documentación sobre otras opciones que podrían ser apropiadas.

EnMiMaquinaFunciona.com

EnMiMaquinaFunciona es una comunidad de administradores de sistemas en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros sysadmin, hacer tus propias preguntas o resolver las de los demás.

Powered by: