この記事は、同時公開の記事「1993年のftp.iij.ad.jp」との連動記事です。合わせてお読み下さい。

縁の下の力持ち、公開ftpサーバ

皆さんが自宅のPCにインストールしたりクラウドで使っているLinux。インストールのためにDVDイメージファイルをダウンロードしてDVD-Rに書き込んだことがある人も少なくないと思います。

また、インストール後に新しいアプリケーションを追加するときには、yum install <アプリケーション名>(CentOSの場合)などと入力するだけで、パッケージファイルがダウンロードされてインストールが行われます。

さて、これらのファイルのダウンロード用サーバは一体だれが運用してるのでしょうか?

CentOSの場合、公式WebサイトのDVDイメージのダウンロードボタンをクリックすると、ずらずらとダウンロード用のサーバ一覧が表示されます。記事執筆時点では、以下のような一覧が表示されました。(CentOS 7、64bit版の場合)CentOSでは、ダウンロードを行う地域によって、どのサーバからダウンロードを行うかがある程度コントロールされています。今回はいくつかの日本国内のサーバが表示されました。

http://ftp.jaist.ac.jp/pub/Linux/CentOS/7.0.1406/isos/x86_64/CentOS-7.0-1406-x86_64-DVD.iso
http://ftp.tsukuba.wide.ad.jp/Linux/centos/7.0.1406/isos/x86_64/CentOS-7.0-1406-x86_64-DVD.iso
http://ftp.iij.ad.jp/pub/linux/centos/7.0.1406/isos/x86_64/CentOS-7.0-1406-x86_64-DVD.iso
http://www.ftp.ne.jp/Linux/packages/CentOS/7.0.1406/isos/x86_64/CentOS-7.0-1406-x86_64-DVD.iso
http://ftp.riken.jp/Linux/centos/7.0.1406/isos/x86_64/CentOS-7.0-1406-x86_64-DVD.iso
(以下省略)

これはDVDイメージファイルのダウンロード元ですが、アプリケーションのインストール時にも同じような方法でダウンロード元のサーバが選択され、パッケージファイルがダウンロードされます。

ここに並んだサーバたち、実はいずれも「公開ftpサーバ」と呼ばれるものです。1これらのサーバは、CentOSを開発しているコミュニティが提供しているのではなく、大学や研究機関、ISPなどの企業が無償で提供しています。CentOSではアプリケーションのインストールやアップデートをしようとすると、これらの公開サーバの中のいずれかから、2パッケージがダウンロードされ、インストールが行われるようになっています。

このように多数の公開ftpサーバにダウンロード元を振り分けることで、CentOSを開発しているコミュニティが強力なサーバを持っていなくても、各地の公開ftpサーバの力を借りて、大勢の利用者にパッケージファイルを提供できるのです。同じようなしくみは各種LinuxディストリビューションやFreeBSDなど、BSD系のOSでも使われています。

先ほどの一覧にも含まれていたftp.iij.ad.jpは、IIJが提供する公開ftpサーバです。IIJは、例に挙げたCentOSを初めとして、各種Linux・BSDや、その他のオープンソースソフトウェアを配布するための、公開ftpサーバを提供しています。

ftp.iij.ad.jpで配布している主なソフトウェア
FreeBSD Linux Kernel GNU Project Perl (CPAN)
NetBSD CentOS Apache Project Ruby
OpenBSD Fedora sourceforge.jp Cygwin
GNOME Gentoo Linux RepoForge ISC(BIND)
KDE Ubuntu Linux MySQL OpenVZ
X.org Momonga Linux PostgreSQL and etc…

ftp.iij.ad.jpのご利用について

  • ftp.iij.ad.jpは、インターネットをご利用の皆さんに無償でサービスを提供しています。IIJとご契約のない方でも、どなたでもご利用頂けます。
  • 利用できるプロトコルは http, ftp, rsyncです。
  • ftp.iij.ad.jpのコンテンツの一部をさらにミラーリングする場合は、rsyncプロトコルの利用を検討して下さい。
  • ftp.iij.ad.jpの運営上支障になるような過度のアクセスがあった場合、特定の接続元からのアクセスを拒否する場合があります。

少し前の話になりますが、2014年1月にftp.iij.ad.jpの機材をリニューアルしました。この記事ではリニューアル前後のftp.iij.ad.jpのサーバ構成について取り上げます。

2007年版、ftp.iij.ad.jp

さて、このftp.iij.ad.jp、歴史的経緯から「ftpサーバ」と呼んではいますが、ftp以外にhttpやrsyncプロトコルでもアクセスが可能です。むしろ、現在ではftpよりhttpでの利用の方が多くなっています。

そのため、基本的なサーバの構成は、画像などコンテンツ配信用のWebサーバに似ています。ですが、一般的な画像サーバとは異なる、オープンソースソフトウェアの配布ならではの事情もあります。そのあたりの苦労を見るため、まずは2007年頃から2013年末まで利用されていた、先代の機材を紹介しましょう。

2007年~2013年のftp.iij.ad.jp
2007年~2013年のftp.iij.ad.jp

