ClusterShellとは
ClusterShellとは,公式の言葉を借りる(訳す)と「LinuxやBSDで構築されたクラスタ管理を支援する軽量で統一されたコマンド実行用のPythonフレームワーク」です.簡単に説明すると,クラスタの管理を容易にするためのツールです.
複数のLinuxマシン(特にクラスタ)を管理している場合,同じコマンドを複数台で実行することが多々あります.その際に,それぞれのマシンにログインし,コマンドを実行すると非効率なうえ,人為的なミスが生じやすいです.
ClusterShellは,複数台マシンに対しコマンドを一括で実行することができ,クラスタの管理が容易にすることができるツールです.
もちろん,ClusterShellを使用せずにSSH経由で複数台マシンにコマンド実行するスクリプトを作成するなども考えられますが,メンテナンス性の問題や属人化するといった問題点が挙げられます.
また,ClusterShellはマシンごとやグループごとにコマンド実行などさまざま便利な機能が用意されていることもメリットです.
ClusterShellの導入
インストール
まず,各マシンにOpenSSHをインストールします.
apt install ssh
次に,ClusterShellをインストールします.
apt install clustershell
インストールが完了していれば,下記コマンドでバージョンを確認できます.
clush --version
clush 1.8.3
公開鍵の設定
マスターノードで,パスフレーズなしの公開鍵を作成します.
ssh-keygen -t ed25519 -N '' -C '' -f ${HOME}/.ssh/clush_key
スレーブノードに公開鍵をコピーします.
ssh-copy-id -i .ssh/clush_key.pub <user>@<IP addr>
SSH認証にデフォルトで秘密鍵を使用するため,ssh-addコマンドで秘密鍵を登録します.
ssh-add ${HOME}/.ssh/clush_key
ssh-addコマンドでCould not open a connection to your authentication agent.
というエラーが表示される場合があります.
ssh-addコマンドを利用するためには,ssh-agentを起動しておく必要があるため下記コマンドでssh-agentを起動します.
ssh-agent bash
ClusterShellの実行方法
基本的な使い方
ホストもしくはIPアドレスを指定し,実行
下記コマンドがClusterShellの実行例です.-w
オプションで接続先のIPアドレスもしくはホスト名を指定します
clush -w 192.168.145.170,192.168.145.171,192.168.145.172 hostname
192.168.145.170: master
192.168.145.171: slave-1
192.168.145.172: slave-2
IPアドレスの指定は下記のように連番を指定することも可能です.
clush -w 192.168.145.[170-172] hostname
192.168.145.170: master
192.168.145.171: slave-1
192.168.145.172: slave-2
グループの設定し,グループごとにコマンドを実行
いちいちマシンのIPアドレスやホスト名を入力するのは面倒です.マシンをグループでまとめることで,グループ名をもとにコマンドを実行することが可能です.
ここでは,例としてallとslaveというグループを作成します.
グループの設定はlocal.cfg
というファイルで設定できます.
/etc/clustershell/groups.d/local.cfg
...
+ all:192.168.145.170,192.168.145.171,192.168.145.172
+ slave:192.168.145.171,192.168.145.172
・グループallに対して実行
clush -g all hostname
192.168.145.170: head
192.168.145.171: slave-1
192.168.145.172: slave-2
・グループslaveに対して実行
clush -g slave hostname
192.168.145.171: slave-1
192.168.145.172: slave-2