2010-07-29 4 views
3

C'est quelque chose que je n'ai jamais vu faire, et je ne suis pas dans ma recherche, mais mon patron est intéressé par l'idée. Nous examinons quelques options d'équilibrage de charge et nous nous demandons s'il est possible d'installer apache et php sur plusieurs serveurs, gérés par un équilibreur de charge, mais avec tout le code php sur un serveur, les différents serveurs Apache pointant vers le serveur. une base de code central?Code PHP sur serveur séparé d'Apache?

Répondre

4

Par exemple, les montages NFS sont certainement possibles, mais je ne le recommanderais pas. Une grande partie de l'avantage de l'équilibrage de charge est perdue, et vous réintroduisez un seul point de défaillance. Lors de la synchronisation du code, rsync cronjob peut gérer très bien lui-même, ou un rsync manuel sur le déploiement peut être fait.

Quelle est la raison vous voudriez cette base de code central? Je suis environ 99% sûr qu'il y a une meilleure solution, puis un seul serveur de distribution de code.

+0

ou même un contrôle du système de contrôle de version. Et NFS n'est certainement pas la seule alternative à considérer pour un système de fichiers en réseau. –

+0

Vous avez raison, un partage NFS n'était qu'un exemple. – Wrikken

0

Je crois que c'est possible. Pour ajouter à la réponse de Wrikken, je peux imaginer que NFS pourrait être un bon choix. Cependant, il y a quelques inconvénients et mises en garde. Pour un, quand Apache tente d'accéder aux fichiers sur un partage NFS qui a disparu (connexion perdue, l'hôte a échoué, etc) très mauvais choses se produisent. Apache se bloque et continue d'essayer de récupérer le fichier. Les processus qui tentent d'accéder au partage, pour une raison quelconque, ne meurent pas et il est nécessaire de redémarrer le serveur.

Si vous finissez par le faire, je recommanderais un cache d'opcode, tel que APC. APC met en cache le php pré-traité localement et élimine les allers-retours à votre stockage. Juste être prêt à effacer le cache d'opcode à chaque fois que vous mettez à jour votre application/

+0

Dans mon expérience, APC est un bon cache à avoir, mais vérifie le fichier pour les modtimes, donc n'a pas besoin d'effacer lors de la mise à jour des fichiers, et échoue également si les fichiers ne sont pas là. Ou ai-je manqué certains paramètres APC? – Wrikken

+0

Bien sûr, apc.stat, qui est défini sur 1 par défaut et non inclus dans le fichier apc.ini par défaut. Si la valeur est 0, APC ne vérifie pas la date de mise à jour des fichiers php et conserve la version pré-traitée jusqu'à ce que le cache des opcode soit effacé. L'augmentation des performances avec un paramètre de 0 est assez énorme, btw. –

0

PHP doit fonctionner sous quelque chose pour agir comme un processeur Web, Apache est le plus populaire. J'ai effectué des montages NFS sur des serveurs sans problème. Les chances sont si NFS est en panne, le réseau est en panne. Mais il ne faut pas longtemps pour faire un rsync sur les serveurs pour répliquer les fichiers, et c'est vraiment une meilleure idée. Je ne suis pas sûr de ce que votre contenu est, mais vous pouvez séparer les fichiers statiques comme javascript, CSS et les images afin qu'ils soient sur leur propre serveur. lighttpd est un bon serveur web léger pour des choses comme ça. Ensuite, vous vous retrouvez avec un serveur php "dédié". Vous n'avez même pas besoin d'un équilibreur de charge pour cette configuration. Gardez à l'esprit que PHP stocke les sessions sur le système de fichiers local. Donc, si vous utilisez des sessions, vous devez vous assurer que les utilisateurs reviennent toujours sur le même serveur. Sinon, vous devez faire quelque chose comme des sessions de stockage dans memcache.

Questions connexes