複数の Linux サーバーでコマンドを実行するための 4 つの便利なツール
この記事では、複数の Linux サーバーで同時にコマンドを実行する方法を説明します。複数のサーバー上で一連のコマンドを繰り返し実行するために設計された、広く知られているツールのいくつかの使用方法を説明します。このガイドは、通常、複数の Linux サーバーの状態を毎日チェックする必要があるシステム管理者にとって役立ちます。
この記事では、すべてのサーバーにアクセスするための SSH セットアップがすでに行われていることを前提としています。次に、複数のサーバーに同時にアクセスする場合は、すべての Linux サーバーでキーベースのパスワードなしの SSH をセットアップすることが適切です。これにより、何よりもサーバーのセキュリティが強化され、アクセスも容易になります。
こちらもお読みください: カスタム SSH 接続を構成してリモート アクセスを簡素化する方法
1. PSSH – パラレル SSH
Parallel-SSH は、オープン ソースの高速で使いやすいコマンド ライン ベースの Python ツールキットで、多数の Linux システム上で ssh を並列実行できます。これには、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 アドレスを入力します (任意の名前を付けることができます)。
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 サーバーで同時にコマンドを実行するための、オープン ソースのシンプルな並列リモート シェル ツールです。スレッドのスライディング ウィンドウを使用してリモート コマンドを実行します。
Linux マシンにPdsh をインストールするには、以下の適切なコマンドを実行します。
sudo apt install pdsh #Debian/Ubuntu
yum install pdsh #RHEL/CentOS
dnf install pdsh #Fedora 22+
複数のサーバーでコマンドを実行するには、前に説明したようにサーバーを hosts ファイルに追加します。次に、示されているように pdsh を実行します。フラグ -w
はホスト ファイルの指定に使用され、-R
はリモート コマンド モジュールの指定に使用されます (使用可能なリモート コマンド モジュールには ssh、rsh、exec、デフォルトは rsh です)。
hosts ファイルの前の ^
に注目してください。
pdsh -w ^hosts -R ssh "uptime; df -h"
上記のようにコマンド ラインで実行するリモート コマンドを指定しない場合は、pdsh が対話的に実行され、コマンドの入力を求めるプロンプトが表示され、キャリッジ リターンで終了するとコマンドが実行されます。詳細については、pdsh のマニュアル ページを参照してください。
man pdsh
3. クラスターSSH
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 をインストールしたら、サーバーのホスト名または IP アドレスをファイル /etc/anasible/hosts に追加できます。
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 サーバーでコマンドを同時に実行する方法を説明しました。この記事に記載されていない、同じ目的のツールがあることをご存知の場合は、以下のコメント フォームからお知らせください。