gRPC は、高パフォーマンスのオープンソース リモートプロシージャコール (RPC) フレームワークです。バックエンドサーバーが gRPC をサポートしている場合、gRPC サービスの負荷を分散するように Application Load Balancer (ALB) を構成できます。ALB は、ネットワークトラフィックを分散するイングレスとして機能します。 gRPC は、データ転送に HTTP/2 を使用します。ALB は、HTTPS リスナーを使用してクライアントとの暗号化通信をサポートし、gRPC を使用するバックエンドサーバーとのプレーンテキスト通信をサポートします。
背景情報
gRPC は、高パフォーマンスのオープンソース RPC フレームワークです。インターフェース記述言語 (IDL) として Protocol Buffers を、通信プロトコルとして HTTP/2 を使用します。
gRPC は、分散システムでサービス間通信を確立するために使用されます。 gRPC は、IDL をサポートし、自動的にコードを生成するため、異なるプログラミング言語を使用するサービス間で通信を確立します。 gRPC は、開発者がリモートプロシージャを定義および呼び出すのに役立ちます。さらに、gRPC はバイナリエンコーディングと HTTP/2 の多重化機能をサポートしているため、高パフォーマンスで低レイテンシのデータ転送をサポートします。 gRPC を使用すると、高速で信頼性の高い接続を介してリモートプロシージャにアクセスできます。
gRPC は、マイクロサービスアーキテクチャ、クロス言語通信、および大規模分散システムに適用できます。 gRPC は、高パフォーマンスと低レイテンシが要求されるシナリオに最適な選択肢です。 gRPC は、単項、ストリーミング、双方向ストリーミングなど、複数の呼び出しメソッドをサポートして、さまざまなサービスの要件を満たします。
詳細については、「gRPC ドキュメント」をご参照ください。
シナリオ
ある企業が、中国 (杭州) リージョンの仮想プライベートクラウド (VPC) に gRPC サービスをデプロイしました。VPC に ALB インスタンスが作成され、ALB インスタンス用に gRPC バックエンドサーバーグループが作成されます。 ALB インスタンス用に HTTPS リスナーが作成され、ALB インスタンスで HTTP/2 が有効になります。 gRPC ヘルスチェックもバックエンドサーバーグループで有効になっています。
企業は、クライアントが ALB インスタンスを介して VPC 内の gRPC サービスにアクセスできるようにしたいと考えています。
前提条件
ALB インスタンスが作成されていること。詳細については、「ALB インスタンスの作成と管理」をご参照ください。
バックエンドサーバーがバックエンドサーバーグループに追加され、gRPC サービスがバックエンドサーバーにデプロイされていること。 gRPC サービスのデプロイ方法の詳細については、「gRPC ドキュメント」をご参照ください。
ドメイン名が登録され、ドメイン名にインターネットコンテンツプロバイダー (ICP) 番号が取得されていること。詳細については、「Alibaba Cloud でのドメイン名の登録」および「ICP 登録プロセス」をご参照ください。
必要な証明書がデプロイされていること。サードパーティ サービスプロバイダーから証明書を購入した場合は、証明書管理サービスにアップロードする必要があります。また、証明書がドメイン名に関連付けられていることを確認してください。証明書のデプロイ方法の詳細については、「公式証明書のクイックスタート」をご参照ください。
ステップ 1: サーバーグループを作成し、バックエンドサーバーをサーバーグループに追加する
[ALB コンソール] にログインします。
上部のナビゲーションバーで、ALB インスタンスがデプロイされているリージョンを選択します。
左側のナビゲーションウィンドウで、[ALB] > [サーバーグループ] を選択します。
[サーバーグループ] ページで、サーバーグループの作成 をクリックします。
サーバーグループの作成 ダイアログボックスで、次のパラメーターを構成し、[作成] をクリックします。
次の表に、このトピックに関連するパラメーターを示します。ビジネス要件に基づいて他のパラメーターを設定するか、デフォルト値を使用します。
パラメーター
説明
サーバーグループタイプ
サーバーグループタイプを選択します。この例では、サーバータイプ が選択されています。
VPC
ドロップダウンリストから ALB インスタンスの VPC を選択します。 ALB インスタンスの VPC 内のサーバーのみをサーバーグループに追加できます。
バックエンドサーバープロトコル
この例では、[gRPC] が選択されています。
ヘルスチェック
この例では、ヘルスチェックが有効になっています。
ヘルスチェック設定
[変更] をクリックして、ヘルスチェック設定を変更します。
ヘルスチェックするプロトコル: この例では、[gRPC] が選択されています。
ヘルスチェック方法: この例では、[POST] が選択されています。
ヘルスチェックステータスコード: 健全なバックエンドサーバーを表すステータスコードを選択します。ヘルスチェックと gRPC サービスは同じステータスコードを使用する必要があります。この例では、
12が使用されています。
サーバーグループ ページで、管理するサーバーグループの ID をクリックします。
[バックエンドサーバー] タブをクリックし、バックエンドサーバーの追加 をクリックします。
バックエンドサーバーの追加 パネルで、1 つ以上の Elastic Compute Service (ECS) インスタンスを選択し、[次へ] をクリックします。
ポート/重み ステップで、ECS インスタンスのポートと重みを指定し、[OK] をクリックします。
説明ECS インスタンスと gRPC サービスは同じポートを使用する必要があります。セキュリティグループルールでポートへのリクエストが許可されていることを確認してください。
ステップ 2: HTTPS リスナーを作成する
[ALB コンソール] にログインします。
上部のナビゲーションバーで、ALB インスタンスがデプロイされているリージョンを選択します。
左側のナビゲーションウィンドウで、[インスタンス] をクリックします。
[インスタンス] ページで、ALB インスタンスを見つけ、[アクション] 列の [リスナーの作成] をクリックします。
[リスナーの構成] ステップで、パラメーターを構成します。次の表に、いくつかのパラメーターを示します。ビジネス要件に基づいて他のパラメーターを設定するか、デフォルト値を使用します。パラメーターを構成した後、[次へ] をクリックします。
パラメーター
説明
リスナープロトコル
この例では、[HTTPS] が選択されています。
リスナーポート
この例では、ポート 443 が選択されています。
説明バックエンドサーバーが gRPC プロトコルを使用している場合、HTTPS のみがサポートされます。
gRPC は、通信プロトコルとして HTTP/2 を使用します。バックエンドサーバーが gRPC を使用している場合、HTTPS リスナーで HTTP/2 を有効にする必要があります。 HTTP/2 はデフォルトで ALB で有効になっています。 [HTTP/2 を有効にする] のステータスが [有効] になっていることを確認し、HTTP/2 を無効にしないでください。
[SSL 証明書の構成] ステップで、パラメーターを構成します。次の表に、いくつかのパラメーターを示します。ビジネス要件に基づいて他のパラメーターを設定するか、デフォルト値を使用します。パラメーターを構成した後、[次へ] をクリックします。
パラメーター
説明
サーバー証明書
SSL 証明書を選択します。
[サーバーグループの選択] ステップで、パラメーターを構成します。次の表に、いくつかのパラメーターを示します。ビジネス要件に基づいて他のパラメーターを設定するか、デフォルト値を使用します。パラメーターを構成した後、[次へ] をクリックします。
パラメーター
説明
サーバーグループ
準備した gRPC サーバーグループを選択します。
[構成の確認] ステップで、パラメーター設定を確認し、[送信] をクリックします。
ステップ 3: DNS レコードを作成する
実際のビジネスシナリオでは、CNAME レコードを使用してカスタムドメイン名を ALB インスタンスのドメイン名にマッピングすることをお勧めします。
左側のナビゲーションウィンドウで、 を選択します。
[インスタンス] ページで、ALB インスタンスのドメイン名をコピーします。
CNAME レコードを作成するには、次の手順を実行します。
説明Alibaba Cloud ドメインを使用してドメイン名を登録していない場合は、DNS レコードを構成する前に、Alibaba Cloud DNS にドメイン名を追加する必要があります。詳細については、「ドメイン名の管理」をご参照ください。
[Alibaba Cloud DNS コンソール] にログインします。
[パブリック権威 DNS 解決] ページで、ドメイン名を見つけ、[アクション] 列の [DNS 設定] をクリックします。
ドメイン名詳細ページの [DNS 設定] タブで、[レコードの追加] をクリックします。
[レコードの追加] パネルで、パラメーターを構成し、[OK] をクリックします。次の表にパラメーターを示します。
パラメーター
説明
レコードタイプ
ドロップダウンリストから [CNAME] を選択します。
ホスト名
ドメイン名のプレフィックスを入力します。この例では、@ が入力されています。
説明ルートドメイン名を使用する場合は、
@を入力します。リクエスト行
[デフォルト] を選択します。
レコード値
CNAME、つまり ALB インスタンスのドメイン名を入力します。
TTL
CNAME レコードが DNS サーバーにキャッシュされる生存時間 (TTL) 値を選択します。この例では、デフォルト値が使用されています。
ステップ 4: ネットワーク接続をテストする
上記の手順を完了すると、クライアントは gRPC サービスがデプロイされているバックエンドサーバーにアクセスできます。このセクションでは、クライアントと gRPC サービス間のネットワーク接続をテストする方法について説明します。
ブラウザを使用して gRPC サービスにアクセスすることはできません。 grpcurl などのツールを使用してテストを実行することをお勧めします。
クライアントで次のコマンドを実行して、ECS インスタンスにデプロイされている gRPC サービスにアクセスします: grpcurl -insecure -v <ドメイン名>:<リスナーポート> <gRPC サービス名>/<メソッド>。
次のエコー応答パケットは、クライアントが ALB インスタンスを介して ECS インスタンスにデプロイされている gRPC サービスにアクセスできることを示しています。
参照
HTTPS リスナーのパラメーターと使用上の注意の詳細については、「HTTPS リスナーを追加する」をご参照ください。
サーバーグループのパラメーターと使用上の注意の詳細については、「サーバーグループの作成と管理」をご参照ください。
ヘルスチェックのパラメーターと使用上の注意の詳細については、「ヘルスチェック」をご参照ください。