導入

グローバルなデータネットワークの利用は日常生活の一部となりました。インターネットユーザーは日常生活の基盤の上で数10億ものドキュメントやペタバイトのデータを世界の隅から隅へリクエストします。情報はフリーで、豊富で、入手しやすいものです。不幸なことに、グローバルデータネットワーキングは過負荷なサーバーや混雑したネットワークと格闘している IT 専門家にとっては悪夢です。増え続けるデータ需要を絶えず、期待通りに動くように対応することはチャレンジングなことです。

Traffic Server はハイパフォーマンスなウェブプロキシーキャッシュであり、それはネットワークの端で頻繁にアクセスされる情報をキャッシュすることによりネットワーク効率とパフォーマンスを改善します。これは物理的に近いエンドユーザーにコンテンツを運ぶ一方で、素早い提供と帯域使用量の削減を可能にします。Traffic Server は商用のコンテンツ配信やインターネットサービスプロバイダー( ISP )やバックボーンプロバイダーや巨大なイントラネットを現行の利用可能な帯域を最大化することで改善するようにデザインされています。

Traffic Server デプロイメントオプション

必要に応じて、Traffic Server はいくつかの方法で配置することができます。

  • ウェブプロキシーキャッシュとして
  • リバースプロキシーとして
  • キャッシュ階層の一部として

次のセクションではこれらの Traffic Server のデプロイメントオプションの概要を説明します。これらのすべてのプションで Traffic Server は シングルインスタンス としても マルチノードクラスター としても動作することを覚えておいて下さい。

ウェブプロキシーキャッシュとしての Traffic Server

ウェブプロキシーキャッシュとして Traffic Server はウェブコンテンツへのユーザーリクエストを受け取り、宛先のウェブサーバー(オリジンサーバー)へ届けます。Traffic Server がリクエストされたコンテンツを持っている場合、そのコンテンツを直接配信します。リクエストされたコンテンツがキャッシュから使えない場合、Traffic Server はプロキシーとして振る舞います。つまり、コンテンツをユーザーに代わってコンテンツを取得し、また将来のリクエストを満たすためにコピーを保持します。

Traffic Server は明確なプロキシーキャッシュを提供します。この場合ユーザーのクライアントソフトウェアは Traffic Server に直接リクエストを送るように設定されていなければなりません。明確なプロキシーキャッシュについては 明示的なプロキシーキャッシュ の章で述べています。

Traffic Server は透過キャッシュプロキシサーバとしても採用でき、クライアントソフトウェアに特別な設定をする必要も、プロキシの存在についての知識すらもありません。この設定は 透過的なプロキシー の章で説明されています。

リバースプロキシーとしての Traffic Server

リバースプロキシーとして Traffc Server はユーザーが接続しようとするオリジンサーバーとして設定されています。(一般的に、オリジンサーバーとして公開されたホスト名は Traffic Server に解決され、実際のオリジンサーバーのように振る舞います。)リバースプロキシー機能はサーバーアクセラレーションとも呼ばれます。リバースプロキシーは リバースプロキシーと HTTP リダイレクト で詳しく述べられています。

キャッシュ階層での Traffic Server

Traffic Server は柔軟にキャッシュヒエラルキーに参加することができます。その中で1つのキャッシュからは満たされないインターネットリクエストは他の局地的なキャッシュに送られます。プロキシーサーバーの階層の中で Traffic Server は他のTraffic Server システムや似たキャッシングプロダクトの親や子として振る舞います。

Deployment Limitations

Traffic Server がサポートしていないデプロイメントオプションがいくつかあります。そのような機能はプラグインで実装されていることもあります。またいくつかの場合 Traffic Server の内部的な API やアーキテクチャ的な制限が実装を難しくしていることもあります。

  • Load Balancing - note that there is an experimental plugin for this, Balancer Plugin.

Traffic Server Components

Traffic Server は簡単に監視や設定が行えるウェブプロキシーキャッシュを構成するために協力するいくつかのコンポーネントから成り立っています。

