[HOME] [github] [twitter] [blog] [fml4] [fml8] [北海道] Powered by NetBSD and [nuinui.net] .

命題: ftpd で受けたデータを二重化しつつ格納できるか?

目的

以下のようなケースを考えましょう。 WWW は DNS ラウンドロビンなりする前提で同じコンテンツのものを 複数台用意するわけですわ。 そして、もちろん金がない場合を考えています ;)

 |    |    |
www1 www2 www3 ...
 |    |    |
 -----------
      |
    ftp server 
(この絵は概念的に分解されたものなので、 現実的には同一マシンで www 兼 ftp サーバかもしれないことに注意)

ここで ftp サーバはインターネット上からのデータ授受のために用意される ものです。サーバ管理者以外はこれらのホスト群に入ることはできません。 (www というサービス以外での)唯一の穴がこの ftp です。 この部分は厳重に隔離/防衛する必要があります。

お金がうん千万もある場合はきっと

 |    |    |
www1 www2 www3 ...
 |    |    |
 ---------------- NFS (NetAPP とか)
      |
    ftp server 
とかして、ftp から NFS サーバ、WWW も NFS サーバを見る ようにするんだろうけどなぁ〜

案 1 : 二重に書かなきゃいいじゃん :-)

ftpd が受けとったデータは www1 のデータエリアに直接書く。 www2 へは N 分に一回 rsync か rdist でシンクロするように設定。

  |      |
  |------|
 www1   www2
  |  →
↑|
  |
 ftp server 

問題点は N 分に一回で〜すと言い切れるかどうかだ。

現実には、プレスリリースに合わせてコンテンツをアップデートしたいからと いう人もいるだろう。 こういう場合、この ftp 遅延シンクロ方式だと複数台のシンクロの途中のた め、時間帯と round robin の具合によっては更新前/後どちらか一方が見えて しまうところが問題なわけです。

どうしても時間を気にする人は dual 構成を使わないでいてもらうのが吉です な、わっはっはっは。

案 1+ : 二重に書かないが、 『せめて人間らしく』 [1] じゃない N 分以内にシンクロを

ftpd が動いたら queue に入れる。 別途 queue を見張る daemon が、それをみてシンクロ処理をスタートさせる。 queue の監視のインターバルを N 分と設定する。

正確には、シンクロの転送時間を考慮し、 "N - 転送時間" を想定したインターバルが望ましい。

Q: ftpd が動いたことを知るか?

もちろん、ログを見れば分かるのだが、 queue を作りたいので、 特定のディレクトリなりに時刻とともに順番に ftp が動いた(コンテンツが更新されたかも知れない)という記録が残ることが 望ましい。

最も簡単な手は tcp_wrapper だ :-) /etc/hosts.allow で

ftpd: ALL: spawn ( ディレクトリに書く… )
などとすれば OK じゃん

Notes

[1]

そら、エヴァのタイトルだろが〜

[HOME] [github] [twitter] [blog] [fml4] [fml8] [北海道] Powered by NetBSD and [nuinui.net] .
Copyright (C) 1993-2022 Ken'ichi Fukamachi mail:< fukachan at fml.org >