オープンソース

クラウド環境に最適なリバースプロキシ〜Traefik Proxy〜

リバースプロキシとは、特定のサーバへの通信を中継するプロキシサーバのことです。サーバの負荷軽減やロードバランシングのほか、Webサーバやデータベースの処理を高速化するためにリバースプロキシが使われることもあります。この記事では、クラウド環境で利用する場合に最適なリバースプロキシのOSS、Traefik Proxyについて紹介します。

目次

Traefik Proxyとは

Traefik Proxyとは、Traefik Labsが開発するリバースプロキシサーバです。リバースプロキシだけでなくロードバランサ機能も備えています。MITライセンスでオープンソースソフトウェアとして公開されているほか、追加機能とサポートが付加された有償版のTraefik Enterpriseも提供されています。中規模以下の環境であれば、オープンソース版のTraefik Proxyに一通り必要な機能が備わっています。

一方で、有償版のTraefik Enterpriseは高可用性やスケーラビリティへの対応を重視した構成となっています。LDAPやOAuth、OpenID Connectなどの認証方式をサポートしていたり、Open Policy Agent (OPA) によるポリシー管理が可能であったりするため、大規模で信頼性を求められる環境に適しています。

Traefik Proxyの構成要素

Traefik Proxyの設定内容は静的設定と動的設定の2種類から成り、それぞれ以下のような構成要素について設定を行います。

  • 静的設定
    • エントリーポイント
    • プロバイダー
  • 動的設定
    • ルータ
    • サービス

Traefik Proxyが受け付けたリクエストは、下記のような流れで処理されます。

traefikproxy構成図

  1. エントリーポイントには外部からのリクエストを受け付けるポートや使用するプロトコルを指定します。
  2. ルータはエントリーポイントに紐付けられ、指定したルールにもとづいてリクエストをサービスに振り分けます。
  3. サービスはルータから受け取ったリクエストをバックエンドのサーバに振り分けます。

Traefik Proxyの特徴

Traefik Proxyには次のような特徴があります。

クラウド環境との親和性が高い

Traefik Proxyはクラウド環境との親和性を重視して作られているため、Docker/Podman、Kubernetes、Consul、Amazon ECSなどのコンテナ管理のソフトウェアと連携し、コンテナやサービスが追加されたことを検知してリバースプロキシのバックエンドとして自動設定することができます。そのため、クラウド環境でも手間をかけずにWebサーバを公開することができます。クラウド環境と連携しない場合でも、少ない作業でWebサーバを停止せず動的に公開できるため、Webサーバの増減が多い環境で非常に便利です。

サーバ証明書の自動更新が可能

Traefik ProxyはHTTPSの終端として利用することも可能です。また、Let's EncryptなどACMEプロトコルに対応した認証局と連携することで、HTTPSで使用するサーバ証明書の自動発行や自動更新を行うこともできます。

比較的シンプルな設定で利用可能

リバースプロキシの機能を持つWebサーバのOSSにはApache HTTP ServerやNginxなどもありますが、Traefik Proxyはそれらのソフトウェアと異なり、最初からリバースプロキシサーバとして設計されています。そのため、非常にシンプルな設定で利用することが可能です。各ソフトウェアの機能比較は「他のソフトウェアとの比較」でも詳しく説明しています。

Traefik Proxyのその他の機能

Traefik Proxyには、リバースプロキシやロードバランサとしての機能の他、下記のような機能も搭載されています。

ミドルウェア

バックエンドサーバへの認証機能を追加する際は、ミドルウェア機能を利用してベーシック認証やダイジェスト認証に対応することが可能です。ミドルウェア機能では、ルータに届いたリクエストをサービスに渡す前に加工することができます。

OIDCによるシングルサインオン

バックエンドWebサーバがシングルサインオンに対応していない場合、Traefik Proxyを使用してシングルサインオンに対応させることができます。ただ、Traefik Proxy単体では実現できず、シングルサインオンと連携するためのソフトウェアが別途必要です。なお、シングルサインオンの方式としては、OIDC(OpenID Connect)とSAMLの2つが主流ですが、デージーネットがSAMLを使った検証を行なった結果、Traefik Proxyと連携しての動作は確認できませんでした。

