Déploiement de fichiers sur plusieurs serveurs


11

Nous avons un référentiel central de fichiers dans, par exemple, server-1 à /srv/www. Ensuite, nous avons également un nombre N de serveurs. Nous voulons que server-1 puisse déployer ses fichiers /srv/wwwsur tous les serveurs aussi rapidement et efficacement que possible.

Existe-t-il quelque chose comme rsync, mais au lieu de spécifier une seule cible, de spécifier un cluster (N serveurs) de cibles?

Je pensais que cela gitpouvait fonctionner, mais pouvons-nous également spécifier plusieurs télécommandes à pousser?

Quelle est la meilleure solution, en supposant que N serveurs peuvent éventuellement atteindre des centaines.


2
Je suppose qu'un système de fichiers réseau n'est pas possible?
cjc

stackoverflow.com/questions/849308/… pour un truc git à pousser vers plusieurs télécommandes. Pas sûr cependant des centaines.
cjc

Réponses:


14

Eh bien, Twitter et Facebook ont commencé à utiliser bittorrent dans leurs clusters pour distribuer de nouvelles révolutions de code. Ce faisant, ils sont capables de transmettre du code à des dizaines de milliers de serveurs en très peu de temps par rapport aux méthodes de déploiement centralisées à l'ancienne.

Cela ne semble pas encore être à cette échelle, mais il n'y a aucun mal à concevoir votre système de déploiement de telle sorte qu'il ne se révélera pas de goulot d'étranglement de sitôt.


1
Comment utilisent-ils bittorrent?
Dragos

3
Voir les articles auxquels j'ai lié.
EEAA

Le lien Twitter @EEAA est rompu
gprasant

@gprasant fixe.
EEAA

7

Je ne recommande pas git pour les gammes auxquelles vous parlez. Cela peut fonctionner, mais je constate personnellement des lacunes dans l'utilisation de ce modèle pour la récupération.

Il y a quelques éléments qui déterminent la meilleure façon de procéder:

  1. Quelle taille d'un repo doit être partagée.
  2. À quelle vitesse il doit converger.

Pour une convergence parfaite et une vitesse maximale, vous devrez opter pour un système de fichiers réseau, tel que NFSv4. Les systèmes de fichiers en cluster que je connais ne s'adaptent pas à plusieurs centaines de nœuds, il doit donc s'agir d'un système de fichiers réseau. Cela présente ses propres défis, mais cela signifie que vous atteindrez la convergence au moment où les fichiers sont mis à jour sur la tête NFS.

Pour une convergence rapide, vous pouvez utiliser une astuce rsync. Si le démon rsync finit par être lié au processeur, vous pouvez certainement placer deux ou trois serveurs rsync derrière un équilibreur de charge comme haproxy. Ajoutez à cela des tâches cron pour extraire des données (ou une autre méthode de déclenchement des mises à jour de code) et vous pouvez atteindre la convergence assez rapidement.

Pour les deux, ce sera probablement une bonne idée de placer le référentiel central sur des liaisons 10 GbE pour un débit maximal.

Un autre est un push-rsync, où il est exécuté à partir du référentiel central pour envoyer des mises à jour à vos serveurs. Il ne convergera pas aussi rapidement que les deux ci-dessus, mais sera plus convivial pour votre bande passante interne. Utilisez plusieurs hôtes poussant sur des plages divisées pour une meilleure vitesse.



-1

[affilié] En utilisant Kwatee ( http://www.kwatee.net ), vous pouvez déployer sur autant de serveurs que vous le souhaitez. Les déploiements sont incrémentiels (seuls les fichiers modifiés sont transmis) et peuvent être parallélisés donc c'est très rapide. Vous pouvez également configurer Kwatee pour qu'il reconnaisse l'équilibreur de charge afin que les serveurs soient supprimés du LB pendant les mises à jour, puis réinsérés. Il existe une interface graphique pour configurer les paramètres de déploiement, puis les déploiements peuvent être déclenchés manuellement via l'interface graphique ou automatisés à l'aide de commandes python.


voulez-vous expliquer le vote négatif?
mac

1
Rejoindre le site juste pour pimp son propre produit suscite souvent des votes négatifs ici.
ceejayoz

Quoi qu'il en soit, tant pis pour des réponses honnêtes et transparentes
mac
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.