ウェブサイト検索

複数のLinuxサーバーでコマンドを実行するための4つの便利なツール


この記事では、複数のLinuxサーバーで同時にコマンドを実行する方法を説明します。複数のサーバーで同時に反復的なコマンドのシリーズを実行するために設計された広く知られたツールのいくつかの使い方を説明します。このガイドは、通常、毎日複数のLinuxサーバーの健康を確認しなければならないシステム管理者にとって役立つものです。

この記事の目的のために、すでにすべてのサーバーにアクセスするためのSSHが設定されていると仮定します。そして、複数のサーバーに同時にアクセスする場合、すべてのLinuxサーバーでキーを使ったパスワードなしのSSHを設定することが適切です。これにより、サーバーのセキュリティが向上し、アクセスが容易になります。

参照: リモートアクセスを簡素化するためにカスタムSSH接続を設定する方法

1. PSSH - 並列SSH

Parallel-SSHは、複数のLinuxシステムでsshを並行して実行するためのオープンソースで、迅速で使いやすいコマンドラインベースのPythonツールキットです。これは、parallel-ssh、parallel-scp、parallel-rsync、parallel-slurp、およびparallel-nukeなど、さまざまな目的のためのツールを含んでいます(詳細については特定のツールのマニュアルページを参照してください)。

parallel-sshをインストールするには、まずLinuxシステムにPIPをインストールする必要があります。

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

次に、pipを使用してparallel-sshを次のようにインストールします。

$ sudo pip install parallel-ssh

次に、SSHポートを持つリモートLinuxサーバーのホスト名またはIPアドレスをhostsというファイルに入力します(好きな名前を付けることができます):

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

ファイルを保存して閉じてください。

次に、parallel-sshを実行し、-hオプションを使用してホストファイルを指定し、すべての指定されたサーバーで実行されるコマンドを指定します。-iフラグは、各サーバーでコマンドの実行が完了するたびに標準出力と標準エラーを表示することを意味します。

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

また、次のことをチェックするべきです:複数のLinuxサーバーで複数のコマンドを実行する方法

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です)。

ホストファイルの前の^に注意してください。

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

上記のようにコマンドラインで実行するリモートコマンドを指定しない場合、pdshはインタラクティブに実行され、コマンドの入力を促し、キャリッジリターンで終了したときにそれらを実行します。詳細については、pdshのマニュアルページを参照してください:

$ 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
OR
clusterssh username@server1 username@server2 username@server3 

詳細については、clustersshのマニュアルページを参照してください:

$ man clusterssh

4. アンシブル

Ansibleはオープンソースで人気のあるITプロセス自動化ツールです。システムの設定や管理、アプリケーションの展開など、さまざまな用途に使用されます。

LinuxシステムにAnsibleをインストールするには、以下の適切なコマンドを実行してください:

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

ansibleをインストールしたら、/etc/ansible/hostsファイルにサーバーのホスト名またはIPアドレスを追加できます。

$ sudo vim /etc/anasible/hosts

それらをグループで指定します。例えば、ウェブサーバーです。

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

ファイルを保存して閉じてください。

今、上記のホスト設定ファイルで指定されたグループwebserverのすべてのサーバーに接続しているユーザーとアップタイムを確認するには、次のようにansibleコマンドラインツールを実行します。

-aオプションはモジュールに渡す引数を指定するために使用され、-uフラグはSSHを介してリモートサーバーに接続するためのデフォルトのユーザー名を指定します。

Ansible CLIツールでは、最大で1つのコマンドしか実行できないことに注意してください。

$ ansible webservers -a "w " -u admin

それが全てです!この記事では、広く使用されているツールを使用して、複数のリモートLinuxサーバーで同時にコマンドを実行する方法を説明しました。同じ目的のためのツールで、この記事に含まれていないものを知っている場合は、以下のコメントフォームからお知らせください。

関連記事: