本日は、OpenResty Edge で TCP 接続用のリバースプロキシを設定する方法をご紹介いたします。

Embeded image

TCP アプリケーションの作成

OpenResty Edge の Admin Web コンソールに移動しましょう。これは私たちのコンソールのサンプルデプロイメントです。各ユーザーには独自のローカルデプロイメントがあります。

スクリーンショット

今回は Stream タイプのアプリケーションを作成します。Stream アプリケーションリストページに移動します。

Screenshot

このボタンをクリックして新しいアプリケーションを作成します。

スクリーンショット

Stream アプリケーションには 2 種類あることがわかります:SNI Proxy アプリケーションと TCP アプリケーションです。

スクリーンショット

今日のテーマは TCP アプリケーションです。

スクリーンショット

SNI Proxy アプリケーションは別のチュートリアルで取り上げます。

スクリーンショット

TCP タイプを選択します。

スクリーンショット

このアプリケーション用のポートを指定する必要があります。

Screenshot

まず、このポートを default パーティションに追加する必要があります。

スクリーンショット

default パーティションの編集をクリックします。

スクリーンショット

このボタンをクリックしてポートを追加します。

スクリーンショット

リストに新しい行が表示されます。

スクリーンショット

ポート番号として 3307 を入力します。

スクリーンショット

TCP タイプを選択します。

Screenshot

「保存」ボタンをクリックして保存します。

スクリーンショット

新しいポートが default パーティションに正常に追加されたことが確認できます。

スクリーンショット

変更は保存と同時に自動的に公開されます。

スクリーンショット

ここで同期状態を確認できます。

スクリーンショット

この編集パネルを閉じます。

スクリーンショット

先ほど default パーティションに追加したポートを入力します。

Screenshot

そして、このアプリケーションを作成するためにクリックします。

Screenshot

TCP アプリケーション用のアップストリームとページルールの作成

Upstreams ページに移動します。

スクリーンショット

バックエンドサーバー用の新しいアップストリームを作成します。

スクリーンショット

このアップストリームに名前を付けます。例えば、tcp backend とします。

スクリーンショット

ここにバックエンドサーバーの IP アドレスを入力する必要があります。

スクリーンショット

この IP アドレスに MySQL サーバーを準備しています。

では、この MySQL サーバーに接続してみましょう。

Screenshot

パスワードを入力します。

スクリーンショット

サーバーにアクセスできることが確認できました。

これでバックエンドサーバーのホストフィールドを入力できます。

スクリーンショット

ポート番号 3307 を入力します。

スクリーンショット

将来的には、このアップストリームにさらに多くのサーバーを追加する可能性があります。

スクリーンショット

クリックしてこのアップストリームを保存します。

スクリーンショット

tcp backend アップストリームが正常に作成されたことが確認できます。

Screenshot

次に、このアップストリームを使用する新しいページルールを作成します。

スクリーンショット

新しいページルールを作成します。

スクリーンショット

プロキシターゲットを追加します。

スクリーンショット

先ほど作成したアップストリームを選択します。

スクリーンショット

スクリーンショット

複数のバランシング戦略から選択できます。アップストリームにサーバーが 1 つしかないため、バランシング戦略はそれほど重要ではありません。

スクリーンショット

デフォルトの round-robin 戦略のままで構いません。

Screenshot

このページルールを作成します。

スクリーンショット

ページルールリストに新しく作成されたプロキシページルールが表示されます。

スクリーンショット

最後のステップは、新しい設定の公開です。先ほどの変更をすべてのゲートウェイサーバーにプッシュします。

スクリーンショット

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

スクリーンショット

リリースします!

スクリーンショット

変更がすべてのゲートウェイサーバーに同期されました。このサンプルデプロイメントでは、ゲートウェイネットワークに 14 台のサーバーがあることがわかります。

Screenshot

ネットワーク全体で増分の設定同期を行っています。

Embeded video

Embeded video

Embeded video

リクエストの粒度でリアルタイムに設定を更新しています。アプリケーションレベルの設定変更はすべて、サーバーのリロード、再起動、またはバイナリアップグレードを必要としません。そのため、多くの異なるユーザーが頻繁に公開を行っても、非常にスケーラブルです。

Embeded image

TCP アプリケーションのテスト

では、クラスター別にグループ化されたすべてのゲートウェイサーバーを見てみましょう。

スクリーンショット

アメリカにあるノードがあり、その IP アドレスは 226 で終わっています。このノードを使用して、先ほど追加したプロキシをテストします。

スクリーンショット

このサーバーの IP アドレスをコピーするためにクリックします。

スクリーンショット

3307 ポートを使用してアップストリームバックエンドの MySQL サーバーに接続します。

スクリーンショット

ホストは先ほど確認した Edge ノードサーバーで、IP アドレスは 226 で終わっています。

Screenshot

ユーザー名とデータベース名を指定し、SQL コマンドを実行します。

スクリーンショット

パスワードを入力します。

スクリーンショット

予想通り、プロキシが機能しています!サーバーにアクセスでき、バックエンドサーバーに直接アクセスしているかのようです。

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

翻訳

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