以下のようなケースを考えましょう。 WWW は DNS ラウンドロビンなりする前提で同じコンテンツのものを 複数台用意するわけですわ。 そして、もちろん金がない場合を考えています ;)
| | | www1 www2 www3 ... | | | ----------- | ftp server(この絵は概念的に分解されたものなので、 現実的には同一マシンで www 兼 ftp サーバかもしれないことに注意)
ここで ftp サーバはインターネット上からのデータ授受のために用意される ものです。サーバ管理者以外はこれらのホスト群に入ることはできません。 (www というサービス以外での)唯一の穴がこの ftp です。 この部分は厳重に隔離/防衛する必要があります。
お金がうん千万もある場合はきっと
| | | www1 www2 www3 ... | | | ---------------- NFS (NetAPP とか) | ftp serverとかして、ftp から NFS サーバ、WWW も NFS サーバを見る ようにするんだろうけどなぁ〜
ftpd が受けとったデータは www1 のデータエリアに直接書く。 www2 へは N 分に一回 rsync か rdist でシンクロするように設定。
| | |------| www1 www2 | → ↑| | ftp server
問題点は N 分に一回で〜すと言い切れるかどうかだ。
現実には、プレスリリースに合わせてコンテンツをアップデートしたいからと いう人もいるだろう。 こういう場合、この ftp 遅延シンクロ方式だと複数台のシンクロの途中のた め、時間帯と round robin の具合によっては更新前/後どちらか一方が見えて しまうところが問題なわけです。
どうしても時間を気にする人は dual 構成を使わないでいてもらうのが吉です な、わっはっはっは。
ftpd が動いたら queue に入れる。 別途 queue を見張る daemon が、それをみてシンクロ処理をスタートさせる。 queue の監視のインターバルを N 分と設定する。
正確には、シンクロの転送時間を考慮し、 "N - 転送時間" を想定したインターバルが望ましい。
もちろん、ログを見れば分かるのだが、 queue を作りたいので、 特定のディレクトリなりに時刻とともに順番に ftp が動いた(コンテンツが更新されたかも知れない)という記録が残ることが 望ましい。
最も簡単な手は tcp_wrapper だ :-) /etc/hosts.allow で
ftpd: ALL: spawn ( ディレクトリに書く… )などとすれば OK じゃん
[1] | そら、エヴァのタイトルだろが〜 |
Copyright (C) 1993-2025 Ken'ichi Fukamachi mail:< fukachan at fml.org >