OpenResty Edge における Sticky Cookie の概要

本日は、OpenResty Edge で Sticky Cookie を有効にする方法をご紹介いたします。

埋め込み画像

まず、Sticky Cookie を有効にした状態で 2 つのリクエストを送信すると、それらが同じバックエンドサーバーに送信されることが確認できます。

Embeded video

Embeded video

Embeded video

その後、Sticky Cookie を無効にした状態で2つのリクエストを送信すると、今度は 2 つのリクエストが異なるバックエンドサーバーに送信されることが観察できます。

Embeded video

Embeded video

Embeded video

サンプルアプリケーションでの Sticky Cookie の有効化

OpenResty Edge の Admin Web コンソールにアクセスしましょう。これは当社のコンソールのサンプルデプロイメントです。各ユーザーは独自のローカルデプロイメントを持っています。

スクリーンショット

以前のサンプルアプリケーション、test-edge.com を引き続き使用します。

スクリーンショット

そのアプリケーションに移動します。

スクリーンショット

「Upstreams」ページに移動します。

スクリーンショット

すでにアップストリームが定義されています。

スクリーンショット

このアップストリームには現在 1 つのアップストリームサーバーがあります。

Screenshot

2 つのアップストリームサーバーが必要です。もう 1 つサーバーを追加しましょう。

スクリーンショット

「Add a new upstream server」ボタンをクリックします。

Screenshot

アップストリームサーバーのホスト名を入力します。

スクリーンショット

アップストリームサーバーが利用可能かどうか確認します。

スクリーンショット

オープンソースの OpenResty のデフォルトホームページが返されていることが確認できます。これは期待通りの結果です。

アップストリームを保存します。

スクリーンショット

「Page Rules」ページに移動します。

Screenshot

Screenshot

以前のチュートリアルでリバースプロキシのページルールを設定しました。

このページルールを編集し、Sticky Cookie を有効にします。

スクリーンショット

Sticky Cookie のスイッチをオンにします。

スクリーンショット

アップストリームサーバーがアップストリームクラスター内にあるため、ここではサーバーレベルの Sticky Cookie を使用することを選択します。

スクリーンショット

サーバーレベルを選択します。

スクリーンショット

ここで Sticky Cookie の有効期限を設定できます。

スクリーンショット

デフォルト値の 0 を使用します。これは決して期限切れにならないことを意味します。

このページルールを保存します。

スクリーンショット

次に、リクエストの分布を確認するための動的メトリクスを作成します。 なお、Sticky Cookie の設定にはこのステップは必須ではありません。Sticky Cookie 機能は動的メトリクスに依存しません。

スクリーンショット

「New Metric」ボタンをクリックします。

スクリーンショット

この動的メトリクスを「Upstream Server Request Count」と名付けます。

スクリーンショット

説明を追加します。

スクリーンショット

レポート間隔を 10 秒に設定します。

Screenshot

Metric SQL 文を入力します。これはアップストリームサーバーアドレスを選択します。

スクリーンショット

すべてのリクエストから。

スクリーンショット

そしてアップストリームサーバーアドレスでグループ化して表示します。

スクリーンショット

このメトリクスを保存します。

スクリーンショット

いつものように、先ほどの変更をプッシュするために新しいバージョンをリリースする必要があります。

スクリーンショット

このボタンをクリックします。

Screenshot

リリースします!

スクリーンショット

新しいバージョンがすべてのゲートウェイサーバーに同期されました。

スクリーンショット

先ほどの変更がすべてのゲートウェイクラスターとサーバーにプッシュされました。

Embeded video

Embeded video

Embeded video

これらの設定変更にはサーバーのリロード、再起動、またはバイナリアップグレードは必要ありません。そのため、非常に効率的でスケーラブルです。

埋め込み画像

テスト

では、2 つのリクエストを送信してみましょう。最初のリクエストを送信します。

スクリーンショット

2 つ目のリクエストを送信します。

スクリーンショット

すべてのリクエストが正常に送信されました。

動的メトリクスに記録されたデータを確認してみましょう。

スクリーンショット

棒グラフを選択します。

Screenshot

Screenshot

