clusterssh: εκτέλεση εντολών σε όλους τους clients ταυτόχρονα

Ξεκίνησε από alkisg, 27 Σεπ 2009, 04:59:43 ΜΜ

« προηγούμενο - επόμενο »

alkisg

Τα παρακάτω αφορούν εργαστήρια με κανονικές εγκαταστάσεις Ubuntu, όχι εργαστήρια με thin clients (LTSP).

Το πρόβλημα: έχουμε π.χ. 12 PC και θέλουμε σε όλα αυτά να εκτελέσουμε κάποιες εντολές, για παράδειγμα να εγκαταστήσουμε το kturtle ή να επεξεργαστούμε ένα αρχείο.

Η λύση: clusterssh  ;)

Ο πιο γρήγορος τρόπος να καταλάβει κανείς τι κάνει το clusterssh είναι να δει τη συνημμένη εικόνα: στο μικρό παραθυράκι γράφουμε τις εντολές, και αυτές εκτελούνται ταυτόχρονα σε *όλους* τους clients! Μάλιστα, εάν υπάρχει λόγος μπορούμε να επεξεργαστούμε χωριστά κάποιον από τους clients.

Η εγκατάστασή του γίνεται απλά επιλέγοντας το πακέτο clusterssh από το synaptic (ή, εκτελώντας sudo apt-get install clusterssh). Δεν χρειάζεται να εγκατασταθεί στους clients παρά μόνο στο server.

Το clusterssh έχει ένα προβληματάκι με τα ελληνικά fonts, για να λυθεί χρειάζεται να εκτελεστεί η παρακάτω εντολή:
echo 'terminal_font=-misc-fixed-medium-r-normal--0-0-75-75-c-0-iso10646-1' | sudo tee /etc/csshrc


Εάν όμως έχουμε ήδη τρέξει το cssh πριν διορθώσουμε τα ελληνικά, τότε έχει δημιουργηθεί ένα αρχείο ρυθμίσεων για τον τρέχοντα χρήστη, και πρέπει να το σβήσουμε για να ισχύσουν οι κεντρικές ρυθμίσεις:
rm ~/.csshrc


Στη συνέχεια, πηγαίνουμε στο μενού Εφαρμογές » Διαδίκτυο, και κάνουμε δεξί κλικ στο ClusterSSH, και επιλέγουμε «Προσθήκη του εκκινητή στην επιφάνεια εργασίας».
Θα εμφανιστεί το εικονίδιο του ClusterSSH στην επιφάνεια εργασίας μας. Κάνουμε δεξί κλικ » Ιδιότητες πάνω του, και στο πεδίο «Εντολή:», συμπληρώνουμε κάτι σαν το παρακάτω:
cssh client01.local client02.local client03.local client04.local client05.local client06.local


Αν θέλουμε να συνδεθούμε με διαφορετικό user, μπορούμε να βάλουμε
cssh a1@client01.local a1@client02.local a1@client03.local a1@client04.local a1@client05.local a1@client06.local


Θα δούμε 6 τερματικά (στο συγκεκριμένο παράδειγμα) να ανοίγουν ταυτόχρονα, όπου και μπορούμε να δώσουμε τον κωδικό μας για να συνδεθούμε (σε όλα μαζί) και να συνεχίσουμε με όποιες εντολές χρειαζόμαστε (π.χ. sudo apt-get dist-upgrade => κάνουμε ενημέρωση όλων των προγραμμάτων σε όλο το εργαστήριο ταυτόχρονα ;)).

Για σύνδεση χωρίς κωδικό πρόσβασης, δείτε το θέμα Απομακρυσμένες συνδέσεις χωρίς κωδικό (passwordless ssh)

alkisg

Για την παρακάτω ειδική περίπτωση, χρειάζεται μια ρυθμισούλα:
* Αν έχουμε πάνω από 10 clients, π.χ. 12,
* και συνδεθούμε ταυτόχρονα σε όλους με το clusterssh,
* και πάμε από τους clients να συνδεθούμε με ssh ή scp στον server,
τότε δημιουργούνται 12 ταυτόχρονα connections στον server, τα οποία για λίγα δευτερόλεπτα δεν θεωρούνται πιστοποιημένα (δηλαδή όταν έχουμε δώσει το username και πριν προλάβουμε να δώσουμε το password).

Το προεπιλεγμένο όριο για μη πιστοποιημένες συνδέσεις ssh είναι 10. Άρα, οι 2 clients θα έχουν πρόβλημα και δεν θα δουλέψει η εντολή scp (θα βγάλει μήνυμα "connection closed by remote host").

