Serverless App Engine (SAE) にアプリケーションをホストした後、アプリケーションのルートを作成して、他のサービスやアプリケーションにリクエストを分散できます。このトピックでは、Application Load Balancer (ALB) インスタンスに基づくアプリケーションのルートを作成および管理する方法について説明します。
事前準備
SLB
SAE
SAEVPCSAE 名前空間の作成。ALB インスタンスと名前空間が同じリージョンにあり、同じ Virtual Private Cloud (VPC) に関連付けられていることを確認します。
ルートを作成するアプリケーションと、バックエンドでリクエストを受信するアプリケーションが同じ名前空間に属していることを確認します。
背景情報
Server Load Balancer (SLB) は、バックエンドサーバーのグループにネットワークトラフィックを転送して、アプリケーションのスループットを向上させるサービスです。単一障害点 (SPOF) によって引き起こされるサービスの中断を防ぎ、アプリケーションの可用性を向上させるのに役立ちます。ALB は SLB ファミリーのメンバーであり、アプリケーション層で HTTP、HTTPS、Quick UDP Internet Connections (QUIC) などのプロトコルを対象としています。ALB は伸縮性が高く、アプリケーション層で大量のトラフィックを処理できます。ALB は複雑なルーティングをサポートし、他のクラウドネイティブサービスと統合されています。ALB は、Alibaba Cloud が推奨するクラウドネイティブな Ingress ゲートウェイソリューションとして設計されています。詳細については、「SLB とは」をご参照ください。
利用シーン
1 つ以上のアプリケーションで使用されるドメイン名への、異なるパスを介したトラフィックの転送。
同じ IP アドレスに名前解決され、1 つ以上のアプリケーションで使用される異なるドメイン名へのトラフィックの転送。
ルートを設定した後、<ドメイン名>:<ポート番号/パス> 形式の URL を使用して、特定のバックエンドサービスまたはアプリケーションにアクセスできます。
ルートの作成
SAE ゲートウェイルーティング ページで、上部のナビゲーションバーからリージョンと名前空間を選択し、[ゲートウェイルートの作成] をクリックします。
表示される ルートの作成 ページで、次の表の説明に従ってパラメーターを設定し、[保存] をクリックします。
パラメーター
説明
ルート名
作成するルートの名前。
ネットワークタイプ
リクエストの転送に使用するゲートウェイのネットワークタイプ。
インターネット:インターネットゲートウェイによって転送されるトラフィック量に対して料金を支払う必要があります。
プライベートネットワーク:トラフィックはゲートウェイの VPC 内でのみ転送されるため、プライベートゲートウェイによって転送されるトラフィックに対して料金を支払う必要はありません。
ゲートウェイタイプ
[ALB] を選択します。
ALB インスタンス
[ALB インスタンス] ドロップダウンリストから ALB インスタンスを選択します。[ALB インスタンスの作成] をクリックして作成することもできます。詳細については、「ALB インスタンスの作成と管理」をご参照ください。さらに、SAE は代理での ALB インスタンスの購入をサポートしています。次の購入オプションが利用可能です:
標準版 ALB インスタンスの作成 (従量課金)
WAF 有効版 ALB インスタンスの作成 (従量課金)
インスタンスの作成を選択した場合、システムは指定されたネットワークタイプの従量課金インスタンスを自動的に作成します。課金の詳細については、「ALB の課金の概要」をご参照ください。
説明リージョンに ALB インスタンスが表示されない場合、ALB が現在の名前空間にバインドされている VPC とは異なる VPC にある可能性があります。この場合、ALB コンソール に移動し、名前空間と同じリージョンおよび VPC にインスタンスを作成してください。
フロントエンドプロトコルタイプ
リクエストの転送に使用されるプロトコル。
HTTP:モバイルアプリケーションやゲームなど、さまざまなソースからのデータを識別する必要があるアプリケーションに適しています。
HTTPS:暗号化されたデータ転送を必要とするアプリケーションに適しています。
アクセスポート
カスタムポート番号。有効な値:0~65535。
詳細設定
このセクションを展開して、次のパラメーターを設定します:
接続リクエストのタイムアウト:バックエンドサーバーへのリクエストのタイムアウト期間を設定します。有効な値:1~180。単位:秒。指定された期間内にバックエンドサーバーが応答しない場合、HTTP 504 エラーコードが返されます。
アイドル接続のタイムアウト期間:リクエストがない場合の接続の継続時間を設定します。有効な値:1~60。単位:秒。指定されたタイムアウト期間内に新しいリクエストが受信されない場合、ALB は現在の接続を一時的に閉じます。次のリクエストが到着すると、新しい接続が確立されます。
HTTP ヘッダーフィールドの追加:特定の情報を取得するために、次のいずれかの HTTP ヘッダーフィールドを選択します。
X-Forwarded-For を追加してクライアント IP アドレスを取得:フォーマットは
X-Forwarded-For: <client-ip-address>, <proxy1>, <proxy2>, …です。X-Forwarded-Forは、デフォルトで ALB リスナーに対して有効になっています。ALB がクライアント IP アドレスを保持できるようにする方法の詳細については、「ALB を介してバックエンドサーバーでクライアントの送信元 IP アドレスを取得」をご参照ください。
SLB-ID を追加して SLB インスタンス ID を取得:フォーマットは
SLB-IDです。X-Forwarded-Proto を追加して SLB インスタンスのリスナープロトコルを取得:フォーマットは
X-Forwarded-Proto: <originatingProtocol>です。X-Forwarded-Port を追加して SLB インスタンスのリスナーポートを取得:フォーマットは
X-Forwarded-Port: <port>です。X-Forwarded-Client-srcport を追加してクライアントが SLB インスタンスへの接続に使用するポートを取得:フォーマットは
X-Forwarded-Client-srcport: <port>です。
データ圧縮:有効にすると、ALB は対象となる応答を Gzip または Brotli で圧縮し、帯域幅の使用量を削減します。
圧縮条件:応答の
Content-Lengthヘッダーが 1024 バイトを超え、クライアントのAccept-Encodingリクエストヘッダーにサポートされている圧縮アルゴリズムが含まれている場合、応答は圧縮されます。アルゴリズムの優先度:クライアントが Brotli と Gzip の両方の圧縮アルゴリズムをサポートしている場合、ALB はより効率的な Brotli アルゴリズムを優先します。
サポートされている
Content-Type:Brotli はすべてのコンテンツタイプの圧縮をサポートしています。
Gzip は次のタイプをサポートしています:
text/xml、text/plain、text/css、application/javascript、application/x-javascript、application/rss+xml、application/atom+xml、application/xml、およびapplication/json。
カスタム転送ポリシー
必要に応じて転送ルールを設定し、フロントエンドのリクエストをバックエンドサービスに転送します。次のパラメーターが必要です:
ドメイン名:リクエストを転送するドメイン名。このパラメーターを空のままにすると、ルールはすべてのドメイン名に適用されます。ドメイン名を使用してアプリケーションにアクセスするには、事前にドメイン名の名前解決を設定する必要があります。詳細については、「ALB インスタンスの CNAME レコードの設定」をご参照ください。
アクセスポート:以前に設定したアクセスポートがデフォルトで使用され、ここでは変更できません。
パス:アクセスパス。このパラメーターを空にすることはできません。
バックエンドアプリケーション:リクエストを受信するアプリケーション。リクエストを転送するアプリケーションと同じ名前空間にある必要があります。
コンテナーポート:バックエンドアプリケーションへのアクセスに使用されるコンテナーのポート。
書き換えポリシー:フロントエンドリクエストがバックエンドアプリケーションに転送される際に、元のリクエストのパスを書き換えることができます。たとえば、フロントエンドリクエストパス /AAA/a と /AAA/b をバックエンドアプリケーションに /a と /b として書き換える場合、[パス] を /AAA/(.*) に設定し、[書き換えポリシー] セクションで [パス] を /${1} に設定します。
説明ALB インスタンス内のリスナーのポートは一意である必要があります。
[+ ルールの追加] をクリックして、同じドメイン名の下にカスタム転送ルールを追加することもできます。
[+ ドメイン名の追加] をクリックして、他のドメイン名のカスタム転送ルールを追加することもできます。
デフォルト転送ルール
ALB インスタンス:以前に選択した ALB インスタンスがデフォルトで使用され、ここでは変更できません。
アクセスポート:以前に設定したアクセスポートがデフォルトで使用され、ここでは変更できません。
バックエンドアプリケーション:リクエストを受信するアプリケーション。リクエストを転送するアプリケーションと同じ名前空間にある必要があります。
コンテナーポート:バックエンドアプリケーションへのアクセスに使用されるコンテナーのポート。
説明デフォルト転送ポリシーは、カスタム転送ポリシーに一致しないすべてのリクエストに対して設定することを推奨します。デフォルト転送ポリシーを設定しない場合、アクセスエラーが報告されます。
結果の確認
方法 1:SLB コンソールにログインします。ALB インスタンスページで、リスナーが設定されているかどうかを確認します。
方法 2:
<ドメイン名>:<ポート番号/パス>形式の URL を使用して関連サービスまたはアプリケーションにアクセスし、設定された転送ポリシーに基づいてリクエストが転送されるかどうかを確認します。
ルートの管理
ルートを作成した後、ゲートウェイルーティング ページで、ルートの転送ポリシーとイベントの表示、ルートの変更、またはルートの削除ができます。