4 Tools zur gleichzeitigen Ausführung von Befehlen auf mehreren Linux-Servern

Published on October 18, 2018

4 Tools zur gleichzeitigen Ausführung von Befehlen auf mehreren Linux-Servern

Ursprünglicher Autor: Aaron Kili
  • Übersetzung
Der Artikel, dessen Übersetzung wir heute veröffentlichen, befasst sich mit Technologien zur gleichzeitigen Ausführung von Befehlen auf mehreren Linux-Servern. Hier werden wir über einige bekannte Tools sprechen, die solche Funktionen implementieren. Dieses Material ist nützlich für Systemadministratoren, die beispielsweise regelmäßig den Status vieler Remote-Systeme überprüfen müssen. Es wird davon ausgegangen, dass der Reader bereits über mehrere Server verfügt, auf die der Zugriff über SSH organisiert ist. Wenn Sie gleichzeitig mit mehreren Computern arbeiten, ist es außerdem sehr nützlich, den SSH-Zugriff ohne Kennwort über einen Schlüssel zu konfigurieren . Dieser Ansatz erhöht einerseits die Serversicherheit und erleichtert andererseits die Arbeit damit.



1. PSSH - Paralleles SSH


PSSH ist ein in Python geschriebenes Open-Source-Befehlszeilen-Toolkit, das für die parallele Ausführung von SSH-Befehlen auf einer Vielzahl von Linux-Systemen entwickelt wurde. Es funktioniert schnell und ist leicht zu erlernen. PSSH Mittel , wie beispielsweise parallel-ssh, parallel-SCP , parallel-rsync, parallel-slurpund parallel-nuke(Details über diese Medien können im Menschen gesehen werden).

Vor der Installation parallel-sshauf einem Linux-System müssen Sie es zuerst installieren pip. So wird es in verschiedenen Distributionen gemacht:

$ sudo apt install python-pip python-setuptools   #Debian/Ubuntu 
# yum install python-pip python-setuptools        #RHEL/CentOS 
# dnf install python-pip python-setuptools        #Fedora 22+

Dann parallel-sshsetzen Sie mit pip:

$ sudo pip install parallel-ssh

Als Nächstes müssen Sie die Hostnamen oder IP-Adressen der entfernten Linux-Server und die Portinformationen in die Datei eingeben hosts(Sie können sie sogar so nennen, wie Sie möchten). Hier brauchen wir diesen Befehl:

$ vim hosts

Hier ist ein Beispiel für den Inhalt einer solchen Datei:

192.168.0.10:22
192.168.0.11:22
192.168.0.12:22

Nachdem Sie alle erforderlichen Informationen in die Datei eingegeben haben, müssen Sie zunächst parallel-sshden Dateinamen -hund die Befehle, die auf allen Servern ausgeführt werden müssen, deren Adressen in der Datei enthalten sind, mithilfe der Option an dieses Dienstprogramm übertragen hosts. Das -iUtility- Flag wird verwendet, um anzuzeigen, was in die Standardausgabe und Fehlerströme eingeht, nachdem die Ausführung von Befehlen auf den Servern abgeschlossen wurde.

Der Startbefehl parallel-sshkann folgendermaßen aussehen:

$ parallel-ssh -h hosts "uptime; df -h"

Die folgende Abbildung zeigt die Verwendung des Dienstprogramms bei der Arbeit mit drei Servern.


Das Dienstprogramm parallel-ssh führt Befehle auf mehreren Servern aus

2. Pdsh - Dienstprogramm für parallele Remote-Shell


Pdsh ist wiederum eine Open-Source-Lösung, die eine Shell zum gleichzeitigen Ausführen von Befehlen auf mehreren Linux-Servern darstellt.

So installieren Sie pdshin verschiedenen Distributionen:

$ sudo apt install pdsh         #Debian/Ubuntu 
# yum install pdsh              #RHEL/CentOS 
# dnf install pdsh              #Fedora 22+

Um Befehle auf mehreren Servern ausführen zu können, müssen die Adressen dieser Server, wie bei der Verwendung parallel-ssh, zur Datei hinzugefügt werden, die auch aufgerufen werden kann hosts. Dann müssen Sie pdshin der folgenden Form ausführen :

