Archives pour l'étiquette ClusterSSH

CsshX un outil de Cluster SSH utilisant Terminal.app de Mac OS X

Contrôler plusieurs serveur en parallèle ?

Je me posais la question de comment contrôler plusieurs serveur en parallèle et exécuter la même commande, en même temps et pas en séquentiel, via une connexion ssh ? et j’ai trouver la réponse dans l’utilisation de cluster ssh qui permet de manipulé plusieurs dizaines d’xterm en parallèle.

L’outil est née sur linux mais Cluster Ssh est porté sous darwin et utilisable sous OS X. En outre il est toujours possible de compiler cluster ssh sur OS X.

Alternative CsshX sous OS X

Une alternative existe, elle est ultra simple, elle consiste en un simple script perl nommée csshx codé par Gavin Brock.

L’installation est simple :

  1. Téléchargé csshX
  2. Dézipper le
  3. Changer les droits pour pourvoir l’exécuter

Cluster ssh X pour OS X

Hack pour snow leopard 10.6

Avec snow leopard OS X 10.6 pour devriez avoir le message d’erreur suivant en ligne de commande :

Can<span style="color: #ff0000;">'t load '</span><span style="color: #000000; font-weight: bold;">/</span>System<span style="color: #000000; font-weight: bold;">/</span>Library<span style="color: #000000; font-weight: bold;">/</span>Perl<span style="color: #000000; font-weight: bold;">/</span>Extras<span style="color: #000000; font-weight: bold;">/</span><span style="color: #000000;">5.10</span><span style="color: #000000;">.0</span><span style="color: #000000; font-weight: bold;">/</span>darwin-thread-multi-2level<span style="color: #000000; font-weight: bold;">/</span>auto<span style="color: #000000; font-weight: bold;">/</span>MacPerl<span style="color: #000000; font-weight: bold;">/</span>MacPerl.bundle<span style="color: #ff0000;">' for module MacPerl: /System/Library/Perl/Extras/5.10.0/darwin-thread-multi-2level/auto/MacPerl/MacPerl.bundle: no appropriate 64-bit architecture (see &quot;man perl&quot; for running in 32-bit mode) at /System/Library/Perl/5.10.0/darwin-thread-multi-2level/DynaLoader.pm line 207.  at /usr/local/bin/csshx line 237 Compilation failed in require at /usr/local/bin/csshx line 237. BEGIN failed--compilation aborted at /usr/local/bin/csshx line 237.</span>

La solution la plus simple est de remplacer la première ligne du script

<span style="color: #808080; font-style: italic;">#!/usr/bin/perl</span>

Par

<span style="color: #808080; font-style: italic;">#!/usr/bin/perl5.8.9</span>

Vous trouverez l’intégralité des explications dans le bug tracking de csshX

Gerer un groupe de serveur avec cluster ssh

Mais comment mettre à jour l’ensemble des serveurs virtuels xen herbergés sur une même machine physique ? Comment exécuter la même commande, au même instant sur l’ensemble d’une ferme de serveur simplement ? Comment éviter de me logger et delogger de chaque serveur pour lancer la même commande ?

Installation de Cluster ssh

ClusterSSH permet de contrôler plusieurs dizaine d’xterm depuis une interface graphique tres simple sous x windows. Cluster ssh permet ainsi d’intervenir en parallèles sur plusieur terminaux et donc interagir avec de multiple serveur via une connexion ssh.


apt-get install clusterssh

Pour lancer cluster ssh c’est ultra simple


cssh &

Pour ouvrir un par un chaque terninal et lancer une connexion ssh vous cliquez sur Host puis Add Host et vous saisissez le nom du serveur demandé.

Configuration de cluster ssh

Le fichier de configuration est .csshrc à créé dans votre home directory. Ceci pouvant être fastidieux il existe une façon de faire automatisé et rapide.


$ cssh -u > $HOME/.csshrc

Et voila votre propre fichier de configuration de cluster ssh avec les paramètres par défaut qu’il ne vous reste plus qu’a personnaliser.

Cluste ssh utilise par defaut xterm mais il est parfaitement possible de lui faire utiliser un autre terminal. Personnellement j’ai garder xterm et changer les paramètres de présentation de comme ceci :


terminal=/usr/bin/xterm
terminal_allow_send_events=-xrm 'XTerm.VT100.allowSendEvents:true'
terminal_args=-bg black -fg green
terminal_decoration_height=0
terminal_decoration_width=0
terminal_font=6x13
terminal_reserve_bottom=20
terminal_reserve_left=0
terminal_reserve_right=0
terminal_reserve_top=0
terminal_size=100x20
terminal_title_opt=-T

J’ai jouer sur la couleur et la taille du terminal. Mais sur tout j’ai jouer sur le reserve pour éviter tout chevauchement de fenêtre sur mon écran.

Et pour ouvir plus xterm en même temps ?

Oui parce que ouvir un par un les terminaux c’est aussi ce que l’ont souhaite éviter. Et bien c’est toujours aussi simple bien que peu clair dans les page de man. Dans votre fichier .csshrc ajouter un alias ou nom de cluster désignant l’ensemble des machines correspondante comme ceci :


EnsembleServeur1= Toto.domaine.tld Titi.domaine.tld Tutu.domaine.tld Tata.domaine.tld

Toujours dans votre fichier .csshrc indiquer que cette ligne désigne un cluster, un ensemble de machine.


clusters= EnsembleServeur1 EnsembleServeur2

Maintenant vous pouvez lancer cluster ssh en lui passant en paramètre le nom du cluster de machine que vous souhaitez administrer.


cssh EnsembleServeur1

Suite à cela un xterm et une connexion ssh sera ouvert pour chaque machine du cluster.

A suivre par ici

Site du projet Cluster ssh
Le man de Cluster ssh