Router 2.0 (パブリックベータ)
この記事の英語版に更新があります。ご覧の翻訳には含まれていない変更点があるかもしれません。
最終更新日 2024年05月30日(木)
Heroku の新しい Common Runtime ルーターである Router 2.0 のベータリリースをいち早く試し、フィードバックを提供していただくことで、当社のネットワーク商品の今後の向上にご協力ください。こちらの手順を実行することでベータ版に参加できます。
この新しいルーターは Heroku の Common Runtime の Eco、Basic、Standard、Performance dyno 専用です。この機能は Private Spaces の Private dyno または Shield dyno では使用できません。
アーリーアダプターとして、この機能が特にご使用のアプリやユースケースで期待どおりに動作しているかどうかの検証にご協力ください。現在の Common Runtime の本番ルーターには、新しい機能が追加される予定はありません。これらの新機能については、こちらの表を参照してください。
ベータ版に参加する場合は、Heroku Public Roadmap の項目にコメントするか、サポートチケットを作成してフィードバックを提出できます。
この機能はパブリックベータ版であり、変更される可能性があります。この機能の使用にはベータサービス規約が適用されます。
Router 2.0 は Heroku Labs の機能です。Heroku サポート ポリシー に記載されている Heroku SLA は適用されません。このベータ版に関連するサポートチケットは、商品のフィードバックとみなされます。
現状と今後の見通し
新しいルーターを開発するにあたり、現在の Common Runtime ルーターと同等の機能を実装するために、次の表の機能を継続的に追加していく予定です。
Heroku Labs を通して追加された機能は実験的であり、変更される場合があります。
新しいルーターは次の機能をサポートしています。
機能 | 現在の Common Runtime ルーター | Router 2.0 | メモ |
---|---|---|---|
ルーティング | x | x | TLS ターミネーションを含む基本的なルーティングがサポートされています。 |
ルーターログ | x | x | リクエストごとのルーターログがアプリのログストリームに表示されます。 |
エラーコード | x | x | ほとんどの H コードはサポートされており、ルーターのログに記録されます。現在、例外は H23 と H26 のみとなっています。 |
dyno のスリープ | x | x | Eco dyno では dyno のスリープ (アイドル状態) がサポートされています。 |
リクエストの同時実行の制限 | x | x | 各ルーターはアプリごとの内部リクエストカウンターを保持し、アプリごとの同時リクエスト数を制限します。 |
Heroku のヘッダー | x | x | Heroku のヘッダーは、Heroku が HTTP 応答に追加するヘッダーのセットです。 |
WebSocket | x | Router 2.0 に追加される予定です。 | |
Expect 100-continue | x | Router 2.0 に追加される予定です。 | |
dyno の隔離 | x | x | ルーターは到達不可能な dyno を隔離します。 |
Preboot | x | x | Preboot リリース動作は新しいルーターでも機能します。 |
セッションアフィニティ | x | Router 2.0 に追加される予定です。 | |
HTTP/2 | x | HTTP/2 は Router 2.0 でのみ使用できます。 | |
IPV6 | Router 2.0 にのみ追加される予定です。 |
現在の Common Runtime ルーターにおける HTTP ルーティング機能の完全なリストについては、「HTTP ルーティング」を参照してください。
新しいルーターに新機能を追加すると同時に、この表を更新し、Changelog でお知らせします。
Router 2.0 を有効にする
新しいルーターを使用するには、以下を実行して Heroku Labs 機能を有効にします。
$ heroku labs:enable http-routing-2-dot-0 -a <app name>
この機能を有効にすると、アプリは新しい Common Runtime ルーターである Router 2.0 を介してトラフィックを受信するようになります。
http-routing-2-dot-0
フラグを有効または無効にした後、クライアントはアプリへの接続を再確立する必要があります。
Router 2.0 を無効にする
新しいルーターの使用を停止するには、http-routing-2-dot-0
フラグを無効にします。アプリを以前のルーティング動作に戻すために必要な作業は、他にはありません。
Router 2.0 の使用を停止するには以下を実行します。
$ heroku labs:disable http-routing-2-dot-0 -a <app name>
Router 2.0 と HTTP/2
Common Runtime アプリでは、Router 2.0 を有効にすると、HTTP/2 はデフォルトでオンになります。Common Runtime で HTTP/2 を使用する場合は、次の機能の考慮事項に注意してください。
HTTP/2 は Heroku ルーターで終了し、ルーターからアプリには HTTP/1.1 を転送します。
Common Runtime では、カスタムドメインで HTTP/2 がサポートされますが、組み込みの
<app-name-cff7f1443a49>.herokuapp.com
ドメインではサポートされません。HTTP/2 には有効な TLS 証明書が必要です。Heroku Automated Certificate Management の使用をお勧めします。
Heroku ルーターログの protocol
値を参照することで、アプリが HTTP/2 リクエストを受信していることを確認できます。
HTTP/2 を無効にするには、アプリケーションで新しいルーターを無効にします。
Router 2.0 のルーターログ
Common Runtime アプリで Router 2.0 を有効にすると、heroku[router]
ログは少し異なった形式になります。この新しい形式では、クライアントが使用する HTTP および TLS のバージョンに関する詳細情報が提供されます。Router 2.0 では以下の項目に違いがあります。
protocol
: HTTP バージョンを含むリクエストプロトコルを示します。値はhttp1.1
とhttp2.0
のいずれかです。tls
: 接続で TLS が使用されているかどうかを示します。値はtrue
とfalse
のいずれかです。tls_version
: 接続に使用された TLS バージョンを示します。値はtls1.2
、tls1.3
、unknown
のいずれかです。unknown
はデフォルトのherokuapp.com
ドメインにおけるすべての TLS 接続の値であることに注意してください。
以下は新しく改良された形式でのログ行の例です。
2024-04-26T16:58:32.943253+00:00 heroku[router]: at=info method=GET path="/" host=my-app.example.com request_id=6903a168-b79b-ec27-03c8-b8f64d8d8792 fwd=138.68.186.89 dyno=web.1 connect=0ms service=0ms status=200 bytes=0 protocol=http2.0 tls=true tls_version=tls1.3
比較するには、こちらの Router 2.0 以外のログ形式を参照してください。