The Traffic Server Cache

Traffic Server キャッシュはオブジェクトストアと呼ばれるハイスピードオブジェクトデータベースによって構成されます。オブジェクトは URL と関連するヘッダーに基づいたインデックスオブジェクトを保存します。洗練されたオブジェクト管理により、オブジェクトストアは同じオブジェクトの(言語やエンコーディングタイプなどが)異なるバージョンをキャッシュすることができます。これは無駄なスペースを最小化することによって、とても小さかったり、大きかったりするオブジェクトを効率的に保存することもできます。キャッシュがいっぱいになった場合、Traffic Server は最もリクエストされるオブジェクトがすぐに利用可能で新しい状態であることを保証するために、古いデータを削除します。

Traffic Server はすべてのキャッシュディスクのあらゆるディスク不良を許容するようにデザインされています。完全にディスクが壊れてしまった場合、Traffic Server はそのディスクを破損したと印をつけ、残りのディスクを使い続けます。すべてのディスクが壊れた場合、Traffic Server は proxy-only モードに切り替わります。特定のプロトコルやオリジンサーバーのデータを保存するための一定のディスクスペースを予約するためにキャッシュを分割することができます。キャッシュに関するより詳しい情報は HTTP プロキシーキャッシュ を参照してください。

The RAM Cache

Traffic Server はとても頻繁にアクセスされるオブジェクトを含む小さな RAM キャッシュを持っています。特に一時的なトラフィックのピークの間に、この RAM キャッシュは最もポピュラーなオブジェクトを可能な限り速く提供し、ディスクからのロードを減らします。この RAM キャッシュのサイズは必要な量に設定することができます。より詳しい情報は RAM キャッシュのサイズの変更 を参照してください。

The Host Database

Traffic Server は Traffic Server がユーザーリクエストを満たすために接続するオリジンサーバーのドメインネームサーバー(DNS) のエントリを保存するデーターベースをホストします。この情報は将来のプロトコルインタラクションへの対応とパフォーマンスの最適化のために使われます。加えて、ホストデータベースは次の情報を保存します。

  • DNS 情報(ホストネームから IP アドレスを高速に引くため)。
  • 各ホストの HTTP バージョン(最新のプロトコルの機能はモダンなサーバーで使われているかもしれないため)。
  • 信頼性と可用性の情報(ユーザーが起動していないサーバーを待つことがないように)。

The DNS Resolver

Traffic Server はホスト名から IP アドレスへの変換を統合するために、高速で非同期な DNS リゾルバも含んでいます。Traffic Server は遅くて月並みなリゾルバライブラリに渡すよりも、直接 DNS コマンドパケットを渡すことによって、DNS リゾルバをネイティブに実行します。多くの DNS クエリが並列で渡され、高速な DNS キャッシュがポピュラーなバインディングをメモリに保存することにより、DNS トラフィックは減ります。

Traffic Server Processes

Traffic Server は 3 つのプロセスから構成されます。それらはリクエストを返し、システムの状態を管理、制御、監視するために協調して動きます。

  • traffic_server プロセスは Traffic Server のトランザクションプロセッシングエンジンです。コネクションをアクセプトしたり、プロトコルリクエストを処理したり、キャッシュやオリジンサーバーからドキュメントを提供することに責任を持ちます。

  • traffic_manager プロセスは Traffic Server への命令と管理機能です。起動や監視と traffic_server プロセスを再設定したりすることに責任を持ちます。 traffic_manager プロセスはプロキシオートコンフィギュレーションポートや統計のインターフェイスやクラスター管理とバーチャル IP フェイルオーバーについても責任を持ちます。

    traffic_manager プロセスが traffic_server プロセスが失敗していることを検知した場合、即座にプロセスを再起動するだけでなく、すべてのリクエストのコネクションキューをメンテナンスします。サーバーが完全に再起動する数秒前に到着したすべてのインカミングコネクションはコネクションキューに格納され、最初に来たものから順に処理されます。このコネクションキューはすべてのサーバーの再起動の際のダウンタイムからユーザーを守ります。

  • traffic_cop プロセスは traffic_servertraffic_manager プロセスの両方の状態をモニターします。 traffic_cop プロセスは定期的(毎分数回)に専用に用意されたウェブページを取得するハートビートリクエストを渡すことで traffic_servertraffic_manager に問い合わせます。失敗したとき(一定期間の間にレスポンスが帰って来ないときや不正なレスポンスを受け取ったとき) traffic_coptraffic_managertraffic_server プロセスを再起動します。

