В этой статье мы покажем, как запускать команды на нескольких серверах Linux одновременно.
Мы объясним, как использовать некоторые из широко известных инструментов, предназначенных для выполнения повторяющихся рядов команд на нескольких серверах одновременно.
Это руководство полезно для системных администраторов, которым обычно приходится проверять работоспособность нескольких серверов Linux каждый день.
Для целей этой статьи мы предполагаем, что у вас уже есть настройка SSH для доступа ко всем вашим серверам, а во-вторых, при одновременном доступе к нескольким серверам необходимо настроить SSH  без пароля на основе ключей на всех ваших серверах Linux.
Это, прежде всего, повышает безопасность сервера, а также обеспечивает легкий доступ.

1. PSSH – Parallel SSH

Parallel-SSH — это открытый, простой и удобный в использовании набор инструментов Python на основе командной строки для одновременного выполнения ssh на ряде Linux-систем.

Он содержит ряд инструментов для различных целей, таких как Parallel-ssh, Parallel-scp, parallel-rsync, parallel-slurp и parallel-nuke (более подробную информацию читайте на странице руководства конкретного инструмента).

Чтобы установить parallel-ssh, вам нужно сначала установить PIP в вашу Linux-систему.

$ 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+

Затем установите parallel-ssh с помощью pip следующим образом.

$ sudo pip install parallel-ssh

Затем введите имена хостов или IP-адреса удаленного Linux-сервера с SSH-портом в файле с именем hosts (вы можете называть его как хотите):

$ vim hosts
192.168.0.10:22
192.168.0.11:22
192.168.0.12:22

Сохраните файл и закройте его.

Теперь запустите parallel-ssh, укажите файл hosts с параметром -h и командой (-ами), которая будет выполнена на всех указанных серверах.

Флаг -i означает отображение std-вывода и std-ошибки по завершении выполнения команды на каждом сервере.

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

2. Pdsh — Утилита параллельного удаленного шелла

Pdsh — это простой и бесплатный инструмент параллельной удаленной оболочки для одновременного выполнения команд на нескольких серверах Linux.

Он использует скользящее окно потоков для выполнения удаленных команд.

Чтобы установить Pdsh на ваши Linux-машины, выполните соответствующую команду ниже.

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

Чтобы запускать команды на нескольких серверах, добавьте серверы в файл hosts, как описано ранее.

Затем запустите pdsh; флаг -w используется для указания файла hosts, а -R используется для указания удаленного командного модуля (доступные удаленные командные модули включают ssh, rsh, exec, по умолчанию — rsh).

Обратите внимание на символ  ^ перед файлом hosts.

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

Если вы не указали удаленную команду, которая должна быть выполнена в командной строке, как показано выше, pdsh запускается интерактивно, запрашивая команды и запуская их при завершении возвратом

Для получения дополнительной информации см. Страницу pdsh man:

$ man pdsh 

3. ClusterSSH

ClusterSSH — это инструмент командной строки для одновременного администрирования кластеров с несколькими серверами.

Он запускает консоль администрирования и xterm для всех указанных серверов, позволяя вам выполнять одну и ту же команду для всех из них.

Чтобы использовать clusterssh, начните с установки на локальном компьютере Linux, как показано далее

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

Теперь, когда вы его установили, сразу откройте консоль администратора и xterm на удаленных серверах, как показано ниже.

Чтобы запустить команду на всех серверах, щелкните по строке ввода xterm и введите команду; для управления одним хостом используйте консоль администратора.

$ clusterssh linode cserver contabo
или
$ clusterssh username@server1 username@server2 username@server3

Для получения дополнительной информации см. Страницу man clusterssh:

$ man clusterssh

4. Ansible

Про Ansible мы уже написали см. тут:

Установить Ansible в Fedora через DNF из пакетов RPM

Как установить Ansible на Ubuntu 18.04 (Bionic)

Как просмотреть доступные группы пакетов в Linux

 

Поделитесь статьей:

Добавить комментарий