« ソフトウェア資産管理について考える | Main | 続:複数WEBサーバへの最新ソースコード配信方法 »

December 22, 2006

複数WEBサーバへの最新ソースコード配信方法

WEBサーバを数台用意して負荷分散している会社が多いと思います。このような場合必ず悩むのが、どうやって複数WEBサーバへ最新ソースコードを配信するかだと思います。そこで今回はソースコードを複数サーバにコピーする方法について述べてみたいと思います。

【その前にネットワーク確認】
まずはネットワークを確認したいと思います。ほとんどの会社は図1のような感じだと思いますが、安全性を考えればできれば図2のレベルまで持って行きたいところです。

Staging1
図1

Staging2
図2

【ステージングサーバを用意しよう】
次に押さえたいのがステージングサーバです。小さな会社ではWEB1にまずは最新ソースを置いて、そこから他のサーバにコピーする方法を取っているかもしれません。しかしいろいろな意味で配信専用のステージングサーバを別途用意することをお勧めします。ステージングサーバを用意することのメリットは

 1.ステージングサーバもWEBサーバと同じ設定をしておけば上で配信前の最後の最後にテストができる。
   →PCのhostsファイルに、サービス用FQDNをステージングサーバのIPで書くなどの方法でテスト可能。

 2.本番サーバとステージング用サーバで別々の権限設定ができる。
   →本番サーバにはシステム管理者しかアクセスできないが、ステージングは開発責任者以上とか。

 3.その他企業秘密で書けないけどやってみないとわからないメリットたくさん。

※ただしあまりに便利なステージングサーバ。死亡すると結構業務に支障が出るのでハードウェアはいいもの使ったほうがよいと思います。

【ソースコードを配信するためのコマンド】
興味があっていろいろな人に聞いてみましたが、UNIX/Linux系だとrsync、Windows系だとrobocopy.exeがとてもよく使われるようです(私も基本的にはそうです)。

rsyncはSSHを使った配信もできる反面、暗号化しながら送るので配信にとても時間がかかるというデメリットもあります。rsyncを使ったサンプルは以下のような感じです。


rsync -aurz -e ssh /var/www 192.168.0.101:/var/www

robocopy.exeはWindows2000のリソースキットに付いています。Windows2003のリソースキットに付いているかは知りませんが、Windows2000のrobocopy.exeがWindows2003で動くことは確認しています。robocopy.exeを使ったサンプルは以下のような感じです。まあシンプルですよね。


@echo off
REM robocopy /E /XO G:\ F:\

SET SRC_PATH=D:\www\src

CD D:\www\src

ECHO WEB1
D:\bin\robocopy.exe /E /XO /W:3 %SRC_PATH% \\192.168.0.101\src >> d:\Logs\logfile_WEB1.txt

ECHO WEB2
D:\bin\robocopy.exe /E /XO /W:3 %SRC_PATH% \\192.168.0.102\src >> d:\Logs\logfile_WEB2.txt

ECHO WEB3
D:\bin\robocopy.exe /E /XO /W:3 %SRC_PATH% \\192.168.0.103\src >> d:\Logs\logfile_WEB3.txt



双方のコマンドを利用するときの注意としては、「送信元にはあって送信先にないファイルを全て削除する」というオプションを付けると、配信時にコマンド入力を間違えると送信先のファイルが全部消えてしまうことがあります。この事故はとてもよく起こるので注意しましょう。



|

« ソフトウェア資産管理について考える | Main | 続:複数WEBサーバへの最新ソースコード配信方法 »

WEBサーバ 【人気】」カテゴリの記事

Comments

rsyncが遅いのはssh使うせいじゃないですよ。
僕も昔その疑問もって試してみたんですけど、
例えば ssh経由でtarしたりすると、rsh経由の場合とでもあんまり変わらないんですよ。10%も増えない。
rsyncそのものが比較とかまじめにやりすぎるから遅いみたい。

Posted by: とおやま | December 27, 2006 at 12:09 AM

とおやまくん、お久しぶりです。

へ~そうなのかあ。今度改めて実験してみます。

Posted by: sanonosa | December 27, 2006 at 10:24 AM

Post a comment



(Not displayed with comment.)




TrackBack

TrackBack URL for this entry:
http://app.cocolog-nifty.com/t/trackback/32004/13161379

Listed below are links to weblogs that reference 複数WEBサーバへの最新ソースコード配信方法:

« ソフトウェア資産管理について考える | Main | 続:複数WEBサーバへの最新ソースコード配信方法 »