次の図は Traffic Server の3つのイラストです。

Illustration of the three Traffic Server Processes

Illustration of the three Traffic Server Processes

Administration Tools

Traffic Server は次の管理オプションを提供しています。

  • The traffic_ctl command-line interface is a text-based interface from which you can monitor Traffic Server performance and network traffic, as well as configure the Traffic Server system.
  • Various configuration files enable you to configure Traffic Server through a simple file-editing and signal-handling interface. Any changes you make through traffic_ctl are automatically made to the configuration files as well.
  • 最後に、多くの言語から使うことのできるクリーンな C API があります。 Traffic Server Admin Client は Perl でこのことを示しています。

Traffic Analysis Options

Traffic Server はネットワークトラフィックの分析と監視のためのいくつかのオプションを提供しています。

  • traffic_ctl enables you to collect and process statistics obtained from network traffic information.

  • トランザクションロギングは Traffic Server が処理したへすべてのリクエストとすべての検知したエラーの情報を (ログファイルの中に) 記録することを可能にします。ログファイルを分析することによって、どれほどのクライアントが Traffic Sever キャッシュを使用し、どれくらいの情報がリクエストされ、どのページがポピュラーなのかを確認することができます。特定のトランザクションがなぜエラーになり、そのときの Traffic Server の状態がどうだったのかみることもできます。例えば Traffic Server が再起動したときや、クラスターコミュニケーションがタイムアウトしたときなどです。

    Traffic Server は Squid や Netscape などのいくつかの標準的なログフォーマットや固有のフォーマットをサポートしています。off-the-shelf 分析パッケージによって標準的なフォーマットのログを分析することができます。ログファイルの分析を助けるために、特定のプロトコルやホストの情報を含むようにログファイルを分割することができます。

Traffic Server event and error logging, monitoring, and analysis is covered in greater detail in Monitoring.

Traffic Server Security Options

Traffic Server は Traffic Server システムと他のコンピュータネットワーク間のセキュアな通信を確立することを可能にする多数のオプションを提供しています。セキュリティオプションを使うことによって、次のことが可能です。

  • Traffic Server プロキシーキャッシュにアクセスするクライアントの管理
  • あなたのサイトのセキュリティ設定に合わせて複数の DNS サーバーを使うような Traffic Server の設定。例えば Traffic Server はホストネームを解決する必要があるのがファイアーウォールの内側か外側かによって異なる DNS サーバーを使うことができます。これは透過的にインターネット上の外部サイトにアクセスすることを提供しつつ、インターナルネットワーク設定をセキュアに保つことを可能にします。
  • クライアントが Traffic Server キャッシュからコンテンツにアクセスできるようになる前に、クライアントが認証されていることを検証する Traffic Server 設定
  • SSL ターミネーションオプションを使うことによる、リバースプロキシーモードでのクライアントと Traffic Server 間と Traffic Server とオリジンサーバー間の安全な接続
  • SSL (Secure Socket Layer) によるアクセスの管理

Traffic Server セキュリティオプションは Security に詳しく述べられています。

Traffic Server のチューニング

最後に、この最終章 Performance Tuning では管理者が Apache Traffic Server を最大限のパフォーマンスを発揮するように最適なチューニングをするための膨大な数のオプションについて論じます。