49 votos

Pedidos: 1. nginx 2. barniz 3. haproxy 4. servidor web?

He visto personas que recomiendan la combinación de todos estos en un flujo, pero parece que tienen un montón de funciones que se superponen así que me gustaría profundizar en por qué se desea pasar a través de 3 diferentes programas antes de golpear a su servidor web real.

nginx:

  • ssl: sí
  • comprimir: sí
  • caché: sí
  • backend piscina: sí

barniz:

  • ssl: no (stunnel?)
  • comprimir: ?
  • caché: sí (entidad principal)
  • backend piscina: sí

haproxy:

  • ssl: no (stunnel)
  • comprimir: ?
  • cache: no
  • backend piscina: sí (entidad principal)

Es la intención de que el encadenamiento de todas estas en frente de sus principales servidores web para obtener algunas de sus principales ventajas de la característica?

Parece bastante frágil para tener tantos demonios flujo juntos haciendo cosas similares.

¿Cuál es su implementación y el pedido de preferencia y por qué?

60voto

Arenstar Puntos 2680

Simplemente poner..

HaProxy es la mejor opensource loadbalancer en el mercado.
El barniz es el mejor opensource archivo estático cacher en el mercado.
Nginx es la mejor opensource servidor web en el mercado.

(por supuesto, esta es mi y muchos otros pueblos de la opinión)

Pero en general.. no todas las consultas que ir a través de toda la pila..

Todo lo que pasa por haproxy y nginx/varios nginx.
La única diferencia es que el "perno" en barniz para la estática de las solicitudes..

  • cualquier petición es loadbalanced para redundancia y rendimiento ( bueno, eso es escalable redundancia )
  • cualquier solicitud para los archivos estáticos es primero golpeando el barniz de caché ( bueno, eso es rápido )
  • cualquier solicitud dinámica que va directo a la backend ( grandes, el barniz no se utiliza)

En general, este modelo se adapta a una solución escalable y creciente de la arquitectura ( tomar haproxy, si usted no tiene varios servidores )

Espero que esta ayuda :D

Nota: en realidad yo también introducir la Libra para SSL consultas así :D
Usted puede tener un servidor dedicado para el descifrado de SSL solicitudes y aprobación de las solicitudes para el back-end de la pila :D (que hace Que el conjunto de la pila de ejecución más rápido y sencillo )

20voto

Willy Tarreau Puntos 2913

Es cierto que las 3 herramientas comparten características comunes. La mayoría de las configuraciones están bien con cualquier combinación de 2 de los 3. Depende de lo que su principal propósito. Es común aceptar que sacrificar algunas de almacenamiento en caché si usted sabe que su servidor de aplicaciones es rápido en la estática (por ejemplo: nginx). Es común que sacrificar algunas características de equilibrio de carga si vas a instalar decenas o cientos de servidores y no se preocupan acerca de cómo obtener el máximo provecho de los mismos, ni sobre la solución de problemas. Es común que sacrificar algunas de las características del servidor web si estás intentando ejecutar una aplicación distribuida con muchos de los componentes en todas partes. Aún así, algunas personas construyen interesante granjas con todos ellos.

Usted debe tener en cuenta que estamos hablando de los 3 productos sólidos. Por lo general, no necesitan para equilibrar la carga. Si usted necesita frente SSL, nginx primero como un proxy inverso está bien. Si usted no necesita que, luego de barniz en la parte frontal está muy bien. Entonces usted puede poner haproxy para equilibrar la carga de sus aplicaciones. A veces, te va a gustar también cambiar a diferentes granjas de servidores en el haproxy sí, dependiendo de los tipos de archivos o rutas de acceso.

A veces tendrás que proteger contra la pesada de los ataques DDoS, y haproxy en frente será más adecuado que los demás.

En general, usted no debe preocuparse acerca de lo que comprometer a hacer entre sus opciones. Usted debe elegir cómo ensamblarlos para obtener el mejor flexibilidad para sus necesidades ahora y para entrar. Incluso si la pila de varios de ellos varias veces a veces puede ser a la derecha, dependiendo de sus necesidades.

Con la esperanza de que esto ayude!

14voto

beginer Puntos 162

Todas las otras respuestas son pre-2010, por lo tanto la adición de una actualización de la comparación.

Nginx

  • Un completo servidor web, otras características también puede ser utilizado. Por ejemplo: HTTP Compresión
  • Soporte SSL
  • Muy ligera de peso, como Nginx fue diseñado para ser la luz desde el principio.
  • Cerca de Barniz de almacenamiento en caché de rendimiento
  • Cerca de HAProxy de equilibrio de carga de rendimiento

Barniz

  • mejor para los complejos de almacenamiento en caché de los escenarios y con la incorporación de la aplicaciones.
  • mejor de archivo estático cacher
  • No hay Soporte SSL
  • La memoria y la CPU eater

Haproxy

  • mejor loadbalancer, para el corte de borde características de equilibrio de carga, comparable a la hardware loadbalancers
  • SSL es compatible desde la 1.5.0
  • Más simple, siendo sólo un proxy tcp sin una implementación http, que hace más rápido y con menos error en decúbito prono.

Así que el mejor método parece ser la implementación de todos ellos en un orden adecuado.

Sin embargo, para propósito general, Nginx es mejor como usted se pone encima de la media para todos: el almacenamiento en Caché, proxy Inverso, equilibrio de Carga, con muy poca sobrecarga en la utilización de los recursos. Y entonces usted tiene SSL y web completa de las características del servidor.

6voto

Eric Noob Puntos 531

El barniz tiene soporte para el equilibrio de carga: http://www.varnish-cache.org/trac/wiki/LoadBalancing

Nginx tiene soporte para el equilibrio de carga: http://wiki.nginx.org/NginxHttpUpstreamModule

Yo simplemente configurar esto con barniz + stunnel. Si necesitaba nginx por alguna otra razón, sólo quiero usar nginx + barniz. Usted puede tener nginx aceptar conexiones SSL proxy y a barniz, luego de haber barniz hablar con nginx a través de http.

Algunas personas pueden tirar nginx (o Apache) en la mezcla debido a que estos son un poco más de propósito general herramientas de Barniz. Por ejemplo, si se quiere transformar el contenido (por ejemplo, el uso de XDV, apache filtros, etc) en el proxy de la capa puede necesitar una de estas, debido a que el Barniz no puede hacerlo por sí mismo. Algunas personas pueden simplemente ser más familiarizados con la configuración de estas herramientas, de modo que es más fácil utilizar el Barniz como un simple caché y hacer el balanceo de carga en otra capa, porque ellos ya están familiarizados con Apache/nginx/haproxy como un equilibrador de carga.

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: