SO je suis en train de mettre en place une charge configuration équilibrée pour notre application web avec nginx
OK
Je voudrais aller très probablement avec des séances collantes pour éviter les problèmes de session sur la configuration à équilibrage de charge
Alors vous n'allez pas avec l'équilibrage de charge, vous envisagez la répartition des charges?
Ne pas.
Terminé correctement, l'équilibrage de charge signifie que vos chances de perte de service sont réduites exponentiellement par le nombre de nœuds. Supposons que la probalité d'un noeud individuel est de 0,05 (c'est-à-dire 95% de disponibilité), alors la probabilité de perdre les deux noeuds est de 0,05 x 0,05 = 0,0025 (99,75% de disponibilité). OTOH si vous divisez la charge comme vous le suggérez, vous perdez 1/N de votre disponibilité chaque fois qu'un nœud tombe en panne, et la probabilité de perdre un nœud est N * 0.05, donc vous obtenez seulement 96.75% de disponibilité avec 2 nœuds.
En ce qui concerne les déploiements sur plusieurs nœuds, comme je l'habitude de le faire était de: 1) prendre un nœud, appelez node1, hors ligne 2) appliquent la libération à node1 3) vérifier que le déploiement a réussi 4) apporter node1 retour en ligne 5) prendre node2 hors ligne 6) rsync de node1 à NODE2 7) rsync course à nouveau pour vérifier qu'il avait terminé 8) mettre le noeud 2 de retour en ligne puis répétez 5-8 pour chaque noeud supplémentaire
quelle serait la meilleure approche synchroniser ces fichiers utilisateur sur tous les serveurs Web?
La méthode ci-dessus est pour les déploiements - pour les données soumises par l'utilisateur, vous devez distribuer le contenu au moment où il est soumis. J'utilise des scripts personnalisés pour cela. Dans le cas où un nœud est hors ligne lors de la mise à jour, il peut être resynchronisé (étapes 6 + 7) avant de le rendre disponible à nouveau.
Les scripts que j'ai utilisés ont envoyé une requête à un noeud pour lui demander de copier à partir de l'expéditeur de la demande afin qu'il puisse s'exécuter avec de courts délais et garantir que le contenu source était disponible.En termes de mise en œuvre de l'équilibrage de charge - bien que vous puissiez dépenser beaucoup d'argent en achetant du matériel sophistiqué, je n'ai encore rien vu qui fonctionne mieux que le round-robin pour de nombreuses raisons - pas moins que le basculement est implémenté de manière transparente chez le client.
HTH
C.
Notez qu'avec 2 serveurs, vous n'avez pas de quorum pour résoudre les problèmes de split-brain, ce qui peut poser problème selon la configuration de votre base de données – symcbean