LDAP認証

Traefik Proxyでは、LDAPによる認証を追加することができます。ただしTraefik Proxy単体では追加できず、LDAPサーバと連携するためのソフトウェアが別途必要です。

ログ出力

Traefik Proxy自体のログやアクセスログを出力することができます。なおアクセスログの出力機能は標準で付属していませんが、ファイルを指定してコマンド入力を行うことでアクセスログを出力することができます。

APIとダッシュボードの利用

Traefik Proxyでは、REST APIを利用してJSON形式で設定情報などを取得したり、ダッシュボード画面から設定内容や各リソースの状態を確認することができます。なおダッシュボード画面で行えるのは状態の確認のみで、設定変更などの操作はできません。

ダッシュボード画面

分散トレーシング機能

分散トレーシング機能では、Traefik Proxyが受け付けたリクエストが、どのルータを経由してどのバックエンドに到達したか、処理にどれだけ時間がかかったかなどの情報を外部ツールに送信することができます。この機能を利用することで、外部ツール側で受信したトレース情報を可視化し、パフォーマンスのボトルネック分析や改善のための調査に活用することができます。トレーシングデータはOpenTelemetryフォーマットで送信され、送信プロトコルとしてgRPCとHTTPに対応しています。以下は、可視化ツールとしてJaegerを使用し、Traefik Proxyへのリクエストのトレーシングデータを表示させた画面です。

トレーシングデータの可視化

注意点

Traefik Proxyには以下の注意点があります。

冗長化機能が使えない

オープンソース版のTraefik Proxyでは、冗長化機能は特に用意されていません。そのため、冗長化が必要な場合は別途対応方法を考える必要があります。ドキュメントによると、Traefik Proxyを冗長化した場合はLet's Encryptとの連携機能は使えないという記述があり、冗長化する場合は証明書の取得、更新方法も別途考える必要があります。

シングルサインオンの設定が複雑

Traefik Proxy単体ではシングルサインオンに対応しておらず、外部のツールとforwardAuthミドルウェアを使用して連携するといった構成が必要となります。そのため、シングルサインオンに対応するとどうしても設定が複雑になり、設定がシンプルであるというTraefik Proxyの利点は活かしにくくなります。

他のソフトウェアとの比較

特徴で紹介した通り、Traefik Proxyは他のWebサーバのソフトウェアと比べると非常にシンプルな設定で利用することが可能です。以下では、Traefik Proxy、Apache HTTP Server、Nginxをそれぞれ比較した機能を表にまとめています。

ソフトウェア Traefik Proxy Apache HTTP Server NGINX (OSS版)
特徴
  • 設定がシンプル
  • コンテナ環境に最適化
  • OpenTelemetry/Prometheusなどと統合が容易
  • 歴史が長く利用事例が多い
  • HTTP レイヤで柔軟な設定が可能
  • ロードバランサ用途では複雑
  • 利用事例が増えている
  • 高スループット
  • 一部機能は有償版のみ
ロードバランシング
方式
  • ラウンドロビン
    (重み付け可)
  • 最小コネクション (ランダムに2台選択後)
  • 累積リクエスト数ベース (重み付け可)
  • 累積トラフィックベース (重み付け可)
  • 最小コネクション (重み付け可)
  • ラウンドロビン
    (重み付け可)
  • 最小コネクション (重み付け可)
  • IPアドレスによるハッシュ
  • その他変数などによるハッシュ
パーシステンス
  • Cookie
  • Cookie
  • URLパラメーター (バックエンドでの付与が必要)
  • IPアドレスによるハッシュ
  • その他変数などによるハッシュ
サービス自動検知 DockerやKubernetesなどのサービスを自動検知可能 なし ingress-nginxを利用すればKubernetesとの連携は可能
バックエンドWebサーバのヘルスチェック
  • HTTP(S)
  • HTTP(S)
  • TCP
  • HTTP(S)
    (パッシブチェックのみ)
サーバ証明書自動更新 certbotなどの外部ツールが必要 certbotなどの外部ツールが必要
HTTP/2・HTTP/3
対応
  • HTTP/2のみ可
  • HTTP/2は可
  • HTTP/3は1.25.0で実験的に対応
