Tous ceux qui ont déjà travaillé avec un cluster le savent bien. Il faut avec deux machines « strictement » identiques.

La meilleure solution est d’avoir une « console cluster ». Je n’ai jamais trouvé de solution réellement efficace et pratique à utiliser (la plus pratique celle de SUN).

Bref. En parallèle, je voulais regarder ce que Tmux avait dans le ventre pour remplacer Screen qui a fait son temps.

Et en pleine lecture de tmux: Productive Mouse-Free Development, je me rends compte qu’il est surement possible d’en faire une super console pour cluster.

Fichier « .tmux-clust.conf »

new-session -d -s clust -n clust1 'ssh clust-root1'
split-window -v -t clust 'ssh clust-root2'
set -g status-right ""
source-file ~/.tmux-clust-bc.conf

Fichier « .tmux-clust-bc.conf »

set-window-option synchronize-panes on
bind r source-file ~/.tmux-clust-nobc.conf \; display "Stop broadcast"
set -g status-bg green
set -g pane-active-border-fg green
unbind u
unbind i
unbind o
unbind p

bind u set-window-option synchronize-panes off \; send-keys -t clust:0.0 '1' \; send-keys -t clust:0.1 '2' \; set-window-option synchronize-panes on
bind i set-window-option synchronize-panes off \; send-keys -t clust:0.0 '2' \; send-keys -t clust:0.1 '1' \; set-window-option synchronize-panes on
bind o set-window-option synchronize-panes off \; send-keys -t clust:0.0 '192.168.21.' \; send-keys -t clust:0.1 '192.168.22.' \; set-window-option synchronize-panes on
bind p set-window-option synchronize-panes off \; send-keys -t clust:0.0 '192.168.22.' \; send-keys -t clust:0.1 '192.168.21.' \; set-window-option synchronize-panes on

Fichier « .tmux-clust-nobc.conf »

set-window-option synchronize-panes off
bind r source-file ~/.tmux-clust-bc.conf \; display "Now with broadcast"
set -g status-bg blue
set -g pane-active-border-fg blue

unbind u
unbind i
unbind o
unbind p
bind u send-keys -t clust:0.0 '1' \; send-keys -t clust:0.1 '2'
bind i send-keys -t clust:0.0 '2' \; send-keys -t clust:0.1 '1'
bind o send-keys -t clust:0.0 '192.168.21.' \; send-keys -t clust:0.1 '192.168.22.'
bind p send-keys -t clust:0.0 '192.168.22.' \; send-keys -t clust:0.1 '192.168.21.'

Et pour finir le fichier « tmux-clust »

#!/bin/bash
tmux -f ~/.tmux-clust.conf attach

Du coup, quand je me connecte avec le script « tmux-clust », il lance une connexion vers clust-root1 et clust-root2 chacun dans un panneau. Et par défaut, on est dans le mode « bc » pour broadcast.

Les touches :

  • C-b u -> 1 -> node
  • C-b i -> 2 -> other_node
  • C-b o -> 192.168.21 -> node_addr_base
  • C-b p -> 192.168.22 -> other_addr_base
  • C-b r -> Change broadcast mode

« C-b r » permet de passer d’un « mode » à un autre :
– Vert « broadcast » on envoie la purée sur les deux machines en même temps
– Bleu mode normal C-b fléche pour passer de l’un à l’autre

Et voila, une console cluster en mieux :p