すべてのリクエストが同じアップストリームサーバーに送信されたことが確認できます。

以下の画像が示すとおりです。

Embeded video

Embeded video

Embeded video

Sticky Cookie の無効化

次に、Sticky Cookie を無効にした場合のデモンストレーションを行います。

スクリーンショット

まずメトリクスデータをクリアします。

スクリーンショット

ここで確認が必要です。

スクリーンショット

クリア作業が完了しました。では Sticky Cookie を無効にしましょう。

スクリーンショット

このページルールを再度編集します。

スクリーンショット

「Sticky Cookie」スイッチをオフにします。

Screenshot

負荷分散戦略が「Round Robin」であることに注意してください。

スクリーンショット

ページルールを保存します。

スクリーンショット

いつものように、先ほどの変更をプッシュするために新しいバージョンをリリースする必要があります。

スクリーンショット

このボタンをクリックします。

スクリーンショット

リリースします!

スクリーンショット

新しいバージョンがすべてのゲートウェイサーバーに同期されました。

Screenshot

テスト

次に、再び2つのリクエストを送信します。

最初のリクエストを送信します。

スクリーンショット

2 つ目のリクエストを送信します。

スクリーンショット

すべてのリクエストの送信が完了しました。

動的メトリクスを再確認します。

スクリーンショット

棒グラフをクリックします。

スクリーンショット

この 2 つのリクエストがそれぞれ異なるアップストリームサーバーにアクセスしたことが確認できます。

Screenshot

以下の画像が示すとおりです。

Embeded video

Embeded video

Embeded video

Sticky Cookie を使用することで、クライアントとアップストリームクラスターまたはアップストリームサーバーとの関連付けを維持することができます。

OpenResty Edge について

OpenResty Edge は、マイクロサービスと分散トラフィックアーキテクチャ向けに設計された多機能ゲートウェイソフトウェアで、当社が独自に開発しました。トラフィック管理、プライベート CDN 構築、API ゲートウェイ、セキュリティ保護などの機能を統合し、現代のアプリケーションの構築、管理、保護を容易にします。OpenResty Edge は業界をリードする性能と拡張性を持ち、高並発・高負荷シナリオの厳しい要求を満たすことができます。K8s などのコンテナアプリケーショントラフィックのスケジューリングをサポートし、大量のドメイン名を管理できるため、大規模ウェブサイトや複雑なアプリケーションのニーズを容易に満たすことができます。

著者について

章亦春(Zhang Yichun)は、オープンソースの OpenResty® プロジェクトの創始者であり、OpenResty Inc. の CEO および創業者です。

章亦春(GitHub ID: agentzh)は中国江蘇省生まれで、現在は米国ベイエリアに在住しております。彼は中国における初期のオープンソース技術と文化の提唱者およびリーダーの一人であり、Cloudflare、Yahoo!、Alibaba など、国際的に有名なハイテク企業に勤務した経験があります。「エッジコンピューティング」、「動的トレーシング」、「機械プログラミング」 の先駆者であり、22 年以上のプログラミング経験と 16 年以上のオープンソース経験を持っております。世界中で 4000 万以上のドメイン名を持つユーザーを抱えるオープンソースプロジェクトのリーダーとして、彼は OpenResty® オープンソースプロジェクトをベースに、米国シリコンバレーの中心部にハイテク企業 OpenResty Inc. を設立いたしました。同社の主力製品である OpenResty XRay動的トレーシング技術を利用した非侵襲的な障害分析および排除ツール)と OpenResty Edge(マイクロサービスおよび分散トラフィックに最適化された多機能ゲートウェイソフトウェア)は、世界中の多くの上場企業および大企業から高い評価を得ております。OpenResty 以外にも、章亦春は Linux カーネル、Nginx、LuaJITGDBSystemTapLLVM、Perl など、複数のオープンソースプロジェクトに累計 100 万行以上のコードを寄与し、60 以上のオープンソースソフトウェアライブラリを執筆しております。

翻訳

英文版の原文と日本語訳版(本文)をご用意しております。読者の皆様による他の言語への翻訳版も歓迎いたします。全文翻訳で省略がなければ、採用を検討させていただきます。心より感謝申し上げます!