ポイントはセッション数

公開ftpサーバには、例えばインストール用のDVDイメージなど極端に大きなファイルが存在します。また、それ以外のファイルでも、例えばアプリケーションのパッケージのように、HTMLや画像ファイルと比べるとサイズが大きいものが中心です。このようにファイルサイズが大きくなると、ファイルの転送を開始してから終了するまでの時間が長くなり、サーバに同時に接続しているセッション数が多くなります。

セッション数が多くなると、サーバのCPUやメモリリソースが圧迫されることにより、ネットワークインターフェースに余裕があったとしても、十分な通信速度が出せない事があります。これが、一般的なWebサーバと公開ftpサーバの異なる点です。

この問題に対して、2007年版のftp.iij.ad.jpでは、サーバ上のファイルをhttpやftpで配信するためのフロントサーバを多数設置することで対応しました。サーバの台数を増やせば、一度に対応できるセッション数も増やせるという単純な話です。

同時接続に対する異なるアプローチ

ところで、公開ftpサーバ界で有名なftp.jaist.ac.jpでは、マルチスレッド(並列実行)性能の高いUltra SPARC T1プロセッサとSolarisを使うことで、一台のサーバで大量のセッションを処理しています。これは一般的なx86プロセッサとLinuxを使用した安価なサーバを並べた2007年版のftp.iij.ad.jpとは正反対の考え方です。

大量のコンテンツの保有と、集中的なアクセス

公開ftpサーバで保持しているコンテンツは非常に大量です。そのため、先代のftp.iij.ad.jpでは、コンテンツの保存用に8TBのRAIDシステム2台をSCSIで接続して利用していました。3

ところが、先ほどの説明の通り、ftp.iij.ad.jpのフロントサーバは多数存在します。それらのサーバすべてにRAIDシステムを接続することはコスト的に不可能ですので、RAIDは特定のサーバに接続してそれをネットワークで共有(NFSマウント)していました。ですが、このような構成を取ると、フロントサーバとNFSサーバの間のネットワークがボトルネックになってしまいます。

ボトルネック
ボトルネック

ftp.iij.ad.jpの場合、フロントサーバとNFSサーバの間の通信はほぼ読み込みしか発生しません。また、コンテンツの量は大量ですが、集中的にアクセスされるファイルは偏りがあるため、各フロントサーバのメモリキャッシュがある程度有効に機能します。また、そもそも平常時のトラフィックはそれほど大きくなかったため、この構成でも対応可能でした。しかし、Linuxディストリビューションのリリース直後など、多数のアクセスが見込まれる場合は、サイズの大きいインストール用のDVDイメージファイルを各フロントサーバにコピーしてNFSへのトラフィックを減らすなど、ボトルネックを回避する為の手動対応が必要でした。

2014年リニューアル版、ftp.iij.ad.jp

先代の機材も設置から6年を過ぎて、流石に性能上の限界が見えてきました。4前述の通り、フロントサーバを複数並べる手法でセッション数の問題はある程度解決していましたが、やはりNFSのボトルネック問題もありこのまま台数を増やしてスケールアウトさせるのも現実的ではありません。ディスク容量も今となっては手狭です。

そこで、2014年1月にftp.iij.ad.jpの全面的なリニューアルを実施しました。

シンプルになった機材

2014年のftp.iij.ad.jp
2014年のftp.iij.ad.jp
ftp.iij.ad.jpのハードウェア比較
1993年版(別記事) 2014年版
cpu SPARC 40MHz Intel Xeon 2.1GHz 6core(12thread) * 2
memory 64MBytes 256GBytes
network 10base-5 (10Mbps) 10Gbase-T (10Gbps)
storage 約7.6GB 約58TB
drive HDD 1GB * 2, 2GB * 4 HDD 4TB * 20, SSD 1TB * 4, SSD 512GB * 2

2014年版の機材は、シンプルにホスト1台です。最近のサーバの性能は圧倒的で、いままで複数台で構成していたトラフィックをホスト1台で十分にまかなえてしまったのです。

もちろん従来のトラフィックをまかなうだけでなく、それ以上の改善もあります。配信コンテンツを保存するストレージは実効容量で約58TBあり、今までストレージの容量不足で提供できなかったソフトウェアも配信できるようになりました。また、配信用のネットワークインターフェースも10Gbpsになり、より多くのリクエストにも応えられます。

10Gbpsのインターフェースに10GBase-Tを採用

サーバに取り付けられているネットワークインターフェースには、光ファイバーを使うものと、銅線を使うものがあります。高速な通信を行うインターフェースでは光ファイバーの方が普及しているのですが、銅線を使ったインターフェースの方がコストメリットがあるため、今後サーバ周りで主力として使われることが期待されています。

2014年版ftp.iij.ad.jpで採用した10GBase-Tも、銅線を使ったインターフェースです。10GBase-Tが実運用の環境下でどの程度のパフォーマンスを出せるのか、テストの意味も込めて採用しました。