Η ρύθμιση για να το λύσουμε είναι στο αρχείο /etc/ssh/sshd_config του server να αλλάξουμε τη γραμμή
  #MaxStartups 10:30:60
σε
  MaxStartups 20:30:60
και να επανεκκινήσουμε το ssh με
  sudo invoke-rc.d ssh force-reload

Δημήτρης Δαλαγιώργος

Θεός!

Κι αναρωτιόμουνα αν υπάρχει κάτι τέτοιο. Είχα καλομάθει με το NetOp που μπορούσα να τρέχω εντολές ταυτόχρονα σε όλους τους υπολογιστές (έκανε την εγκατάσταση εφαρμογών παιχνιδάκι) και τώρα στο Ubuntu πήγαινα μ' ελαφρά πηδηματάκια από υπολογιστή σε υπολογιστή.

Τέλεια, θα το δοκιμάσω αύριο κιόλας!
Ενάντια στην ηλιθιότητα, ακόμα και οι θεοί, μάταια αγωνίζονται.
Friedrich Schiller

Δημήτρης Δαλαγιώργος

Η εντολή για την εγκατάστασή του είναι

sudo aptitude install clusterssh
;

Επίσης, προσπαθεί να συνδεθεί χρησιμοποιώντας ως username το ίδιο με του χρήστη που το καλεί, δηλαδή, αν εγώ κάθομαι στον server έχοντας κάνει login με τον χρήστη server_admin, προσπαθεί να συνδεθεί στον client με τον χρήστη server_admin, ο οποίος όμως, πολύ πιθανόν να μην υπάρχει. Πώς καθορίζουμε με ποιο χρήστη θα προσπαθεί να συνδεθεί;
Ενάντια στην ηλιθιότητα, ακόμα και οι θεοί, μάταια αγωνίζονται.
Friedrich Schiller

alkisg

#4
Συμπλήρωσα τις αρχικές οδηγίες ώστε να περιλαμβάνουν παράδειγμα με σύνδεση διαφορετικού χρήστη.

Δημήτρης Δαλαγιώργος

Παράθεση από: alkisg στις 01 Οκτ 2009, 10:21:55 ΠΜ
Το clusterssh έχει ένα προβληματάκι με τα ελληνικά fonts, για να λυθεί χρειάζεται να εκτελεστεί η παρακάτω εντολή:

echo 'terminal_font=-misc-fixed-medium-r-normal--0-0-75-75-c-0-iso10646-1' | sudo tee /etc/csshrc


