本文章では、OpenResty Edge のステージングゲートウェイサーバー機能を活用し、ゲートウェイ設定の変更をテストしてから本番環境のすべてのゲートウェイサーバーにリリースする方法についてご説明します。

ステージングサーバーとは

Edge Admin は Edge サーバーの管理と設定の配布を担当しています。しかし、重要な変更をすべての Edge サーバーに直接配布することは、問題を引き起こす可能性があります。

Embeded video

この課題に対処するため、一部の Edge サーバーをステージングサーバーとして指定することができます。まずステージングサーバーに変更をリリースし、テストを実施した後に、すべてのサーバーに展開します。これが本日のテーマである「ステージングサーバー」です。

Embeded image

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

Screenshot

ゲートウェイサーバーをステージングサーバーとして設定する

まず、ゲートウェイサーバーをステージングサーバーとして設定する方法をご説明します。

Gateway Clusters タブをクリックし、Gateway Clusters ページに移動します。

Screenshot

ここには 2 台のゲートウェイサーバーを持つゲートウェイクラスターがあります。

Screenshot

これら 2 台のゲートウェイサーバーをステージングサーバーとして設定します。この設定には 2 つの方法があります。1 つ目は、ゲートウェイクラスター全体をステージングクラスターとして設定する方法です。

クラスターの編集をクリックします。

Screenshot

ここにクラスターをステージングクラスターとして設定するためのスイッチがあります。

Screenshot

現在、このスイッチはオフになっています。

このゲートウェイクラスターをステージングクラスターとして設定するには、このスイッチをオンにします。

Screenshot

変更を保存します。

Screenshot

クラスター名をクリックし、サーバーリストページに移動します。

Screenshot

サーバーリストページで、この 2 台のサーバーがステージングサーバーとして表示されていることが確認できます。

Screenshot

ゲートウェイクラスターページに戻ります。

Screenshot

2 つ目の方法は、個別のゲートウェイサーバーを直接ステージングサーバーとして設定する方法です。

再度編集ボタンをクリックします。

Screenshot

このスイッチをオフにします。

Screenshot

各サーバーの下にスイッチがあり、そのサーバーをステージングサーバーとして設定するかどうかを制御できます。

Screenshot

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

Screenshot

変更を保存します。

Screenshot

クラスター名をクリックします。

Screenshot

1 台目のサーバーは引き続きステージングサーバーとなっています。

Screenshot

2 台目のサーバーはステージングサーバーではなくなりました。

Screenshot

これはデモンストレーションのための設定です。実際の運用では、1 つのクラスター内にステージングサーバーと非ステージングサーバーを混在させることは推奨されません。クラスターレベルでの設定配布時に問題が発生する可能性があるためです。

ステージングサーバーへの変更のリリース

アプリケーションリストページに戻り、ステージングサーバーへの変更のリリース方法を確認しましょう。

Screenshot

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

Screenshot

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

Screenshot

ステージングリリースの結果をテストするために、新しいページルールを作成してください。

Screenshot

新規ページルールをクリックします。このルールは特定の URI に対して特定のコンテンツを返すように設定します。

Screenshot

まず、このルールに条件を追加します。

Screenshot

条件の変数は URI のままとします。

Screenshot

String= 演算子を選択します。

Screenshot

Screenshot

値として /test を指定された URI として入力します。

Screenshot

これで条件の設定は完了です。

ルールのアクション部分では、Output response body アクションを設定します。なお、このアクションの選択はデモンストレーション目的であり、ステージングサーバーはあらゆる設定に対して有効です。

Screenshot

ここには多くのアクションが用意されています。

Screenshot

「Output」と入力して検索することをお勧めします。

Screenshot

「Output response body」アクションを選択します。

Screenshot

コンテンツタイプとして text/plain を選択します。

Screenshot

Screenshot

出力レスポンスボディとして「Hello World」を入力します。

Screenshot

このオプションをクリックして、既存のルールの前にこのルールを挿入します。

Screenshot

「作成」ボタンをクリックしてこのルールを作成します。

Screenshot

リストにこのルールが表示されていることが確認できます。

Screenshot

最後のステップは、新しい設定のリリースです。これにより、先ほどの変更がゲートウェイサーバーにプッシュされます。

Screenshot

このボタンをクリックして新しいリリースを実行します。

Screenshot

このリリースにコメントを追加します。

Screenshot

ステージングのリリースを行うには、このスイッチをオンにする必要があります。

Screenshot

すべてのステージングサーバーがここに表示されます。

Screenshot

リリースを実行します。

Screenshot

これで完全に同期されました。

Screenshot

未リリースの変更リストには、先ほどの変更がまだ表示されています。これは、変更がすべての Edge ノードではなく、ステージングノードにのみリリースされたためです。

Screenshot

リリース履歴リストで先ほどの変更を確認できます。

Screenshot

リリースタイプがステージングリリースと表示されていることが分かります。

Screenshot

ステージングサーバー上での変更のテスト

ゲートウェイクラスターリストに移動し、テスト用のサーバーを選択します。

Screenshot

IP アドレスが 226 で終わるサーバーがステージングサーバーであることに注意してください。このアドレスをコピーします。

Screenshot

このステージングサーバーを使用して、

Screenshot

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

Screenshot

出力を見やすくするため、ここで改行を追加します。

Screenshot

Hello World が返されていることが確認できます。

Screenshot

次に、非ステージングサーバーでテストを実施します。IP アドレスが 213 で終わるサーバーのアドレスをコピーします。

Screenshot

この非ステージングサーバーを使用します。

Screenshot

404 が返されました。これは、先ほどの変更がこのサーバーでは有効になっていないことを示しています。

Screenshot

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 以上のオープンソースソフトウェアライブラリを執筆しております。

翻訳

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