OpenResty Edge でゲートウェイパーティションを使用する方法
このチュートリアルでは、OpenResty Edge におけるゲートウェイパーティションの使用方法を説明します。
ゲートウェイパーティションとは、名前を持ったゲートウェイクラスターのグループであり、パーティションごとに異なる設定を適用できます。そして各クラスター自体も複数のゲートウェイサーバーで構成されます。つまり階層関係は、パーティションが複数のクラスターを含み、クラスターが複数のサーバーを含む、という形になります。あるアプリケーションをあるパーティションに割り当てると、そのパーティション内のサーバーだけがそのアプリケーションを提供します。他のパーティションのサーバーはそのドメインの設定を持たないため、「Page Not Found」を返します。
ゲートウェイパーティションを使うと、次のことができます。
- 内部アプリケーションと外部アプリケーションを分離し、設定もトラフィックも共有させない。
- 精密な A/B テストを実施し、変更を特定のサーバー群だけに限定する。
- 更新を段階的にロールアウトし、ゲートウェイクラスター全体へ徐々に配信しながら、必要なときには以前のバージョンへロールバックする。
OpenResty Edge では設定変更がリロード・再起動・バイナリのアップグレードなしにサーバーへ配信されるため、パーティションへのデプロイは高速かつ安全です。
新しいゲートウェイパーティションの作成
OpenResty Edge の Web コンソールにアクセスしましょう。これは弊社コンソールのサンプルデプロイメントです。各ユーザーは自身のローカルデプロイメントを持っています。
まず、「Gateway Clusters」ページに移動します。ここでは、すでに設定されている複数のゲートウェイクラスターが表示されています。
例えば、ここにはアメリカに設置されたゲートウェイクラスターがあります。
その中には 1 台のゲートウェイサーバーがあります。
クラスター自体は「default」パーティションに属しています。
次に、新しいゲートウェイクラスターを作成します。「New Gateway Cluster」ボタンをクリックします。
このゲートウェイクラスターに「edge-test-cluster」という名前を付けます。
この画像から、OpenResty Edge では、1 つのゲートウェイパーティション内に複数のゲートウェイクラスターを持つことができることがわかります。
次に、この新しいクラスターをあるパーティションに追加します。
このドロップダウンボックスをクリックします。
既存のパーティションは使用せず、全く新しいパーティションを作成します。
「Add Gateway Partition」をクリックします。
このパーティションに「edge-test-partition」という名前を付けます。
そして「Create」ボタンをクリックします。
新しく作成されたパーティションがパーティション選択ドロップダウンリストの一番上に表示されます。
「Create」ボタンをクリックして、この新しいクラスターを作成します。
新しく作成されたゲートウェイクラスターがクラスターリストページに表示されています。
この画像からも、1 つのゲートウェイクラスターに複数のゲートウェイサーバーが含まれていることがわかります。
次に、新しく作成したゲートウェイクラスターにゲートウェイサーバーを追加する方法を見てみましょう。
ここでは、すでに 1 台のゲートウェイサーバーを準備しています。
「Approve」ボタンをクリックします。
まず、クラスターを選択する必要があります。
ドロップダウンメニューから、新しく作成したゲートウェイクラスターを選択します。
そのサーバーのパブリック IP アドレスを入力します。
クリックして、そのサーバーをクラスターに追加することを承認します。
サーバーがゲートウェイクラスターに正常に追加されたのが確認できます。
新しいゲートウェイパーティションでの新しいアプリケーションの作成
次に、新しく作成したパーティションでアプリケーションを作成します。
アプリケーションリストページに切り替えます。
新しいアプリケーションの作成をクリックします。
アプリケーションのドメイン名を入力します。
パーティション選択ドロップダウンメニューを開くためにクリックします。
「default」パーティションは選択しないでください。
新しく作成したパーティションを選択します。
作成ボタンをクリックします。
新しいページルールの作成
パーティションがどのように機能するかを示すために、ページルールを作成します。
ページルールリストページに移動します。
ページルールの追加をクリックします。
新しいアクションを追加します。
アクション選択のドロップダウンボックスを開くためにクリックします。
「output response body」のアクションを選択します。
新しいルールの作成をクリックします。
この新しい変更をプッシュするために公開する必要があります。
このボタンをクリックします。
公開します!
変更がすべてのゲートウェイサーバーに同期されました。
これで、新しいページルールがすべてのゲートウェイクラスターとサーバーにプッシュされました。
設定の変更にはサーバーのリロード、再起動、またはバイナリのアップグレードが必要ありません。そのため、非常に効率的でスケーラブルです。
新しく作成したパーティションのテスト
再度ゲートウェイクラスターリストページに移動します。
これが先ほど新しく作成したクラスターです。
ここで注目すべきは、先ほど追加したサーバーの IP アドレスが ‘67’ で終わっていることです。
ターミナルで curl コマンドを使用して、このゲートウェイサーバーにリクエストを送信します。
curl "http://13.229.144.67" -H "Host: edge-test-partition.com"
先ほど設定したレスポンスボディがサーバーから返されたのがわかります。
次に、このパーティションに属さない別のサーバーに対して同じ操作を行います。このサーバーの IP は「.84」で終わっていることに注意してください。
リクエストを送信します。
curl "http://3.131.85.84" -H "Host: edge-test-partition.com"
別のパーティションに属しているゲートウェイサーバーは「Page Not Found」というレスポンスを返したのがわかります。
よくある質問
ゲートウェイパーティションとゲートウェイクラスターの違いは何ですか?
ゲートウェイクラスターは複数のゲートウェイサーバーのグループであり、ゲートウェイパーティションは複数のゲートウェイクラスターのグループです。パーティションごとに異なる設定を適用できるため、アプリケーションを分離したり、リリースを特定のサーバーに向けて配信したりできます。
なぜ別のパーティションのサーバーは「Page Not Found」を返すのですか?
アプリケーションは、割り当てたパーティションに紐付けられます。そのパーティション内のゲートウェイサーバーだけがそのアプリケーションのドメインの設定を持つため、他のパーティションのサーバーは「Page Not Found」を返します。上記の curl テストがこれを示しています。アプリケーションが属するパーティション内のサーバーは想定どおりのレスポンスボディを返し、パーティション外のサーバーは「Page Not Found」を返しています。
どのようなときにゲートウェイパーティションを使うべきですか?
内部アプリケーションと外部アプリケーションを分離したいとき、精密な A/B テストのために一部のサーバーを分離したいとき、そしてゲートウェイクラスター全体へ更新を段階的にロールアウトしつつ以前のバージョンへロールバックできる状態を保ちたいときに、パーティションを使用します。
パーティションの変更を適用するにはゲートウェイサーバーを再起動する必要がありますか?
いいえ。OpenResty Edge では設定変更がすべてのゲートウェイサーバーに同期され、リロード・再起動・バイナリのアップグレードは一切不要です。そのため、パーティションへのリリースはすぐに反映され、大規模なデプロイにも対応できます。
OpenResty Edge について
OpenResty Edge は、マイクロサービスと分散トラフィックアーキテクチャ向けに設計された多機能ゲートウェイソフトウェアで、当社が独自に開発しました。トラフィック管理、プライベート CDN 構築、API ゲートウェイ、セキュリティ保護などの機能を統合し、現代のアプリケーションの構築、管理、保護を容易にします。OpenResty Edge は業界をリードする性能と拡張性を持ち、高同時接続・高負荷シナリオの厳しい要求を満たすことができます。K8s などのコンテナアプリケーショントラフィックのスケジューリングをサポートし、大量のドメイン名を管理できるため、大規模ウェブサイトや複雑なアプリケーションのニーズを容易に満たすことができます。
本チュートリアルが気に入っていただけましたら、ぜひ本ブログや YouTube チャンネル をご購読ください。ありがとうございます!
著者について
章亦春(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、LuaJIT、GDB、SystemTap、LLVM、Perl など、複数のオープンソースプロジェクトに累計 100 万行以上のコードを寄与し、60 以上のオープンソースソフトウェアライブラリを執筆しております。
翻訳
英語版の原文と日本語訳版(本文)をご用意しております。読者の皆様による他の言語への翻訳版も歓迎いたします。全文翻訳で省略がなければ、採用を検討させていただきます。心より感謝申し上げます!

































































