Todo esto se hace con el servidor web externo, que escucha al mundo (recomiendo nginx o lighttpd).
En cuanto a los límites de velocidad, nginx es capaz de limitar, es decir, 50 req/minuto por cada IP, en todo obtener 503 páginas, que puede personalizar.
En cuanto a la baja temporal esperada, en el mundo de los rieles esto se hace a través de la página especial maintainance.html. Existe algún tipo de automatización que crea o enlaza ese archivo simbólicamente cuando los servidores de la aplicación Rails bajan. Recomiendo confiar no en la presencia de archivos, sino en la disponibilidad real del servidor de aplicaciones.
Pero realmente puede iniciar/detener servicios sin perder ninguna conexión. Es decir. puede ejecutar una instancia separada del servidor de aplicaciones en diferentes puertos UNIX socket/IP y tener balancer (nginx/lighty/haproxy) usar esa nueva instancia también. Luego apaga la instancia anterior y todos los clientes reciben solo una nueva. Sin conexión perdida. Por supuesto, este escenario no siempre es posible, depende del tipo de cambio que introdujo en la nueva versión.
haproxy es una solución solo equilibradora. Puede equilibrar de manera extremadamente eficiente las solicitudes a los servidores de aplicaciones en su granja.
Por bastante grande servicio que termina arriba con algo como:
- api.domain resolver a round-robin N balanceadores
- cada uno de equilibrado proxies solicitudes a servidores web M para servidores de aplicaciones estáticas y dinámicas para P contenido. Ah, bueno, su API REST no tiene archivos estáticos, ¿o sí?
Para un servicio bastante pequeño (menos de 2K rps), todo el equilibrio se realiza dentro de uno-dos servidores web.
¿Apache no está fuera de la tierra de alta carga? frankodwyer definitivamente necesita una red asíncrona para manejar muchas conexiones concurrentes y mpm_event aún no es estable en producción. Por supuesto, apache podría colocarse en cajas separadas ... ¿Hay algún punto para comprarlas solo para quedarse con apache? – temoto
Supongo que depende del volumen probable de solicitudes y el costo de cada solicitud a la aplicación.En mi experiencia, apache puede manejar órdenes de magnitud de más solicitudes que la aplicación de back-end, lo que hace que un proxy coubicado esté bien. –