クラウド環境に最適なリバースプロキシ〜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が受け付けたリクエストは、下記のような流れで処理されます。
- エントリーポイントには外部からのリクエストを受け付けるポートや使用するプロトコルを指定します。
- ルータはエントリーポイントに紐付けられ、指定したルールにもとづいてリクエストをサービスに振り分けます。
- サービスはルータから受け取ったリクエストをバックエンドのサーバに振り分けます。
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版) |
---|---|---|---|
特徴 |
|
|
|
ロードバランシング 方式 |
|
|
|
パーシステンス |
|
|
|
サービス自動検知 | DockerやKubernetesなどのサービスを自動検知可能 | なし | ingress-nginxを利用すればKubernetesとの連携は可能 |
バックエンドWebサーバのヘルスチェック |
|
|
|
サーバ証明書自動更新 | ○ | certbotなどの外部ツールが必要 | certbotなどの外部ツールが必要 |
HTTP/2・HTTP/3 対応 |
○ |
|
|
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選
プロキシサーバやロードバランサを利用することで、通信量の削減、セキュリティの強化、システムの性能向上といったメリットがあります。ここでは、無料で使えるプロキシ/ロードバランサのオープンソースソフトウェアを紹介します。