2010-08-04 9 views
6

Actualmente tengo un servidor de producción de Django en crecimiento que tiene todos los servicios de front-end y back-end ejecutándose en él. Podría seguir creciendo ese servidor cada vez más grande, pero en su lugar quiero probar y dejar ese servidor principal como mi servidor backend y crear múltiples servidores front-end que ejecutarían apache/nginx y se conectarían remotamente al servidor back-end de producción principal.Mover a 2 servidores físicos Django (frontales y de servidor) desde un solo servidor de producción?

Estoy usando slicehost ahora, así que no creo que pueda beneficiarme si los múltiples servidores se ejecutan en una intranet. ¿Cómo hago esto?

+1

¿Cuál es el origen de la carga de sus servidores? ¿Es CPU? ¿Base de datos? ¿Disco? Múltiples servidores de aplicaciones para el usuario de Apache/nginx tiene menos sentido que una interfaz de usuario de apache/nginx y múltiples servidores back-end, ¿hay otro problema a pie? –

+1

Esta pregunta es imposible de responder sin saber lo que está haciendo y cómo no funciona. –

Respuesta

1

El primer paso para escalar su servidor suele ser separar el servidor de la base de datos. Supongo que esto es todo lo que quería decir con los "servicios de back-end", a menos que nos proporcione más detalles.

Todas estas necesidades son un cambio en el archivo de configuración. Cambie DATABASE_HOST de localhost a la nueva IP de su servidor de base de datos.

Si su sitio tiene mucho contenido estático, la creación de un servidor de medios aparte podría ayudar. Incluso puede mirar en un CDN.

1

El primer paso generalmente es separar el servidor que ejecuta el código de Python real y el servidor de la base de datos. Cualquier trabajo en segundo plano que realice el procesamiento probablemente se ejecute en el servidor de la base de datos. Supongo que cuando dices servidor front-end, en realidad te refieres a un servidor que ejecuta el código Python.

Ahora, como toda solicitud tendrá que hacer una serie de consultas a la base de datos, la latencia entre el servidor web y el servidor de la base de datos es muy importante. No sé si Slicehost tiene alguna función que te permita crear dos máquinas virtuales que están "cerca" en términos de latencia de la red (una búsqueda rápida en Google no encontró nada). Parecen buenos chicos, así que tal vez podría preguntarles si tienen ese servicio o podrían hacer una excepción.

De todos modos, cuando tienes dos máquinas en Slicehost, puedes verificar la latencia entre ellas simplemente haciendo un ping entre ellas. Cuando tengas el resultado, probablemente sabrás si esto es factible o no.

Otros pasos dependen de su aplicación. Si se trata de medios pesados, entonces tal vez usar un servidor de medios separado tendría sentido. De lo contrario, el paso normal es agregar más servidores web.

-

Como nota al margen, yo personalmente creo que tiene más sentido invertir en servidores dedicados reales con equipos de red dedicada para este tipo de configuración. Esto, por supuesto, depende del presupuesto en el que se encuentre.

También sugiero buscar en Amazon EC2, donde se pueden aprovisionar servidores mágicamente cercanos entre sí.

Cuestiones relacionadas