すべてのプロダクト
Search
ドキュメントセンター

Server Load Balancer:ALB を使用した gRPC トラフィックの負荷分散

最終更新日:Jun 19, 2026

Application Load Balancer (ALB) を使用して gRPC トラフィックを負荷分散し、バックエンドサービス通信用の統一されたイングレスを提供します。ALB は、HTTP/2 を介した gRPC バックエンドサーバーグループとの HTTPS 暗号化フロントエンド接続をサポートしています。

背景情報

gRPC は、高性能なオープンソースのリモートプロシージャコールフレームワークです。インターフェース定義言語 (IDL) として Protocol Buffers (protobuf) を使用し、HTTP/2 を介して通信します。

gRPC は、サービス間のクロス言語通信の問題を解決します。その IDL は、リモートサービスを定義および呼び出すためのコードを自動生成します。バイナリエンコーディングと HTTP/2 の多重化を使用することで、gRPC は高性能、低レイテンシー、効率的なデータ転送を実現します。

gRPC は、マイクロサービスアーキテクチャ、クロス言語通信、および大規模な分散システムに適しています。単項呼び出し、ストリーミングリクエストとレスポンス、および双方向ストリーミングをサポートしています。

gRPC の詳細については、gRPC の公式ドキュメントをご参照ください。

シナリオ

ある企業が、中国 (杭州) リージョンの Virtual Private Cloud (VPC) に gRPC サービスをデプロイします。VPC には、ALB インスタンスと gRPC 対応のサーバーグループがデプロイされています。ALB インスタンスには HTTP/2 対応の HTTPS リスナーが設定され、サーバーグループには gRPC ヘルスチェックが設定されています。

クライアントは、ALB インスタンスを介して VPC にデプロイされた gRPC サービスにアクセスする必要があります。

image

前提条件

ステップ 1:サーバーグループの作成

  1. ALB コンソールにログインします。

  2. 上部のナビゲーションバーで、ALB インスタンスがデプロイされているリージョンを選択します。

  3. 左側のナビゲーションペインで、ALB > サーバーグループ を選択します。

  4. サーバーグループ ページで、サーバーグループの作成 をクリックします。

  5. サーバーグループの作成 ダイアログボックスで、次のパラメーターを設定し、作成 をクリックします。

    このトピックでは、このシナリオに関連するパラメーターのみを説明します。他のパラメーターについては、デフォルト値を使用するか、必要に応じて設定してください。

    パラメーター

    説明

    [サーバーグループタイプ]

    サーバーグループタイプを選択します。この例では、サーバー を選択します。

    VPC

    ALB インスタンスの VPC を選択します。この VPC 内のサーバーのみをサーバーグループに追加できます。

    [バックエンドサーバープロトコル]

    この例では、[gRPC] を選択します。

    [ヘルスチェック]

    この機能を有効にします。

    [ヘルスチェックの設定]

    編集 をクリックし、ヘルスチェック設定を行います。

    • [ヘルスチェックプロトコル]:この例では、[gRPC] を選択します。

    • [ヘルスチェック方法]:この例では、[POST] を選択します。

    • [ヘルスチェックステータスコード]:正常なレスポンスを示すステータスコードを選択します。これは、gRPC サービスから返されるステータスコードと一致する必要があります。この例では、ステータスコードは 12 です。

  6. サーバーグループ ページで、作成したサーバーグループを見つけ、その ID をクリックします。

  7. バックエンドサーバー タブをクリックし、バックエンドサーバーの追加 をクリックします。

  8. バックエンドサーバーの追加 パネルで、作成した Elastic Compute Service (ECS) インスタンスを選択し、次へ をクリックします。

  9. ポート/重み ステップで、各 ECS インスタンスのポートと重みを設定し、OK をクリックします。

    説明

    ECS インスタンスに設定するポートは、gRPC サービスが使用するポートと一致する必要があります。また、インスタンスのセキュリティグループルールで、このポートでのトラフィックが許可されていることを確認する必要があります。

