サーバーグループは、クライアントからのリクエストをバックエンドサーバーにルーティングします。リスナーを追加する際は、サーバーグループを指定する必要があります。リスナーは、設定されたプロトコルとポートに基づいて、対応するサーバーグループにトラフィックを転送します。Network Load Balancer (NLB) は、ヘルスチェックを用いてバックエンドサーバーの状態を監視します。
NLB サーバーグループのタイプ
|
サーバーグループタイプ |
バックエンドサーバータイプ |
説明 |
|
サーバータイプ |
ECS、ENI、ECI の各インスタンスをバックエンドサーバーとして追加できます。 |
バックエンドサーバーが NLB インスタンスからのリクエストを受信するには、サーバーグループと同じ VPC 内に存在する必要があります。 |
|
IP タイプ |
IP アドレスをバックエンドサーバーとして追加できます。 |
この IP アドレスは、サーバーグループが存在する VPC の CIDR ブロックに限定されません。リージョン間、VPC 間、またはオンプレミスデータセンターにあるサーバーの IP アドレスを追加できます。これらの IP アドレスは、NLB インスタンスからのリクエストを受信するバックエンドサーバーとして動作します。
プライベート IP アドレスのみをサポートしており、パブリック IP アドレスはサポートされていません。 重要
IP タイプのサーバーグループを作成する際には、VPC を選択する必要があります。VPC のドロップダウンリストには、現在のアカウント内の VPC のみが表示されます。クロスアカウントの VPC はサポートされていません。そのため、他のアカウントの ALB インスタンスの IP アドレスを、現在のアカウントの NLB インスタンスのバックエンドサーバーとして追加することはできません。クロスアカウントでの負荷分散が必要な場合は、他のソリューションをご検討ください。 |
バックエンドサーバーがリリースされたり、そのプライベート IP アドレスが変更されたりしても、NLB はサーバー情報を自動的に更新しません。サービスの中断を防ぐため、サーバーをリリースしたり設定を変更したりする前に、サーバーグループからそのサーバーを削除してください。
サーバーグループの作成
NLB は、バックエンドサーバーの接続数しきい値に基づく新しい接続の転送制限には対応していません。
バックエンド Pod で接続が飽和するリスクがある場合は、次のアプローチを検討してください:
-
フォールバックとしてのヘルスチェック:バックエンド Pod の永続的な TCP 接続が飽和し、ヘルスチェックプローブに応答できなくなった場合、連続失敗回数が [異常しきい値] に達した後に NLB がそのバックエンドサーバーを自動的に削除するよう、ヘルスチェックを設定します。新しいリクエストは、そのバックエンドサーバーに転送されなくなります。
-
接続ドレイン:サーバーグループを作成するときに [接続ドレイン] を有効にします。ヘルスチェックの失敗によってバックエンドサーバーが削除された後も、既存の永続的な TCP 接続は、接続ドレインのタイムアウトが切れるまで通信を継続できます。これにより、既存の接続が中断されないようになります。
-
Pod 側でのアクティブな接続拒否:より正確なトラフィック制御のために、Pod に接続数の監視を実装し、しきい値に達したときに新しい接続をアクティブに拒否する (たとえば、エラー応答を返すか、リッスンソケットを閉じる) ことを推奨します。
- NLBコンソールにログインします。
上部のナビゲーションバーで、NLBインスタンスがデプロイされています。
左側のナビゲーションウィンドウで、を選択します。
サーバーグループページで[サーバーグループの作成] をクリックします。
-
サーバーグループの作成 ダイアログボックスで、次の設定を行い、作成 をクリックします。
パラメーター
説明
[サーバーグループタイプ]
サーバーグループタイプを選択します:
-
[サーバータイプ]:バックエンドサーバーとして ECS、ENI、ECI インスタンスを追加できます。
-
[IP アドレスタイプ]:バックエンドサーバーとして IP アドレスを追加できます。プライベート IP アドレスのみがサポートされます。パブリック IP アドレスはサポートされていません。IP タイプのサーバーグループを作成する場合、VPC を選択する必要があります。現在のアカウントの VPC のみがサポートされています。クロスアカウント VPC の IP アドレスは追加できません。
[VPC]
ドロップダウンリストから VPC を選択します。ドロップダウンリストには、現在のアカウントの VPC のみが表示されます。他のアカウントの VPC はサポートされていません。
[バックエンドサーバープロトコル]
バックエンドプロトコルを選択します:
-
TCP:サーバーグループを TCP および TCP/SSL リスナーに関連付けます。
-
UDP:サーバーグループを UDP リスナーに関連付けます。
[スケジューリングアルゴリズム]
スケジューリングアルゴリズム を選択します:
-
[ラウンドロビン]:リクエストをバックエンドサーバーに順番に分散します。
-
[重み付けラウンドロビン] (デフォルト):重みに基づいてリクエストをバックエンドサーバーに分散します。重みが大きいバックエンドサーバーほど、より多くのリクエストを受信します。
-
[ソース IP ハッシュ]:送信元 IP アドレスに基づく一貫性ハッシュを使用します。同じ送信元 IP アドレスからのリクエストは、同じバックエンドサーバーにルーティングされます。
-
[4 タプルハッシュ]:4 タプル (送信元 IP、宛先 IP、送信元ポート、宛先ポート) に基づく一貫性ハッシュを使用します。同じストリームからのパケットは、同じバックエンドサーバーにルーティングされます。
-
[QUIC ID ハッシュ]:QUIC 接続 ID に基づく一貫性ハッシュを使用します。同じ QUIC ID を持つリクエストは、同じバックエンドサーバーにルーティングされます。
バックエンドプロトコルが UDP の場合にのみ、QUIC ID ハッシュを選択できます。
QUIC プロトコルは急速に進化しています。このアルゴリズムは、draft-ietf-quic-transport-10 に基づいて実装されています。すべての QUIC バージョンとの互換性は保証されません。本番環境でこのアルゴリズムを使用する前に、十分なテストを実行することを推奨します。
-
[重み付け最小接続]:各バックエンドサーバーの重みと実負荷 (接続数) の両方に基づいてリクエストを分散します。バックエンドサーバーの重みが同じ場合、接続数が最も少ないサーバーがより多くのリクエストを受信します。
[リソースグループ]
サーバーグループが属するリソースグループを選択します。
[タグ]
[タグキー] と [タグ値] を設定します。
[IP バージョン]
IP バージョンを選択します:
-
IPv4 (デフォルト):IPv4 バックエンドサーバーのみを追加できます。
-
[IPv4/IPv6 デュアルスタック]:IPv4 と IPv6 の両方のバックエンドサーバーを追加できます。
選択した VPC で IPv6 が有効になっていない場合は、IPv4 のみを選択できます。
[IP バージョンアフィニティ]
[IP バージョン] を [IPv4/IPv6 デュアルスタック] に設定した場合、[IP バージョンアフィニティ] を設定できます:
-
[アフィニティなし] (デフォルト):送信元の IP バージョンに関係なく、スケジューリングアルゴリズムに基づいて、リクエストは正常なバックエンドサーバーに分散されます。
-
[アフィニティモード]:リクエストは送信元の IP バージョンに基づいてルーティングされます。IPv4 リクエストは IPv4 バックエンドサーバーにのみルーティングされ、IPv6 リクエストは IPv6 バックエンドサーバーにのみルーティングされます。
[アフィニティモード] を選択した場合は、サーバーグループに正常な IPv4 と IPv6 の両方のバックエンドが含まれていることを確認してください。そうでない場合、対応する IP バージョンのリクエストを正しく転送できません。
[グレースフル・シャットダウン]
接続ドレインを有効にするかどうかを指定します。この機能はデフォルトで無効になっています。
接続ドレインを有効にする場合は、[接続ドレインタイムアウト] も設定する必要があります。タイムアウトは 0〜900 秒の範囲で設定できます。値が 0 の場合は、接続がただちにドレインされることを示します。
バックエンドサーバーが削除されたり、ヘルスチェックに失敗したりした場合:
-
接続ドレインが無効 (デフォルト) の場合、既存の接続は強制的に中断されることはなく、クライアントが切断するか、セッションが期限切れになった後にのみ中断されます。
-
接続ドレインが有効な場合、既存の接続はタイムアウトが切れるまで維持されます。その後、接続は強制的に閉じられ、スムーズなサービス移行が保証されます。
[クライアントアドレスの保持]
クライアント IP の保持を有効にするかどうかを指定します。この機能を有効にすると、バックエンドサーバーはクライアントの送信元 IP アドレスを取得できます。
この機能を無効にすると、バックエンドサーバーはクライアントとして機能して NLB インスタンスにアクセスできます。クライアントの送信元 IP アドレスを取得するには、リスナーで Proxy Protocol を有効にする必要があります。
IP ベースのサーバーグループは、クライアントの送信元 IP アドレスをバックエンドサーバーに自動的に渡しません。送信元 IP アドレスを取得するには、リスナーで Proxy Protocol を使用する必要があります。
[フルポート転送]
マルチポートフォワーディングを有効にするかどうかを指定します。この機能を有効にすると、バックエンドサーバーを追加するときにポートを指定する必要はありません。NLB は、受信リクエストのポートに基づいてトラフィックをバックエンドサーバーに転送します。
リスナーで マルチポートフォワーディング 機能を有効にする場合は、バックエンドサーバーグループでもこの機能を有効にする必要があります。
[ヘルスチェック]
ヘルスチェックを有効にするかどうかを指定します。
[ヘルスチェックの設定]
ヘルスチェックを有効にした場合、変更 をクリックしてヘルスチェック設定を変更できます。
[ヘルスチェックプロトコル]
ヘルスチェックのプロトコルを選択します:
-
TCP (デフォルト):SYN パケットを送信して、サーバーポートに到達可能かどうかをチェックします。
-
HTTP:HEAD または GET リクエストを送信して、サーバー上のアプリケーションが正常かどうかをチェックします。
-
UDP:ICMP Echo Request と UDP プローブパケットを送信して、ステータス情報を取得します。
ヘルスチェックプロトコルとして [ヘルスチェックプロトコル] を選択できるのは、サーバーグループのバックエンドプロトコルが UDP の場合のみです。
[ヘルスチェック方法]
ヘルスチェック方式を選択します:
-
GET:応答パケットが 8 KB を超える場合、パケットは切り捨てられます。これはヘルスチェックの結果には影響しません。
-
HEAD:HTTP リスナーのヘルスチェックでは、デフォルトで HEAD が使用されます。バックエンドサーバーが HEAD リクエストをサポートしていることを確認してください。バックエンドアプリケーションが HEAD リクエストをサポートしていないか無効にしている場合、ヘルスチェックが失敗する可能性があります。この場合は、GET 方式を使用してください。
このパラメーターは、ヘルスチェックプロトコルが HTTP の場合にのみ有効になります。
[ヘルスチェックプロトコルバージョン]
HTTP バージョンを選択します:HTTP/1.0 (デフォルト) または HTTP/1.1。
-
ヘルスチェックプロトコルのバージョンは、バックエンドアプリケーションがサポートする HTTP バージョンと一致している必要があります。そうでない場合、ヘルスチェックが失敗する可能性があります。バックエンドサーバーが:
-
HTTP 1.0 のみをサポートしている場合は、HTTP/1.0 を選択する必要があります。
-
HTTP 1.1 のみをサポートしている場合は、HTTP/1.1 を選択する必要があります。
-
HTTP 1.0 と HTTP 1.1 の両方をサポートしている場合は、どちらのバージョンでも選択できます。
-
このパラメーターは、ヘルスチェックプロトコルが HTTP の場合にのみ有効になります。
[ヘルスチェックポート]
ヘルスチェックサービスがバックエンドサーバーへのアクセスに使用するプローブポートを選択します。
-
[バックエンドサーバーポート]:デフォルトでは、ヘルスチェックサービスはバックエンドサーバーのポートを使用します。
-
[カスタムポート]:ヘルスチェック用のポートを指定します。
マルチポートフォワーディングを有効にする場合は、ヘルスチェックポートを指定する必要があります。
[ヘルスチェックパス]
ヘルスチェックページの URL を入力します。
このパラメーターは、ヘルスチェックプロトコルが HTTP の場合にのみ有効になります。
[ヘルスチェックドメイン名]
ヘルスチェック用のドメイン名を入力します。
-
[バックエンドサーバーのイントラネット IP] (デフォルト):ヘルスチェックのドメイン名として、バックエンドサーバーのプライベート IP アドレスが使用されます。
-
[カスタムドメイン名]:ドメイン名を入力します。
このパラメーターは、ヘルスチェックプロトコルが HTTP の場合にのみ有効になります。
[ヘルスチェックステータスコード]
ヘルスチェックが成功したことを示すステータスコードを選択します。http_2xx (デフォルト)、http_3xx、http_4xx、http_5xx を選択できます。
このパラメーターは、ヘルスチェックプロトコルが HTTP の場合にのみ有効になります。
[カスタムリクエスト / レスポンス]
UDP リスナーのヘルスチェックを設定する場合、[カスタムリクエスト / レスポンス] を有効にできます。次に、カスタムリクエスト フィールドに youraccountID などのリクエスト内容を入力し、カスタムレスポンス フィールドに slb123 などの期待されるレスポンスを入力します。
また、バックエンドサーバー上のアプリケーションに対応するヘルスチェック応答ロジックを追加する必要があります。たとえば、アプリケーションが youraccountID を含むリクエストを受信した場合、slb123 を含む応答を返す必要があります。
youraccountID は、slb123 を含むレスポンスを返す必要があります。
NLB インスタンスがバックエンドサーバーから期待される応答を受信した場合、ヘルスチェックは成功します。そうでない場合、ヘルスチェックは失敗します。この方法は、UDP ヘルスチェックの信頼性を最大限に高めます。
このパラメーターは、ヘルスチェックプロトコルが UDP の場合にのみ有効になります。
[応答タイムアウト期間]
ヘルスチェックリクエストへの応答を待つ期間です。バックエンドサーバーが指定された期間内に応答しない場合、ヘルスチェックは失敗します。
[ヘルスチェック間隔]
ヘルスチェックが実行される間隔です。
[ヘルスチェックプロトコル]を UDP に設定する場合は、[ヘルスチェック間隔]の値が [応答タイムアウト間隔]の値以上であることを確認してください。これにより、UDP プローブがタイムアウトのために無応答と誤判断されるのを防ぎます。
バックエンドで接続が飽和するリスクがある場合は、[ヘルスチェック間隔] を短くし (たとえば、2〜3 秒)、[異常しきい値] を低くして (たとえば、2 回の連続失敗)、バックエンドの接続飽和をより速く検出し、障害発見時間を短縮することを推奨します。
[正常しきい値]
バックエンドサーバーの状態が異常から正常に変わるために必要な、ヘルスチェックの連続成功回数です。
[異常しきい値]
バックエンドサーバーの状態が正常から異常に変わるために必要な、ヘルスチェックの連続失敗回数です。
-
バックエンドサーバーの追加 (サーバータイプ)
サーバータイプのサーバーグループを作成した場合、受信リクエストを処理するためにバックエンドサーバーを追加する必要があります。マルチポートフォワーディングが有効になっているサーバーグループに、同じ ECS、ENI、または ECI インスタンスを複数回追加することはできません。
-
サーバーグループ ページで、管理したいサーバーグループを見つけ、次のいずれかの方法を使用してバックエンドサーバーページを開きます。
-
操作 列で、バックエンドサーバーの変更 をクリックします。
-
サーバーグループ ID をクリックします。サーバーグループ詳細ページで、バックエンドサーバー タブをクリックします。
-
-
バックエンドサーバー タブで、バックエンドサーバーの追加 をクリックします。
-
バックエンドサーバーの追加 パネルで、サーバータイプ を選択し、次へ をクリックします。
-
ECS/ENI が ECS の購入 の場合、対象サーバーを選択するか、右上隅の ECS の購入 をクリックします。
ENI を選択するには、ターゲット ECS インスタンスにセカンダリ ENI がアタッチされ、上級モード スイッチがオンになっている必要があります。 次に、ターゲット ECS インスタンス ID の右側にある
アイコンをクリックして、ENI を選択します。サーバーグループのIP バージョンがIPv4/IPv6 デュアルスタックの場合、IP 列ヘッダーの横にある設定アイコンをクリックします。IP アドレス ダイアログボックスで、IP アドレスポリシーを選択します:
-
[IPv4 優先]: 利用可能なプライマリ IPv4 アドレスがデフォルトで選択されます。
-
[IPv6 優先]:利用可能な IPv6 アドレスがデフォルトで選択されます。ENI に複数の IPv6 アドレスがある場合、リスト内の順序に基づいて最初の利用可能なアドレスが選択されます。
-
[デュアルスタック]:利用可能なプライマリ IPv4 アドレスと最初の利用可能な IPv6 アドレスが選択されます。
このオプションは、ENI の既定で選択される IP アドレスのみを設定します。IP アドレス列で、手動で変更することもできます。
-
-
ECIがECIの場合、対象のサーバーを選択するか、右上隅のElastic Container インスタンスの購入をクリックします。
-
-
サーバーのポートとウェイトを設定し、OK をクリックします。
サーバーグループでマルチポート転送が有効になっている場合、バックエンドサーバーを追加するときにポートを指定する必要はありません。NLB は、受信リクエストのポートに基づいてバックエンドサーバーにトラフィックを転送します。
デフォルトのウェイトは 100 です。ウェイトが高いサーバーは、より多くのリクエストを受信します。
アイコンにカーソルを合わせると、複数のサーバーの重みとポートを一括で変更できます。-
下方向へコピー: 現在のサーバーの重みまたはポートを変更すると、それより下のすべてのサーバーの重みまたはポートが同じ値に変更されます。
-
上方向へコピー をクリックします。現在のサーバーのウェイトまたはポートを変更すると、上位のすべてのサーバーのウェイトまたはポートが同じ値に変更されます。
-
現在のサーバーの重みまたはポートを変更してすべてコピーをクリックすると、サーバーグループ内のすべてのサーバーの重みまたはポートが同じ値に変更されます。
-
リセット をクリックします:
-
サーバーグループ内のすべてのサーバーのデフォルトのウェイトを復元するには、重み の横にある リセット をクリックします。
-
ポート の横にある リセット をクリックすると、サーバーグループ内のすべてのサーバーのポート番号がクリアされます。
-
警告サーバーの重みを 0 に設定すると、そのサーバーは新しいリクエストを受信しなくなります。
-
バックエンドサーバーの追加 (IP タイプ)
IP タイプのサーバーグループを作成した場合、着信リクエストを処理するために IP アドレスをバックエンドサーバーとして追加する必要があります。マルチポートフォワーディングが有効になっているサーバーグループに、同じ IP アドレスを複数回追加することはできません。
-
同じ VPC 内の NLB インスタンスの仮想 IP アドレス (VIP)、または 以降に同じ VPC 内に作成された ALB インスタンスの VIP は追加できません。
-
プライベート IP アドレスのみがサポートされています。パブリック IP アドレスはサポートされていません。
-
サーバーグループ ページで、目的のサーバーグループを見つけ、次のいずれかの方法を使用して IP アドレスを追加します。
-
操作 列で、バックエンドサーバーの変更 をクリックします。
-
[サーバーグループ ID] をクリックします。
-
-
サーバーグループの詳細ページで、バックエンドサーバー タブをクリックし、次に IP アドレスの追加 をクリックします。
-
バックエンドサーバーの追加 パネルの サーバーの選択 タブで、IP アドレスを入力し、次へ をクリックします。
IP アドレスに、複数のポートと重みを設定できます。
-
ポート/重み タブで、追加された IP アドレスのポートとウェイトを設定し、OK をクリックします。
サーバーグループでマルチポート転送が有効になっている場合、バックエンドサーバーを追加するときにポートを指定する必要はありません。NLB は、受信リクエストのポートに基づいてバックエンドサーバーにトラフィックを転送します。
デフォルトのウェイトは 100 です。ウェイトが高いサーバーは、より多くのリクエストを受信します。
アイコンにカーソルを合わせると、複数のサーバーの重みとポートを一括で変更できます。-
下方向へコピー: 現在のサーバーの重みまたはポートを変更すると、それより下のすべてのサーバーの重みまたはポートが同じ値に変更されます。
-
上方向へコピー をクリックします。現在のサーバーのウェイトまたはポートを変更すると、上位のすべてのサーバーのウェイトまたはポートが同じ値に変更されます。
-
現在のサーバーの重みまたはポートを変更してすべてコピーをクリックすると、サーバーグループ内のすべてのサーバーの重みまたはポートが同じ値に変更されます。
-
リセット をクリックします:
-
サーバーグループ内のすべてのサーバーのデフォルトのウェイトを復元するには、重み の横にある リセット をクリックします。
-
ポート の横にある リセット をクリックすると、サーバーグループ内のすべてのサーバーのポート番号がクリアされます。
-
警告サーバーの重みを 0 に設定すると、そのサーバーは新しいリクエストを受信しなくなります。
-
その他の操作
|
操作 |
手順 |
|
基本情報の編集 |
サーバーグループ ページで、対象のサーバーグループを見つけて 基本情報の変更 をクリックします。基本情報の変更 ダイアログボックスで、スケジューリングアルゴリズム、IP バージョンアフィニティ (サーバーグループの IP バージョン が [IPv4/IPv6 デュアルスタック] の場合のみ利用可能)、接続ドレイン、およびクライアント IP の保持の設定を変更できます。 |
|
ヘルスチェック設定の編集 |
サーバーグループ ページで、対象のサーバーグループを見つけて ヘルスチェック設定の変更 をクリックします。ヘルスチェック設定の変更 ダイアログボックスで、ヘルスチェック設定を変更します。 警告
|
|
バックエンドサーバーの削除 |
必要に応じて、サーバーグループからバックエンドサーバーを削除できます。 警告
サーバーグループからバックエンドサーバーを直接削除すると、サービス中断が発生する可能性があります。これを回避するには、まずサーバーの重みを 0 に設定してから、サーバーグループから削除してください。
|
|
サーバーグループの削除 |
サーバーグループがリスナー転送ルールに関連付けられていない場合にのみ、サーバーグループを削除できます。サーバーグループを削除しても、そのバックエンドサーバーには影響しません。バックエンドサーバーとして登録されていた ECS、ENI、または ECI インスタンスが不要になった場合は、それらを停止または解放できます。 サーバーグループ ページで対象のサーバーグループを見つけ、操作 列で を選択し、OK をクリックします。 |
API リファレンス
-
CreateServerGroup : NLB インスタンスのサーバーグループを作成します。
-
DeleteServerGroup : NLB インスタンスのサーバーグループを削除します。
-
AddServersToServerGroup : NLB インスタンスのサーバーグループにバックエンドサーバーを追加します。
-
RemoveServersFromServerGroup : NLB インスタンスのサーバーグループからバックエンドサーバーを削除します。
-
UpdateServerGroupAttribute : NLB インスタンスのサーバーグループ構成を更新します。