$ pdsh -w ^hosts -R ssh "uptime; df -h"

Hier wird die Flagge -wist eine Datei mit einer Liste von Servern angeben , verwendet wird , das Flag -Rwird das Modul von Remote - Befehlen angeben verwendet (unter den verfügbaren Module sind Remote - Befehle ssh, rsh, exec, ist die Standardeinstellung rsh). Beachten Sie das Symbol ^vor dem Dateinamen mit der Liste der Server.

So sieht die Arbeit mit diesem Team aus.


Ausführung von Befehlen auf mehreren Servern mit pdsh

Wenn Sie beim Aufrufpdsh keine Liste von Befehlen angegeben haben, die auf Servern ausgeführt werden sollen, wird dieses Dienstprogramm interaktiv ausgeführt. Detailspdshfinden Sie auf der entsprechenden Manpage.

3. ClusterSSH


ClusterSSH ist ein Befehlszeilentool zur Verwaltung von Serverclustern. Es startet die Administratorkonsole und für jeden Server ein separates Fenster xterm. Danach ist es auf allen diesen Servern möglich, die gleichen Befehle gleichzeitig auszuführen.

Installieren Sie clusterssh:

$ sudo apt install clusterssh    #Debian/Ubuntu 
# yum install clusterssh         #RHEL/CentOS 
$ sudo dnf install clusterssh    #Fedora 22+

Um nun eine Verbindung zu den Servern herzustellen, müssen Sie den folgenden Befehl ausführen:

$ clusterssh linode cserver contabo

Sie können dieses Design auch verwenden:

$ clusterssh username@server1 username@server2 username@server3

Danach sehen Sie etwas Ähnliches wie in der folgenden Abbildung.


Arbeiten mit mehreren Servern mithilfe von Clustern

Befehle, die in der Admin-Konsole eingegeben wurden, werden auf allen Servern ausgeführt. Um Befehle auf einem separaten Server auszuführen, müssen Sie diese in einem dafür geöffneten Fenster eingeben.

4. Ansible


Ansible ist ein beliebtes Open Source-Tool zur Automatisierung von IT-Prozessen. Es wird verwendet, um Systeme zu konfigurieren und zu verwalten, Anwendungen zu installieren und andere Probleme zu lösen.

Installieren Sie ansible:

$ sudo apt install ansible       #Debian/Ubuntu 
# yum install ansible            #RHEL/CentOS 
$ sudo dnf install ansible       #Fedora 22+

Danach müssen Sie der Datei Serveradressen hinzufügen /etc/ansible/hosts.

$ sudo vim /etc/ansible/hosts

Hier ist ein Beispiel für ein Fragment einer ähnlichen Datei mit mehreren gruppierten Systemen webservers:

# Ex 2: A collection of hosts belonging to the 'webservers' group
[webservers]
139.10.100.147
139.20.40.90
192.30.152.186

Um nun die Befehlsinformationen abzurufen uptimeund herauszufinden, welche Benutzer mit den Hosts der Gruppe verbunden sind webservers, können Sie die folgende Konstruktion verwenden:

$ ansible webservers -a "w " -u admin

Hier wird die Option -averwendet, um die an das Modul übergebenen Argumente anzugeben, und mit dem Flag -ukönnen Sie den Standardbenutzernamen angeben, der für die Verbindung zu Remoteservern über SSH verwendet wird.

Bitte beachten Sie, dass Sie über die Befehlszeilenschnittstelle ansiblenur einzelne Befehle ausführen können.


Interaktion mit mehreren Servern mittels Ansible

Ergebnisse


In diesem Artikel haben wir über Tools gesprochen, mit denen Befehle gleichzeitig auf mehreren Servern unter Linux ausgeführt werden können. Wenn Sie darüber nachdenken, Aufgaben für die Verwaltung mehrerer Server zu automatisieren, hoffen wir, dass Sie hier etwas finden, das zu Ihnen passt.

Sehr geehrte Leser! Kennen Sie nützliche Dienstprogramme, die die Verwaltung einer großen Anzahl von Servern vereinfachen?