ステップ 2:HTTPS リスナーの設定

  1. Application Load Balancer (ALB) コンソールにログインします。

  2. 上部のナビゲーションバーで、インスタンスがデプロイされているリージョンを選択します。

  3. 左側のナビゲーションペインで、インスタンス をクリックします。

  4. インスタンス ページで、管理するインスタンスを見つけ、操作 列の リスナーの作成 をクリックします。

  5. リスナーの設定 ページで、次のパラメーターを設定します。他のパラメーターはデフォルト値を使用するか、必要に応じて設定します。その後、次へ をクリックします。

    パラメーター

    説明

    [リスナープロトコルの選択]

    [HTTPS] を選択します。

    [リスナーポート]

    この例では、ポート 443 を使用します。

    説明
    • サーバーグループのバックエンドプロトコルが gRPC に設定されている場合、リスナープロトコルは HTTPS である必要があります。

    • gRPC は HTTP/2 プロトコル経由で通信します。サーバーグループのバックエンドプロトコルが gRPC に設定されている場合、HTTPS リスナーで HTTP/2.0 を有効にする必要があります。ALB はデフォルトでこの機能を有効にします。HTTP/2 の有効化 機能が有効になっていることを確認し、無効にしないでください。

  6. SSL 証明書の設定 ページで、次のパラメーターを設定します。他のパラメーターはデフォルト値を使用するか、必要に応じて設定します。その後、次へ をクリックします。

    パラメーター

    説明

    [サーバー証明書]

    準備した SSL 証明書を選択します。

  7. サーバーグループの選択 ページで、次のパラメーターを設定します。他のパラメーターはデフォルト値を使用するか、必要に応じて設定します。その後、次へ をクリックします。

    パラメーター

    説明

    [サーバーグループ]

    作成した gRPC サーバーグループを選択します。

  8. 設定の確認 ページで、設定を確認します。設定が正しい場合は、送信 をクリックし、リスナーが作成されるまで待ちます。

ステップ 3:DNS 名前解決の設定

本番環境では、独自のドメイン名を使用し、CNAME レコードを作成して ALB インスタンスの DNS 名にポイントします。

  1. 左側のナビゲーションウィンドウで、ALB > インスタンス を選択します。

  2. インスタンス ページで、ご利用の ALB インスタンスの DNS 名をコピーします。

  3. CNAME レコードを追加して、ドメイン名を ALB インスタンスの DNS 名にマッピングします。

    説明

    ドメイン名が Alibaba Cloud に登録されていない場合は、DNS レコードを設定する前に、まず Alibaba Cloud DNS コンソールに追加する必要があります。詳細については、「ドメイン名管理」をご参照ください。ドメイン名が Alibaba Cloud に登録されている場合は、次のステップに進むことができます。

    1. Alibaba Cloud DNS コンソールにログインします。

    2. 権威 DNS 名前解決 ページで、ドメイン名を見つけ、操作 列の 解決設定 をクリックします。

    3. 解決設定 ページで、Add Record をクリックします。

    4. Add Record パネルで、以下のパラメーターを設定して CNAME レコードを作成し、OK をクリックします。

      構成

      説明

      レコードタイプ

      ドロップダウンリストから [CNAME] を選択します。

      ホストレコード

      ドメイン名のプレフィックス。このチュートリアルでは @ を使用します。

      説明

      ルートドメインを使用するには、ホストを @ に設定します。

      Query Source

      [デフォルト] を選択します。

      レコード値

      コピーした ALB インスタンスの DNS 名を貼り付けます。

      TTL

      Time to Live (TTL) は、レコードが DNS サーバーにキャッシュされる時間です。このチュートリアルではデフォルト値を使用します。

ステップ 4:接続性の検証

上記の手順が完了すると、クライアントは ALB 経由で gRPC サービスにアクセスできるようになります。grpcurl などのツールを使用して接続性をテストします。

説明

Web ブラウザーから gRPC サービスに直接アクセスすることはできません。grpcurl などのツールを使用して接続性をテストすることを推奨します。

クライアントで、grpcurl -insecure -v <ドメイン名>:<リスナーポート> <gRPC サービス名>/<メソッド> コマンドを実行して、ECS インスタンス上の gRPC サービスにアクセスします。

次のようなレスポンスは、クライアントが ALB 経由で gRPC サービスにアクセスできることを示しています。

[root@iZbp1xxx.0Z ~]# grpcurl -insecure -v xxx.com:443 helloworld.Greeter/SayHello
Resolved method descriptor:
rpc SayHello ( .helloworld.HelloRequest ) returns ( .helloworld.HelloReply );
Request metadata to send:
(empty)
Response headers received:
accept-encoding: identity,gzip
content-type: application/grpc
date: Mon, 04 Jul 2022 08:53:01 GMT
grpc-accept-encoding: identity,deflate,gzip
vary: Accept-Encoding
Response contents:
{
  "message": "remoteip:47.xxx.xxx.195 x-forwarded-for:47.xxx.xxx.xx5 user-agent:grpcurl/v1.8.0 grpc-go/1.30.0 hostname:iZbp12xxx0kZ server addr:192.168.1.239 "
}
Response trailers received:
(empty)
Sent 0 requests and received 1 response

関連ドキュメント