2010-08-04 5 views
6

Je dispose actuellement d'un serveur de production Django en pleine croissance, sur lequel s'exécutent tous les services frontaux et backend. Je pourrais continuer à faire croître ce serveur de plus en plus, mais je voudrais plutôt laisser ce serveur principal comme serveur principal et créer plusieurs serveurs frontaux qui exécuteraient apache/nginx et se connecteraient à distance au serveur principal de production. J'utilise maintenant slicehost, donc je ne pense pas que les serveurs multiples puissent fonctionner sur un intranet. Comment puis-je faire cela?Déplacer vers 2 serveurs physiques Django (front et backend) à partir d'un seul serveur de production?

+1

Quelle est la source de charge de vos serveurs? Est-ce CPU? Base de données? Disque? Plusieurs serveurs frontaux apache/nginx ont moins de sens qu'un seul front-end apache/nginx et plusieurs serveurs backend, alors y a-t-il un autre problème à pied? –

+1

Cette question est impossible de répondre sans savoir ce que vous faites déjà et comment cela ne fonctionne pas. –

Répondre

1

La première étape de la mise à l'échelle de votre serveur consiste généralement à séparer le serveur de base de données. Je suppose que c'est tout ce que vous vouliez dire par "backend services", à moins que vous ne nous donniez plus de détails.

Tout cela nécessite une modification de votre fichier de paramètres. Changez DATABASE_HOST de localhost à la nouvelle adresse IP de votre serveur de base de données.

Si votre site contient beaucoup de contenu statique, la création d'un serveur de médias distinct pourrait vous aider. Vous pouvez même regarder dans un CDN.

1

La première étape consiste généralement à séparer le serveur exécutant le code Python réel et le serveur de base de données. Tous les travaux d'arrière-plan qui effectuent le traitement s'exécuteront probablement sur le serveur de base de données. Je suppose que lorsque vous dites serveur frontal, vous voulez dire un serveur exécutant du code Python. Maintenant, comme chaque requête devra faire un certain nombre de requêtes de base de données, la latence entre le serveur web et le serveur de base de données est très importante. Je ne sais pas si Slicehost a quelques fonctionnalités pour vous permettre de créer deux machines virtuelles qui sont "proches" en termes de latence réseau (une recherche google rapide n'a rien trouvé). Ils ont l'air d'être gentils, alors peut-être pourriez-vous leur demander s'ils ont un tel service ou pourraient faire une exception. Quoi qu'il en soit, quand vous avez deux machines sur Slicehost, vous pouvez vérifier la latence entre elles en cliquant simplement entre elles. Lorsque vous avez le résultat, vous saurez probablement si cela est faisable ou non.

Les étapes suivantes dépendent de votre application. Si les médias sont lourds, alors l'utilisation d'un serveur multimédia distinct pourrait avoir du sens. Sinon, l'étape normale consiste à ajouter plus de serveurs Web.

- Comme une note de côté

, je pense personnellement qu'il est plus logique d'investir dans de véritables serveurs dédiés avec des équipements de réseau dédiés à ce type de configuration. Cela dépend bien sûr du budget que vous utilisez.

Je vous suggérerais également de regarder dans Amazon EC2 où vous pouvez provisionner des serveurs qui sont magiquement proches les uns des autres.

Questions connexes