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