Δε μου δούλεψε!  :(
Ενάντια στην ηλιθιότητα, ακόμα και οι θεοί, μάταια αγωνίζονται.
Friedrich Schiller

alkisg

@#(*&$(@# ούτε εμένα!!!
Το δοκίμασα στο σπίτι, τζίφος. Μεθαύριο θα κοιτάξω να δω τι έκανα στο σχολείο, προφανώς έκανα και κάποια άλλη ρύθμιση...

Δημήτρης Δαλαγιώργος

Παράθεση από: alkisg στις 19 Οκτ 2009, 11:34:42 ΜΜ
@#(*&$(@# ούτε εμένα!!!
Το δοκίμασα στο σπίτι, τζίφος. Μεθαύριο θα κοιτάξω να δω τι έκανα στο σχολείο, προφανώς έκανα και κάποια άλλη ρύθμιση...

Έβγαλες άκρη;
Ενάντια στην ηλιθιότητα, ακόμα και οι θεοί, μάταια αγωνίζονται.
Friedrich Schiller

alkisg

Ναι τελικά σωστά τα είχα γράψει,
το πρόβλημα ήταν ότι το clusterssh δημιουργεί αντίγραφο (!) των κεντρικών ρυθμίσεων για τον τρέχοντα χρήστη, κι άρα θέλουν σβήσιμο για να ενεργοποιηθούν οι κεντρικές ρυθμίσεις (rm ~/.csshrc).

Άλλαξα και τις αρχικές οδηγίες ώστε να το περιέχουν:
https://alkisg.mysch.gr/steki/index.php?topic=2214.msg17553#msg17553

Δημήτρης Δαλαγιώργος

Μπορείς να τρέχεις το cssh μέσα απ' το NX; Εγώ όχι...  :'(
Ενάντια στην ηλιθιότητα, ακόμα και οι θεοί, μάταια αγωνίζονται.
Friedrich Schiller

alkisg

Ναι, κανονικά... Τι μήνυμα λάθους σου βγάζει; Δες και το /var/log/auth.log.

Δημήτρης Δαλαγιώργος

Συνδέομαι κανονικά με τον server με το NX και προσπαθώ ν' ανοίξω το cssh. Πατάω το κουμπάκι του να τρέξει και δεν κάνει τίποτα. Δίνω cssh στο command prompt και μου βγάζει:

Fatal: Unrecognised font used (-misc-fixed-medium-r-normal--0-0-75-75-c-0-iso10646-1).
Please amend $HOME/.csshrc with a valid font (see man page).


.csshrc στο $HOME μου δεν υπάρχει... Να υποθέσω ότι δεν του αρέσει το font που χρησιμοποιεί το NX;

Υ.Γ. Πώς γυρνάω το πληκτρολόγιο στα ελληνικά στο NX;
Ενάντια στην ηλιθιότητα, ακόμα και οι θεοί, μάταια αγωνίζονται.
Friedrich Schiller

alkisg

Αααα από Windows προσπαθείς να μπεις; (εμένα δεν έχει κανένα πρόβλημα, αλλά μπαίνω από Linux).

Δοκίμασε να σβήσεις τελείως το /etc/csshrc και το ~/.csshrc αν τυχόν υπάρχει,
ή τρέξε xfontsel για να βρεις κάποιο font που να το έχει ο nx client για Windows (οπότε και να το βάλεις στο /etc/csshrc).

Δημήτρης Δαλαγιώργος

Παράθεση από: alkisg στις 30 Οκτ 2009, 06:29:17 ΜΜ
Δοκίμασε να σβήσεις τελείως το /etc/csshrc και το ~/.csshrc αν τυχόν υπάρχει,

Αν σβήσω το /etc/csshrc δε θά 'χει μετά πρόβλημα με τα ελληνικά;
Ενάντια στην ηλιθιότητα, ακόμα και οι θεοί, μάταια αγωνίζονται.
Friedrich Schiller

Δημήτρης Δαλαγιώργος

Δύο ενοχλητικά προβλήματα του cssh:

1) Αν για οποιονδήποτε λόγο ένας απ' τους υπολογιστές του cluster είναι εκτός σύνδεσης (βγήκε το καλώδιο δικτύου, κάηκε το τροφοδοτικό, οτιδήποτε) το cssh κολλάει και δεν συνδέεται ούτε στους υπόλοιπους υπολογιστές του cluster, οπότε προς το παρόν φτιάχνω ξεχωριστό cluster χωρίς τον προβληματικό υπολογιστή. Δε θά 'πρεπε όμως, να κάνει ένα timeout μέσα σε ένα εύλογο χρονικό διάστημα και να αφήνει τα υπόλοιπα παράθυρα να δουλέψουν και να συνδεθούν στους υπόλοιπους υπολογιστές;

2) Δεν υποστηρίζει τονισμένα ελληνικά. Οπότε αν προσπαθήσεις, για παράδειγμα, να μπεις στο φάκελο 'Έγγραφα' ενός χρήστη, πολύ απλά δεν μπορείς, όχι γιατί δεν έχεις τα κατάλληλα δικαιώματα, αλλά γιατί δεν μπορείς να πληκτρολογήσεις το Έ!
Ενάντια στην ηλιθιότητα, ακόμα και οι θεοί, μάταια αγωνίζονται.
Friedrich Schiller

alkisg

Δεν έχω κανένα από τα δύο προβλήματα που λες. Και timeout κάνει όταν ένας client είναι off και συνεχίζει με τους επόμενους, και τονισμένα ελληνικά παίρνει.

Για το timeout, κάνε man cssh και ψάξε για τη λέξη ConnectTimeout, μήπως σε βοηθήσει αυτή η επιλογή του ssh.
Για τα ελληνικά, μήπως στο κάνει όταν συνδέεσαι με nx, και είναι πρόβλημα του nx των Windows;

Δημήτρης Δαλαγιώργος

Παράθεση από: alkisg στις 24 Νοε 2009, 09:01:59 ΜΜ

Για τα ελληνικά, μήπως στο κάνει όταν συνδέεσαι με nx, και είναι πρόβλημα του nx των Windows;

Όχι, στο σχολείο μου τό 'κανε, σε server με Ubuntu 9.10
Ενάντια στην ηλιθιότητα, ακόμα και οι θεοί, μάταια αγωνίζονται.
Friedrich Schiller


Δημήτρης Δαλαγιώργος

Όταν γράφω στο παραθυράκι του cssh δεν παίρνει τα ελληνικά με τόνο. Όταν γράφω απευθείας στο terminal ενός client, τα ελληνικά με τόνο εμφανίζονται. Με άλλα λόγια, αν θέλω μαζικά να γράψω ελληνικά με τόνο, δεν μπορώ:
Ενάντια στην ηλιθιότητα, ακόμα και οι θεοί, μάταια αγωνίζονται.
Friedrich Schiller

