複数台のサーバーを管理されている方へ
インフラ屋のみなさん、今日も可愛いサーバーたちの子守をしてますでしょうか。
大規模 or 複数のプロジェクトのサーバー管理となると大変ですよね(小並)。
特に複数サーバーのログを収集する時やソースの反映時など。
今回はそんな悩みを解決するツールを紹介します。
目次
GNU Parallel
並列でコマンドを実行できるらしい。
導入方法
※筆者はMac版しか試してません。。。。
Mac(Homebrew)
$ brew install parallel
yum使える環境
$ yum install -y parallel
## 実行時は「--gnu」オプションをつける
$ parallel --gnu echo ::: hoge
それ以外の環境
## 執筆時点の最新版をここから(ftp://ftp.gnu.org/gnu/parallel/)ダウンロード
$ wget ftp://ftp.gnu.org/gnu/parallel/parallel-最新版.tar.bz2
$ tar xvjf parallel-最新版.tar.bz2
$ cd parallel-最新版
$ ./configure
$ make
$ sudo make install
使い方
複数のサーバーからSCP経由でファイル取得(転送も可)
scp_webserver.sh
# !/bin/bash
## リモートのログファイルをローカルへ(scp)
parallel -j+0 scp -i ~/.ssh/hogehoge.pem {}:~/ログファイルのパス ./logs/ :::: hostlist
上記の「hostlist」には、対象ホストのユーザー名@IPアドレス
が記載されてます。
hostlist
hoge@xx.xx.xx.xx
piyo@yy.yy.yy.yy
複数のサーバーでgit clone
gitclone.sh
# !/bin/bash
## 対象ホストにSSHログインして複数のコマンドを実行できる
parallel -j+0 ssh -i ~/.ssh/hogehoge.pem {} '"
mkdir -p ~/contents/;
cd ~/contents/;
git clone git@github.com:fugahogepiyo/hoge.git;
"' :::: hostlist
所感・まとめ
実は僕自身、今現在はこのツールを利用してません。
過去には複数のサーバへのデプロイ作業や、アプリケーションログの収集などに利用していた時期もありました。
しかし現在では、デプロイツールが優秀であったり、そもそもログはfluentdで収集していたりなどで並列化する必要性が薄くなってしまいました。
「こういう技術があって、こういう使い方ができる」と考えていただければ幸いです。
参考リンク
http://gitpub.hatenablog.com/entry/2015/03/25/211652
http://bicycle1885.hatenablog.com/entry/2014/08/10/143612