で複数のLinuxサーバーを管理するLinuxシステム管理者であれば、毎日担当する複数のマシンがある可能性があります。 たとえば、webサーバーのファームなど、あなたが維持しているマシンの銀行が似ているかもしれません。 一度に複数のマシンに同じコマンドを入力する必要がある場合は、SSHでそれぞれにログインして連続的に行うか、時間と労力を節約してClusterSSHのようなツールを使用することができます。
ClusterSSHは、XTermやSSHのような標準的なLinuxツールの周りのTk/Perlラッパーです。 Linux、Solaris、およびMac OS Xで実行しました。XtermとOpenSSHに加えて、PerlライブラリTk(DebianまたはUbuntuのperl-tk
)とX11::Protocol(DebianまたはUbuntuのlibx11-protocol-perl
)が必要です。
インストール
DebianまたはUbuntuシステムにClusterSSHをインストールするのは簡単です—単純なsudo apt-get install clusterssh
がそれとその依存関係をインストールします。 また、Fedoraで使用するためにパッケージ化されており、FreeBSDのportsシステムを介してインストールできます。 Appleマシンを使用している場合は、Mac OS Xで使用するためのMacPortsバージョンもあります。 もちろん、ソースからコンパイルすることもできます。
設定
ClusterSSHは、グローバル設定ファイル—/etc/clusters
、またはユーザーのホームディレクトリ内の.csshrc
というファイルを介して設定できます。 私は、同じシステム上の複数の人が選択したClusterSSHクライアントを設定できるようにするため、ユーザーレベルの構成を好む傾向があります。 どちらの場合も、ファイル形式が同じであるため、構成は簡単です。 ClusterSSHは、一つのインターフェイスを介して制御したいマシンのグループとして”クラスター”を定義します。 このことを念頭に置いて、ファイルの先頭にあるクラスターを”clusters”ブロックで列挙し、各クラスターを以下の別のセクションで説明します。
たとえば、2つのクラスターがあり、それぞれが2つのマシンで構成されているとしましょう。 “Cluster1″にはマシン”Test1″と”Test2″があり、”Cluster2″にはマシン”Test3″と”Test4″があります。 ~.csshrc
(または/etc/clusters
)制御ファイルは次のようになります:
clusters = cluster1 cluster2
cluster1=test1test2
cluster2=test3test4
メタクラスター-クラスターを参照するクラスターにすることもできます。 すべてのマシンを包含する”all”と呼ばれるクラスタを作成したい場合は、それを二つの方法で定義することができます。 まず、次のように、すべてのマシンを保持するクラスターを作成するだけです:
clusters = cluster1 cluster2 all
cluster1=test1test2
cluster2=test3test4
all=test1test2test3test4
ただし、私の推奨する方法は、他のクラスターを含むメタクラスターを使用することです:
clusters = cluster1 cluster2 all
cluster1=test1test2
cluster2=test3test4
all=cluster1cluster2
“all”クラスターをcluster1とcluster2を含むものとして呼び出すことで、これらのクラスターのいずれかが変更された場合、変更は自動的にキャプチャされるため、”all”定義を更新する必要はありません。 あなたの場合、これはあなたの時間と頭痛を節約します。csshrcファイルのサイズが大きくなります。
ClusterSSHを使用する
ClusterSSHを使用することは、SSHを単独で起動することに似ています。 単にcssh -l <username> <clustername>
を実行すると、ClusterSSHが起動し、そのクラスター上の目的のユーザーとしてログインします。 下の図では、私が自分自身として”cluster1″にログインしていることがわかります。 “CSSH”と表示された小さなウィンドウは、クラスタSSHコンソールウィンドウです。 その小さなウィンドウに入力したものは、クラスター内のすべてのマシンにエコーされます—この場合、マシン”test1″と”test2″。 ピンチでは、あなたはまた、あなたの中にないマシンにログインすることができます。csshrcファイル、単にcssh -l <username> <machinename1> <machinename2> <machinename3>
を実行することによって。
端末の1つに何かを送信したい場合は、目的のXTermをクリックしてフォーカスを切り替え、通常のようにそのウィンドウを入力するだけです。 ClusterSSHは、マシンのミックスを扱うときに本当に役立ついくつかのメニュー項目を持っています。 下の図のように、ClusterSSHコンソールの”Hosts”メニューには便利なオプションがいくつかあります。
“Retile Windows”は、手動でサイズを変更したり、何かを移動した場合にちょうどそれを行います。 実行中のClusterSSHセッションに別のマシンセットまたは別のクラスターを追加する場合は、”ホストまたはクラスターの追加”が最適です。 最後に、「ホスト」メニューの下部に各ホストが表示されます。 各ホスト名の横にあるボックスをオンまたはオフにすることで、ClusterSSHコンソールがコマンドをエコーするホストを選択できます。 これは、1回限りまたは特定の理由で1つまたは2つのホストを除外する場合に便利です。 最後のメニューオプションは、「ホスト名」と呼ばれる「送信」メニューの下にあります。 これは、各マシンのホスト名をコマンドラインにエコーするだけで、クラスター全体でホスト固有のものを構築する場合に便利です。
ClusterSSH
の注意点多くのUNIXツールと同様に、ClusterSSHは、その使用にあまり注意していない場合、恐ろしくゆがんで行く可能性があります。 私はClusterSSHの間違いが、Apache構成でタイプミスを伝播するだけで、Webサーバーの層全体を取り出すのを見てきました。 一度に複数のマシンにアクセスすることは、おそらく特権ユーザーとして、間違いが大きなコストで来ることを意味します。 注意して、Enterキーを押す前に何をしているのかを再確認してください。
結論
ClusterSSHは、構成管理システムや多数のマシンを管理する際のその他のベストプラクティスを持つことに代わるものではありません。 しかし、通常のツールセットやプロセスの外でピンチで何かをする必要がある場合、またはプロトタイプ作業をしている場合は、ClusterSSHが不可欠です。 複数のマシンで実行する必要があるタスクを実行するときに多くの時間を節約できますが、任意の電動工具と同様に、無計画に使用すると多くの