分散サーバの運用管理ツールとしてpdshを導入してみた

なんとか、会社のアウトプットも先が見えてきたので、久しぶりのブログ。
最近はもっぱらインフラばっかりです。現在、スケールアウトができる体制を構築中で、構成については、ほぼ固まってきた。

あとは、運用ということで、複数台サーバを運用するのに、省力で対応することを考えていたところ、Funcやpuppetの導入も考えたけど、システム管理ツールとしては、rubyのものが多い気がしました。rubyを今から覚えるのも大変だし、他の人にそれを強いるのもなぁーということで学習コストと、そこまでやる必要ないだろうということで、複数のリモートマシンに対してコマンドを同時に実行できればいいじゃんということになり、Google先生に聞いて見た所、見事にヒット。
1つのシェルから複数のSSHセッションを同時に実行するツール3種類を試す

ここから、いろいろ調べてみました。
見つかったのが、以下の一覧。

Parallel ssh
Cluster SSH
ClusterIt
dsh
PyDSH
GXP
pdsh

他にはこんなのがあった。Svengali

で、最初はPyDSHを考えてたんだけど、pdshが調べてみるとヨサゲなので、そちらを選定。

インストールは、READMEで見てたけど、以下のページがすごい良くまとまってました。 http://red.ap.teacup.com/quitada/2.html

ただ、同じようにするとエラーが出たので、その作業メモと、事象報告を。

wget http://sourceforge.net/projects/pdsh/files/pdsh/pdsh-2.18/pdsh-2.18-1.src.rpm/download

rpm -ivh pdsh-2.18-1.src.rpm

rpmbuild -ba /usr/src/redhat/SPECS/pdsh.spec

ここまでは一緒で。rpmbuildした後に全部インストールすると、以下のエラーが表示されてしまう。

pdsh
failed to install module options for "misc/dshgroup"

なので、

rpm -ivh pdsh-2.18-1.x86_64.rpm pdsh-mod-machines-2.18-1.x86_64.rpm pdsh-rcmd-exec-2.18-1.x86_64.rpm pdsh-rcmd-ssh-2.18-1.x86_64.rpm

のみインストールすると上記はでなくなる。dshの時の設定っぽいんだけど、よくわからない。。。知ってる人是非教えてください。

各サーバにrpmをインストールする。

あとは、ssh公開鍵の設定をしてしまえばOK。

ssh-keygen -t dsa

cat id_dsa.pub >> authorized_keys
chmod 600 authorized_keys
chmod 700 .ssh/

vim /etc/ssh/sshd_config
RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile      .ssh/authorized_keys
PasswordAuthentication no  #最初のうちはYESのままだったり。。。

各サーバには、SCPとかで鍵もってけばOK。
先に鍵を持っていく為、パスワードログインとかしちゃったり。

scp root@xxx.xxx.xxx.xxx:/root/.ssh/id_dsa /root/.ssh/

で、各サーバからsshを鍵認証でログインできるようにしたら、

pdsh -l root -R ssh -w xxx.xxx.xxx.xxx, xxx.xxx.xxx.xxx ls

とかするとコマンド発行されちゃいます♪♪
/etc/machine??とかにリスト書くと、オプションですべていけそうだけど、そこは調査中。。。

これで、良いか悪いかは別としてオペレーションサーバから各種サーバの再起動や、設定ファイルをscpやらrsyncやらで取りにくれば、分散サーバのメンテができるかなぁーっと思っています。コストの割りには効果が大きいと思っています。

デプロイについては、klab株式会社様のmakuosanとsvnPHPで組み合わせたツールを作っているところで、そちらと組み合わせることで、だいぶ融通が利くかなぁーと思ってます。めっちゃ便利です。感謝×2 m(_ _)m(デプロイはインフラエンジニアでなくても出来るようにするのが目的)

ツール作るなら、Capistrano使えよと言われそうですが、そこまでいろいろできないので、シンプルなものになります。
出来がよければ公開したいという話もしていたりします。

これが終われば、オレsqueakするんだ。。。