HTTP(S)以外のTCPのバランシング AJPやFTPなど一部プロトコルのみ可
UDPのバランシング ×
ModSecurityとの連携 × 別途 mod_security2 を使用して可 別途 ModSecurity-nginx connector を使用して可
IPアドレスごとの
レートリミット
別途 mod_evasive を使用して可
ベーシック認証
ダイジェスト認証 ×
動的設定変更 一部を除き可 × ×
多ノード構成 証明書更新は外部で対応する必要あり,それ以外は動的設定を外部化することで対応可能 設定ファイルの同期方法を検討する必要あり 設定ファイルの同期方法を検討する必要あり
多ノード構成時の
セッション情報の共有
× SQL DB を利用して可能 ×
アクセスログ
フォーマット
Common Log Format もしくは JSON 形式 フォーマット定義の自由度が高い フォーマット定義の自由度が高い
OpenTelemetry対応 外部ツールが必要 外部ツールが必要
Prometheus対応 外部ツールが必要 外部ツールが必要
SAML対応 外部サービスが必要
(※デージーネットの検証では成功せず)
別途mod_auth_mellonを使用して可 外部サービスが必要
OIDC対応 外部サービスが必要 別途mod_auth_openidcを使用して可 外部サービスが必要

各ソフトウェアのおすすめ利用ケース

比較した結果を踏まえて、各ソフトウェアのおすすめの利用ケースを紹介します。Webサーバを選定する際は、次のようなポイントに当てはまるかどうかで検討することも可能です。

Traefik Proxy

  • 冗長化構成が不要でかつサーバの増減が多い試験環境
  • クラウド環境で自動設定を活用し運用負荷を減らしたい場合
  • OpenTelemetryを利用して詳細なデータを収集したい場合

Apache HTTP Server

  • セキュリティツールとの連携やシングルサインオンなど多様な機能を使いたい場合
  • 複数サーバを同時稼動して冗長化させつつ、サーバ間でセッション情報を共有したい場合
  • 実績のあるソフトウェアが求められる場合
  • 過去の経験を活かし技術習得のコストをかけたくない場合

Nginx

  • パフォーマンスが求められる場合
  • 有償版の機能やサポートが必要な場合

リバースプロキシやWebサーバのソフトウェア比較については、下記ページでも紹介しています。

デージーネットの取り組み

デージーネットでは、Traefik Proxyのインストール方法や各種機能、設定方法などについて調査を行いました。調査した結果はTraefik Proxy調査報告書に掲載しています。調査報告書は無料でダウンロードすることが可能です。

またデージーネットでは、Traefik ProxyのようなOSSのプロキシやロードバランサを多数取り扱っています。これまでの導入実績を活かし、お客様のご要望や使い方に合わせた最適な負荷分散システムをご提案しています。さらに弊社でサーバを構築したお客様に向けて、導入後の保守サポートも提供しています。この保守サービスでは、ソフトウェアだけでなくシステム全体の保守を行い、使い方に関するQ&A、障害などの問題発生時の調査、最新のセキュリティ情報の提供などを行います。システム構築や保守サービスについて詳しく知りたい方はお気軽にお問い合わせください。

関連情報

Traefik Proxy調査報告書

無料資料ダウンロード

Traefik Proxyとは、コンテナなどのクラウド環境との親和性を重視して作られたリバースプロキシ/ロードバランサです。Apache HTTP ServerやNGINXと異なり、当初からリバースプロキシーサーバとして設計されているため、シンプルな設定で利用することが可能です。

無料で使えるプロキシサーバ/ロードバランサおすすめ21選

OSS比較(プロキシ)

プロキシサーバやロードバランサを利用することで、通信量の削減、セキュリティの強化、システムの性能向上といったメリットがあります。ここでは、無料で使えるプロキシ/ロードバランサのオープンソースソフトウェアを紹介します。

デモのお申込み

もっと使い方が知りたい方へ
操作方法や操作性をデモにてご確認いただけます。使い方のイメージを把握したい、使えるか判断したい場合にご活用下さい。デモをご希望の方は、下記よりお申込みいただけます。

デモをご希望の方

デモの申し込みイメージ

クラウド環境に最適なリバースプロキシ〜Traefik Proxy〜の先頭へ