複数台のサーバでの運用

ちょっと仕事の話でも

今、ASP(アプリケーションサービスプロバイダ)としてシステムを提供している。
サーバはデータセンタにおいていて、サーバの台数は20台ぐらいかな?
ほぼ全てのサーバの構成は同じ。

動いているシステム、アプリも同じ。

そして社内のイントラに契約していただいているクライアントのサーバ情報等を管理しているシステムがある。

毎朝5時に社内のシステムからサーバ情報を必要なものをピックアップして
更新システムの設定ファイルを書き出している。

書き出した設定ファイルはrsyncでデータセンタの開発サーバにコピーされる

そして僕たちえんじにあが出社してきて、お客様からの要望やバグの指摘などを受けて、ファイルを更新したりする。

更新したファイルを列挙した設定ファイルを用意し、自前の更新スクリプトを用いてテストサーバに反映する。
テストサーバで動作を確認し、問題ないようであれば更新スクリプトで各お客様のサーバに反映する。

この更新スクリプトで使われている、各サーバ、クライアントの情報を作っているのが最初に説明した社内から投げられる設定ファイルだ。

この設定ファイルはファイルの更新リストだけではなく、その他自前ツールの設定ファイルを色々書き出している。

各サイトの利用状況を確認するためのツールの設定ファイルとか、さっき説明したファイルの更新用スクリプトの設定ファイル、DBの更新用スクリプトの設定ファイル、そして自前で作った稼動状況確認ツール用の設定ファイルなど。

稼動状況の確認に関しては、各サーバ別でもプロセスを監視してデーモンが起動していなかったら起動したり、アラートメールを飛ばすようなツールを入れている。
これはmonitというツールを利用。

その他は全て僕が作った更新用のスクリプト
bashPHPで作っている。
CLIなんで別にPerlでも良かったんだけど・・・

複数台のサーバで同じ内容のプログラムが動いている場合、更新がめんどくさいのでこういったツールを作った。
結構便利。
と、言うかないと死ねる。

でも、各サーバの設定を変更するのがめんどくさい。
わざわざログインして適切なユーザになってコマンド叩いて確認して、設定変更して、Apacheデーモンをgracefulして・・・とか。

20台とかめんどくさい。
と、なるとこれも開発サーバから一括で各サーバの設定を変えれないだろうかと画策中。
現状思いついているのは
各サーバで短い間隔で実行されるbashを用意(デーモンでもいいし、cronでもいい)
そのbashから設定ファイルを読み込む
そのbashは実行終了時に設定ファイルを削除、もしくは空のファイルに変更
開発サーバより実行したいbashを.shファイルとして作成し、更新用スクリプトを実行して各サーバにrsyncでファイルを転送
転送先はもちろん各サーバで実行されるbashが読み込む設定ファイル

とか考えてるんだけどちょっと危ないかなぁとかも思ったり。

あ、もちろんデータセンタには外部からのsshとかでのアクセスはできませんよ。
会社のIPのみからアクセスできるようになってる。

最悪今の台数なら手で作業できるけど、100台200台になったらどうすんだと。