この新しい機材で運用が始まって既に6ヶ月が経過しています。今のところこの機材を埋めるほどのトラフィックは来ていません。まだ真の実力を出し切れていない状態です。圧倒的なトラフィックに耐えてこそ、設備をリニューアルした甲斐があるというもの。是非新しいftp.iij.ad.jpをご利用下さい。

なお、機材の強化はこれで終わりにするつもりはありません。ソフトウェアのチューニングも行いますし、ハードウェアに不足があるようであれば、さらなる拡張も考えています。

次の取り組みは……

機材のリニューアルによって一息ついたftp.iij.ad.jpですが、次の展開も考えています。

配信コンテンツの追加

いままでストレージ容量の制限で配信していなかったコンテンツ、例えば新しいLinuxディストリビューションの追加を行いたいと考えています。他にも利用頻度の高いコンテンツがあれば、追加を考えます。

ftp.iij.ad.jpの東西冗長化

冒頭でも紹介したとおり、公開ftpサーバはLinuxディストリビューションを支えるしくみの一部として利用されています。各ディストリビューションとも、インストールに使うftpサーバは複数登録されているので、そのうち一台がサービスを停止していたとしてもOSの運用に即座に問題が出ると言うことはありません。ですが、近場のftpサーバが停止したため海外のftpサーバを利用するようなことになると、ダウンロード速度が遅くなったりと、快適さが低下します。

そこで、ftp.iij.ad.jpではサービスの安定性を高めるために、東西2箇所に機材を設置することにしました。現在は、先行して関西エリアに設置した機材でサービスを提供しています。引き続き整備を進め、関東エリアでも機材を立ち上げ、将来的にはftp.iij.ad.jpの名前でアクセスすれば、関東・関西いずれかのサーバに自動的に誘導されるようなしくみを構築します。

このように地理的に2箇所に機材を分散させることで、単なるサーバの故障だけでなく、データセンターの電源トラブルやバックボーンネットワークの大規模なトラブルが起こったとしても、公開ftpサーバが影響を受けにくくする事ができます。これは、国内に多数の拠点を持つIIJならではの取り組みだと考えています。5

東西冗長化
東西冗長化

かつては日本でも多くのISPや大学・研究機関が公開ftpサーバを提供していましたが、最近はサーバの公開を止めてしまったところも少なくないようです。

別記事でも紹介しましたが、ftp.iij.ad.jpは(少なくとも)1993年にはサービスを開始しています。それから20年以上、何度かの設備の入れ替えを行いながら、表面上は淡々とサービスを提供してきました。今まで表だって紹介することはあまりありませんでしたが、ftp.iij.ad.jpもIIJの大切なパブリックサービスの一つだと考えています。

IIJでは、これからも引き続きftp.iij.ad.jpを粛々と提供し続けて行きます。


CentOS 7公開に寄せて

2014年7月8日にCentOSの新バージョンが公開されました。公開直後に各所の公開ftpサーバにアクセスが殺到し、いくつかのサーバの動作が不安定になるという事態が発生していました。幸い、ftp.iij.ad.jpは設備のリニューアルのおかげで能力に余裕があったのですが、IIJでCentOSのミラーをしていると言うことのPRが足りておらず、トラフィックをあまり引き受けることができませんでした。本文にもありますが、ftp.iij.ad.jpは今後も継続して運用してゆきますので、皆さんの馴染みのサーバとして記憶の中に追加して頂ければと思っています。

2014年7月8日 6:00~のトラフィックグラフ
2014年7月8日 6:00~のトラフィックグラフ

この記事は、2014年1月の機材リニューアルを受け、春頃にblogで公開するつもりで書き進めていました。執筆者(堂前)の事情により、公開が延び延びになっていたのですが、この状況をうけ、急遽加筆修正して記事を公開することにいたしました。

この記事は、同時公開の記事「1993年のftp.iij.ad.jp」との連動記事です。合わせてお読み下さい。


おことわり

  • ftp.iij.ad.jpの運営には最善を尽くしていますが、やむを得ぬ理由により一時的にサービスを中断することがあります。
  • ftp.iij.ad.jpで提供するコンテンツは、各ソフトウェア開発元が公開するものの複製です。新しく公開されたコンテンツの複製作業は随時行っていますが、タイミングよっては複製が完了していなかったり、内容に矛盾が生じる可能性があります。
  • IIJではコンテンツの内容についてのご質問は受け付けていません。
  • ftp.iij.ad.jpの利用や、利用できなかったことにより引き起こされた損失、損害については一切の責任を負いません。
  1. 「Anonymous ftp server」や「public mirror server」という呼び方の方が古くから使われていますが、この記事では「公開ftpサーバ」という呼び方で統一します。 []
  2. 標準の設定では公開ftpサーバが利用されます。設定を変更することで、自分で用意したサーバを利用することも可能です。 []
  3. 8TBというと、今ではそれほど大きくは感じませんが、2007年当時としてはそこそこの容量でした。 []
  4. そもそも以前の機材が古くなりすぎ、保守を維持できなくなったこともあります。 []
  5. 海外拠点も考えたいですが、それはもう少し先の話になりそうです []