OpenResty Edge における分散型 gRPC プロキシの設定
本日は、OpenResty Edge で gRPC リバースプロキシとロードバランサーを設定する方法をご紹介いたします。
gRPC サンプルサーバーとサンプルサービス
gRPC サンプルサーバーを用意しました。このサーバーの IP アドレスは .166 で終わります。リッスンポートは 8080 です。
以下は、サンプル gRPC サービスの protobuf 定義ファイルです。
cat hello_world.proto
このサービスは、name
パラメータに基づいて歓迎メッセージを返します。
grpcurl
コマンドラインツールを使用して、このサービスの出力を確認できます。このツールは gRPC リクエストを送信し、受信したレスポンスを JSON 形式で表示します。gRPC サーバーが TLS 暗号化をサポートしていないため、ここでは “-plaintext” オプションを使用します。
name
パラメータの値として “world” を使用します。上記で言及した gRPC サーバーのアドレスを入力します。最後に、gRPC サービスの名前を入力します。
リクエストを送信します。予想通り、“hello world” が返されました。
gRPC サーバーをアップストリームとして使用
次に、OpenResty Edge の背後にあるこの gRPC サーバーをアップストリームとして使用します。
いつものように、OpenResty Edge の Admin Web コンソールにアクセスしましょう。これは私たちのコンソールのサンプルデプロイメントです。各ユーザーは独自のローカルデプロイメントを持っています。
以前の例で使用した test-edge.com アプリケーションを引き続き使用できます。
そのアプリケーションに入ります。
アプリケーションで HTTP 2 を有効にする
gRPC は HTTP 2 を転送に使用します。HTTP 2 は OpenResty Edge ではデフォルトで有効になっています。
ここでは、Edge のアプリケーション設定で HTTP 2 を有効にする方法をお示しします。
「Enabled」オプションを選択します。
変更を保存します。
次に SSL ページに移動し、SSL 証明書が適切に設定されていることを確認します。
以前のチュートリアルで設定した証明書が表示されています。
gRPC サーバー用のアップストリームを作成する
「Upstreams」ページに移動します。
バックエンドサーバー用の新しいアップストリームを作成します。
このアップストリームに「grpc backend」という名前を付けます。
gRPC バックエンドサーバーが TLS 暗号化機能を有効にしている場合、ここで HTTPS を選択できます。
gRPC バックエンドサーバーのホストフィールドに、前述の IP アドレスを入力します。
ポート番号 8080 を入力します。
このアップストリームを保存します。
新しい「grpc backend」アップストリームが正常に作成されたことが確認できます。
gRPC プロキシを有効にする
では、このアップストリームを実際に使用するための新しいページルールを作成しましょう。
新しいページルールを作成します。
URI プレフィックスに一致するルール条件を追加します。
「grpcurl」で使用されるこれらのリクエスト URI プレフィックスを入力します。
ここでプロキシを追加します。
このスイッチをオンにして、gRPC プロキシを有効にします。
先ほど作成した gRPC アップストリームを選択します。
このページルールを既存の他のルールの前に挿入します。
このページルールを保存します。
追加したルールがページルールリストに表示されていることが確認できます。
いつものように、先ほどの変更をプッシュするために新しいバージョンをリリースする必要があります。
このボタンをクリックします。
リリースします!
新しいバージョンがすべてのゲートウェイサーバーに同期されました。
これで、新しいページルールがすべてのゲートウェイクラスターとサーバーにプッシュされました。
これらの設定変更にはサーバーのリロード、再起動、またはバイナリアップグレードは必要ありません。そのため、非常に効率的でスケーラブルです。
gRPC サービスのテスト
ここで、ゲートウェイを通じて gRPC サービスをテストします。
引き続き grpcurl
ツールを使用して gRPC サービスにアクセスします。
ドメイン名 test-edge.com とポート 443 を使用します。これにより OpenResty Edge ゲートウェイにヒットします。今回は Edge ゲートウェイが TLS 暗号化をサポートしているため、plaintext
オプションは指定しません。
リクエストを送信します。
予想通り、“hello world” というメッセージが返されました。
ご覧のように、ソースサーバーがサポートしていなくても、gRPC サービスは完全に TLS 暗号化を使用してアクセスできるようになりました。
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(マイクロサービスおよび分散トラフィックに最適化された多機能
翻訳
英文版の原文と日本語訳版(本文)をご用意しております。読者の皆様による他の言語への翻訳版も歓迎いたします。全文翻訳で省略がなければ、採用を検討させていただきます。心より感謝申し上げます!