Question

Comme nous l'avons fait par le passé, je souhaite collecter des informations utiles pour toutes les personnes souhaitant passer à l'équilibrage de charge, car il existe des problèmes dont votre code doit avoir connaissance.

Nous sommes passés d’un serveur Apache à Squid en tant que proxy inverse / équilibrage de charge avec trois serveurs Apache derrière.

Nous utilisons PHP / MySQL, les problèmes peuvent donc différer.

Ce que nous devions résoudre:

Sessions

Nous sommes passés de " défaut " sessions php (fichiers) à memcached-sessions distribuées. Une solution simple, doit être faite. De cette façon, vous n’avez pas non plus besoin de " sessions collantes " sur votre loadbalancer.

Mise en cache

À notre apc-cache non distribué par serveur Web, nous avons ajouté une couche memcached-layer pour la mise en cache distribuée des objets et avons remplacé tous les systèmes de stockage de fichiers anciens / obsolètes.

Chargements

Les téléchargements vont dans un dossier partagé (nfs).

Choses que nous avons optimisées pour la vitesse:

Fichiers statiques

Notre système NFS principal exécute un fichier lighttpd, servant des images (également téléchargées par l'utilisateur). Squid en est conscient et n'interroge jamais nos noeuds Apache pour des images, ce qui a permis d'améliorer considérablement les performances. Squid est également configuré pour mettre en cache ces fichiers dans la RAM.

Qu'avez-vous fait pour que votre code / projet soit prêt pour l'équilibrage de charge, avez-vous d'autres inquiétudes pour les personnes qui pensent à ce changement et quelle plate-forme / langue utilisez-vous?

Était-ce utile?

La solution

En procédant ainsi:

Pour les nœuds http, j'appuie fortement sur une seule image système (ocfs2 convient à cela) et j'utilise soit la fourrière ou le carrefour comme équilibreur de charge, selon le scénario. Les nœuds devraient avoir un petit disque local pour le swap et éviter la plupart (mais pas tous) les maux de tête des CDSL.

Ensuite, j'apporte Xen dans le mélange. Si vous placez une petite quantité d’informations temporelles sur Xenbus (c’est-à-dire la quantité de mémoire virtuelle que Linux a réellement promis de traiter par machine virtuelle appelée Committed_AS), vous pouvez rapidement détecter un équilibreur de charge mortelle et l’ajuster. Oracle a compris cela aussi… et travaille maintenant à améliorer le pilote de ballon sous Linux.

Après cela, je regarde le coût de la scission de l'utilisation de la base de données pour une application donnée entre sqlite3 et la base de données que l'application veut nativement, tout en réalisant que je dois scinder la base de données afin que posix_fadvise () puisse faire son travail et ne pas polluer le noyau. tampons inutilement. Étant donné que la plupart des services de SGBD souhaitent créer leur propre tampon, vous devez également les laisser effectuer leur propre clustering. Cela dicte vraiment le type de cluster de base de données que j'utilise et ce que je fais au pilote de la bulle.

Les serveurs Memcache démarrent ensuite à partir d'un initrd maigre, à nouveau pendant que le domaine privilégié surveille leur utilisation de la mémoire et du processeur, afin qu'il sache à quel moment démarrer davantage.

Le choix de la pulsation / prise de contrôle dépend vraiment du réseau donné et de l'utilisation attendue du cluster. Il est difficile de généraliser celui-là.

Le résultat final est généralement de 5 ou 6 nœuds physiques avec assez de mémoire pour démarrer un moniteur de machine virtuelle et des invités alors qu’il est connecté à un stockage mis en miroir.

Le stockage est également difficile à décrire en termes généraux. Parfois, j'utilise le cluster LVM, parfois pas. Le not changera lorsque LVM2 s’éloignera enfin de son API actuelle basée sur des chaînes.

Enfin, toute cette coordination a pour résultat quelque chose comme Augeas , mettant à jour les configurations à la volée, en fonction des événements communiqués via Xenbus. Cela inclut ocfs2 lui-même ou tout autre service où les configurations ne peuvent tout simplement pas résider sur une seule image système.

C’est vraiment une question spécifique à l’application .. pouvez-vous donner un exemple? J'adore Memcache, mais tout le monde ne peut en tirer parti, par exemple. Est-ce que nous examinons votre configuration ou parlons des meilleures pratiques en général?

Modifier:

Désolé d'être tellement centré sur Linux ... c'est généralement ce que j'utilise lors de la conception d'un cluster.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top