Δημήτρης Δαλαγιώργος

Όταν δε, δοκιμάσω να συνδεθώ με τον υπολογιστή που είναι down τρέχοντας το cssh από τερματικό μου βγάζει:

dimitrios@Server:~$ cssh client12.local
Can't call method "name" on an undefined value at /usr/bin/cssh line 988.


δίνοντας

dimitrios@Server:~$ cssh lab01
Can't call method "name" on an undefined value at /usr/bin/cssh line 988.


μου εμφανίζει τα παράθυρα για κάθε άλλο client πλην του 12, χωρίς να συνδέεται με κανένα, βγάζει το παραπάνω μήνυμα λάθους, τερματίζει, αλλά τα παράθυρα μένουν "ορφανά"
Ενάντια στην ηλιθιότητα, ακόμα και οι θεοί, μάταια αγωνίζονται.
Friedrich Schiller

alkisg

Το πρόβλημα με τα hostnames τελικά υπάρχει στην Karmic που έχεις αλλά όχι στην Jaunty που έχω, γι' αυτό και τα βλέπουμε διαφορετικά. :)
Του το αναφέρανε στις 22 Σεπτεμβρίου: http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=547931
και δυο μέρες μετά έβγαλε νέα έκδοση (3.27) στην οποία είχε λύσει το πρόβλημα!
(τα καλά του open source, η Microsoft έκανε 6 μήνες να λύσει το bug που της είχα στείλει ότι το SP2 των XP έκοβε στη μέση τα αποστελλόμενα emails...)

Κάποια στιγμή αργότερα σήμερα θα αντιγράψω τη νέα αυτή έκδοση από την 10.04 στο αποθετήριο ελέγχου ενημερώσεων ΣΕΠΕΗΥ. Εφόσον δεις ότι λύνει το πρόβλημα χωρίς να δημιουργεί καινούργια, πες ένα ΟΚ να το περάσω και στο κανονικό αποθετήριο, για να σταλεί αυτόματα και σε όλα τα εργαστήρια.


Για το πρόβλημα με τα ελληνικά πιστεύω ότι καλύτερα θα είναι να το αναφέρεις στον bug tracker στο sourceforge, παρά στο launchpad.
http://sourceforge.net/apps/mediawiki/clusterssh/index.php?title=Main_Page

Δημήτρης Δαλαγιώργος

Παράθεση από: alkisg στις 30 Οκτ 2009, 06:29:17 ΜΜ
Αααα από Windows προσπαθείς να μπεις; (εμένα δεν έχει κανένα πρόβλημα, αλλά μπαίνω από Linux).

Δοκίμασε να σβήσεις τελείως το /etc/csshrc και το ~/.csshrc αν τυχόν υπάρχει,
ή τρέξε xfontsel για να βρεις κάποιο font που να το έχει ο nx client για Windows (οπότε και να το βάλεις στο /etc/csshrc).

Εγκατέστησα στον υπολογιστή μου όλες τις επιπλέον γραμματοσειρές που υπάρχουν στο site της NX, έτρεξα το xfontsel για να διαλέξω ένα font με encoding iso8859-7, όρισα τη συγκεκριμένη γραμματοσειρά στο .csshrc αλλά εξακολουθεί να μη μου δείχνει ελληνικούς χαρακτήρες! Καμιά ιδέα;
Ενάντια στην ηλιθιότητα, ακόμα και οι θεοί, μάταια αγωνίζονται.
Friedrich Schiller

alkisg

Το clusterssh δεν το χρησιμοποιώ πια εδώ και κανά χρόνο, από όταν ξεκινήσαμε την ανάπτυξη των fat clients. Και Windows πολύ σπάνια ανοίγω, οπότε είναι πολύ δύσκολο να αναπαραγάγω το πρόβλημα που λες. Αν δεν μπορεί να βοηθήσει κάποιος άλλος θα πρότεινα να στείλεις mail στη λίστα του clusterssh ή να ρωτήσεις στο κανάλι #xorg στο IRC.

Αν κατάλαβα όμως καλά, το πρόβλημα είναι ότι ο nx client για Windows δεν έχει ελληνικές γραμματοσειρές (ούτε οι extra έχουν), και έτσι προγράμματα όπως το cssh και το xterm που χρησιμοποιούν τις γραμματοσειρές του nx αντί για αυτές του Linux server, δεν δείχνουν ελληνικά.

Δοκίμασε λοιπόν να πεις στο xterm να χρησιμοποιήσει κάποια γραμματοσειρά του Linux server, ως εξής:
cssh server -t '-fa "-misc-fixed-medium-r-semicondensed--13-120-75-75-c-60-iso10646-1"'