本ドキュメントはAI翻訳で提供されています。翻訳内容が原文と異なる場合は、韓国語の原文が優先されます。

Network > Load Balancer > 概要

NHN Cloudはロードバランサーを提供しています。ロードバランサーを利用することで、

  • 1台のインスタンスでは処理が困難な負荷を複数のインスタンスに分散し、処理量を増やすことができます。
  • 障害が発生したか、メンテナンス中のインスタンスを自動的にサービスから除外し、可用性を高めることができます。

ロードバランシング方式

ロードバランサーは、計3種類のロードバランシング方式をサポートしています。

  • Round Robin (順次選択):トラフィックを送信するインスタンスを順次選択する、最も基本的で一般的なロードバランシング方式です。全てのメンバーインスタンスが同じリクエストに対して同一のレスポンスを返す場合に使用できる方式です。

  • Least Connections (最小接続優先選択):現在のTCP接続数が最も少ないインスタンスを選択する方式です。つまり、TCP接続数を基準にしてインスタンスの負荷状況を把握し、メンバーの中で最も負荷が少ないインスタンスに送信することで、可能な限り均等にリクエストが処理されるようにします。リクエストに伴う処理負荷の変動が激しい場合に適用すれば、特定のインスタンスに負荷が集中する状況を防ぐことができます。

  • Source IP (送信元IP基準選択):リクエスト元の送信元IPをハッシュ化し、処理するインスタンスを選択する方式です。この方式を使用する場合、同一のIPから入るリクエストは常に同じインスタンスに転送されます。あるユーザーのリクエストを毎回同じインスタンスで処理したい場合に使用すると便利です。

サポートプロトコル

ロードバランサーは以下のプロトコルをサポートしています。

  • TCP
  • HTTP
  • HTTPS
  • TERMINATED_HTTPS

上記のプロトコルのうち、TERMINATED_HTTPSプロトコルは、HTTPSトラフィックを受信し、メンバーインスタンスにはHTTPトラフィックとして転送する方式です。TERMINATED_HTTPSプロトコルを使用する場合、エンドユーザーとロードバランサー間ではHTTPSで通信して高いセキュリティを確保し、サーバーにはHTTPトラフィックを渡すことで、復号に必要なCPU負荷を軽減できます。

ポイント

TERMINATED_HTTPSプロトコルを使用するには、証明書と秘密鍵をロードバランサーに登録する必要があります。この時、登録する秘密鍵は必ずパスワードが削除されている必要があります。

ロードバランサーSSL/TLSバージョン

  • TERMINATED_HTTPSプロトコルを使用するロードバランサーを作成する際、クライアントとロードバランサー間の通信に使用するSSL/TLS (Secure Socket Layer/Transport Layer Security) バージョンを選択できます。
  • SSL/TLSプロトコルバージョンが低いとセキュリティの欠陥がある可能性があり、暗号化スイート (Cipher Suite) を構成する暗号アルゴリズムのセキュリティも低いため、クライアントがサポートするSSL/TLSバージョンのうち最も高いバージョンを選択することを推奨します。

SSL/TLSバージョン

SSL/TLSバージョンのいずれかを選択してロードバランサーを作成します。作成されたロードバランサーは、以下のように選択したバージョンと選択したバージョンの上位バージョンのみを使用してクライアントと通信します。

SSL/TLSバージョンの設定 ロードバランサーが使用するSSL/TLSバージョン
SSLv3 SSLv3, TLSv1.0, TLSv1.1, TLSv1.2, TLSv1.3
TLSv1.0 TLSv1.0, TLSv1.1, TLSv1.2, TLSv1.3
TLSv1.0_2016 TLSv1.0, TLSv1.1, TLSv1.2, TLSv1.3
TLSv1.1 TLSv1.1, TLSv1.2, TLSv1.3
TLSv1.2 TLSv1.2, TLSv1.3
TLSv1.3 TLSv1.3

SSL/TLSバージョン別暗号化スイート

  • クライアントとロードバランサー間の鍵交換、証明書の検証、メッセージの暗号化、メッセージの整合性チェックなど、HTTPS通信のために使用される暗号アルゴリズムのセットを暗号化スイートと呼びます。
  • SSL/TLSバージョンによって使用される暗号化スイートは以下のとおりです。
  • 高いTLSバージョンを選択すると、セキュリティの低いアルゴリズムを使用する暗号化スイートは使用されません。
SSL/TLSバージョンの設定 使用される暗号化スイート 備考
SSLv3 TLS-AES-128-GCM-SHA256
TLS-AES-256-GCM-SHA384
TLS-CHACHA20-POLY1305-SHA256
ECDHE-RSA-AES128-GCM-SHA256
ECDHE-RSA-AES128-SHA256
ECDHE-RSA-AES128-SHA
ECDHE-RSA-AES256-GCM-SHA384
ECDHE-RSA-AES256-SHA384
ECDHE-RSA-AES256-SHA
AES128-GCM-SHA256
AES256-GCM-SHA384
AES128-SHA256
AES256-SHA
AES128-SHA
DES-CBC3-SHA
RC4-MD5
TLSv1.0 TLS-AES-128-GCM-SHA256
TLS-AES-256-GCM-SHA384
TLS-CHACHA20-POLY1305-SHA256
ECDHE-RSA-AES128-GCM-SHA256
ECDHE-RSA-AES128-SHA256
ECDHE-RSA-AES128-SHA
ECDHE-RSA-AES256-GCM-SHA384
ECDHE-RSA-AES256-SHA384
ECDHE-RSA-AES256-SHA
AES128-GCM-SHA256
AES256-GCM-SHA384
AES128-SHA256
AES256-SHA
AES128-SHA
DES-CBC3-SHA
RC4-MD5 除外
TLSv1.0_2016 TLS-AES-128-GCM-SHA256
TLS-AES-256-GCM-SHA384
TLS-CHACHA20-POLY1305-SHA256
ECDHE-RSA-AES128-GCM-SHA256
ECDHE-RSA-AES128-SHA256
ECDHE-RSA-AES128-SHA
ECDHE-RSA-AES256-GCM-SHA384
ECDHE-RSA-AES256-SHA384
ECDHE-RSA-AES256-SHA
AES128-GCM-SHA256
AES256-GCM-SHA384
AES128-SHA256
AES256-SHA
AES128-SHA
DES-CBC3-SHA 除外
TLSv1.1 TLS-AES-128-GCM-SHA256
TLS-AES-256-GCM-SHA384
TLS-CHACHA20-POLY1305-SHA256
ECDHE-RSA-AES128-GCM-SHA256
ECDHE-RSA-AES128-SHA256
ECDHE-RSA-AES128-SHA
ECDHE-RSA-AES256-GCM-SHA384
ECDHE-RSA-AES256-SHA384
ECDHE-RSA-AES256-SHA
AES128-GCM-SHA256
AES256-GCM-SHA384
AES128-SHA256
AES256-SHA
AES128-SHA
同上
TLSv1.2 TLS-AES-128-GCM-SHA256
TLS-AES-256-GCM-SHA384
TLS-CHACHA20-POLY1305-SHA256
ECDHE-RSA-AES128-GCM-SHA256
ECDHE-RSA-AES128-SHA256
ECDHE-RSA-AES256-GCM-SHA384
ECDHE-RSA-AES256-SHA384
AES128-GCM-SHA256
AES256-GCM-SHA384
AES128-SHA256
ECDHE-RSA-AES128-SHA
ECDHE-RSA-AES256-SHA
AES256-SHA
AES128-SHA 除外
TLSv1.3 TLS-AES-128-GCM-SHA256
TLS-AES-256-GCM-SHA384
TLS-CHACHA20-POLY1305-SHA256
ECDHE-RSA-AES128-GCM-SHA256
ECDHE-RSA-AES128-SHA256
ECDHE-RSA-AES256-GCM-SHA384
ECDHE-RSA-AES256-SHA384
AES128-GCM-SHA256
AES256-GCM-SHA384
AES128-SHA256 除外

カスタムSSLポリシー

標準で提供されるSSL/TLSバージョン別の暗号化スイートの組み合わせに加えて、必要な暗号化スイートのみを直接選んで適用したい場合は、カスタムSSLポリシーを作成してリスナーに接続できます。

SSLポリシーは次の要素で構成されます。

  • 最小TLSバージョン(min_tls_version):該当するポリシーが許可する最も低いTLSバージョンです。このバージョン以上の接続のみを許可します。作成後には変更できません。
  • 暗号化スイート(ciphers):使用する暗号化スイートの一覧です。TLS 1.2以下の暗号化スイートとTLS 1.3暗号化スイートを区別せずにコロン(:)で繋げた1つの文字列で指定します。サーバーが名前のプレフィックス(TLS_で始まればTLS 1.3)で自動分類して適用します。少なくとも1つ以上指定する必要があります。

注意

  • 最小TLSバージョンがTLSv1.3の場合、ciphersにTLS 1.2以下の暗号化スイートを含めることはできません。TLS 1.3ポリシーではTLS 1.2のハンドシェイクが発生せず、TLS 1.2の暗号化スイートが適用されないためです。その他の最小TLSバージョンでは、TLS 1.2以下 / TLS 1.3暗号化スイートを自由に混在させたり、1種類だけを指定したりできます。
  • SSLポリシーをリスナーに接続する場合、リスナーのTLSバージョンは該当するポリシーの最小TLSバージョンと必ず一致する必要があります。
  • カスタムSSLポリシーはテナントごとに最大10個まで作成できます。
  • SSLポリシーが1つ以上のリスナーに接続されている場合は削除できません。削除するには、先に接続されている全てのリスナーからポリシーを解除する必要があります。

ポイント

  • 照会レスポンスのciphersは、常にTLS 1.2以下の暗号化スイートが先、TLS 1.3暗号化スイートが後にくる順序に正規化されて返却されます。リクエスト時に送信された元の順序は保持されません。
  • SSLポリシーが接続されたリスナーには、ポリシーの暗号化スイート設定が適用されます。標準で提供されるSSL/TLSバージョン別の暗号化スイート表とは異なり、ユーザーが指定したスイートのみが選択的に適用されます。

ロードバランサーの作成

ロードバランサーはVPCサブネット内でIPを自動的に割り当てられて作成するか、IPを指定して作成できます。

  • 自動で割り当てる場合:サブネットの利用可能なIPのいずれかをロードバランサーのIPとして使用します。
  • IPを指定する場合:指定されたIPをロードバランサーのIPとして使用します。IPはサブネットのCIDRの範囲内である必要があります。

ロードバランサーはインスタンスをメンバーとして登録し、流入したトラフィックを分散します。メンバーは2つの方法で登録できます。

  • インスタンス:該当するVPC、及びVPCにピアリングされたVPCに属するインスタンスをメンバーとして追加できます。
  • IPアドレス:IPを直接入力してメンバーを登録できます。この場合、ロードバランサーとインスタンスの通信経路が適切に設定されている必要があります。

ロードバランサーに流入して処理されるトラフィックはリスナーで定義します。リスナーごとにトラフィックを受信するポートとプロトコルを定義し、1つのロードバランサーで多様なトラフィックを処理するように構成できます。一般的に、WebサーバーにはHTTPトラフィックを受信する80ポートのリスナーと、HTTPSトラフィックを受信する443ポートのリスナーを設定して使用します。1つのロードバランサーに複数のリスナーを登録できます。

注意

ロードバランサーで同一の受信ポートを持つリスナーを重複して作成することはできません。

ロードバランサーエンジンバージョン

ロードバランサーは、トラフィックを処理する内部エンジンのバージョンとして v1v2 の2種類を提供します。エンジンバージョンによって、HTTP トラフィックの処理など一部の動作が異なる場合があります。

エンジンバージョン 説明
v2 最新のエンジンバージョンです。新規作成するロードバランサーにデフォルトで適用され、HTTP/2 など最新エンジンでのみ提供される機能を使用できます。
v1 旧バージョンのエンジンです。既存の動作との互換性が必要な場合に使用します。
  • 新規ロードバランサー: 常に最新バージョン(v2)で作成されます。
  • 既存のロードバランサー: この機能が導入される前に作成されたロードバランサーは、旧バージョン(v1)を維持します。
  • エンジンバージョンの変更: ロードバランサーのエンジンバージョンを変更できます。

エンジンバージョン別サポート機能

機能 サポート開始バージョン 説明
HTTP/2 プロトコルサポート v2 HTTP/1、HTTP/2 バージョンを選択して使用できます。v1 では HTTP/1 のみサポートされます。

注意

エンジンバージョンを変更すると、次のように HTTP トラフィック処理の動作が変わる場合があります。運用環境に適用する前に、必ずテストしてください。

  • HTTP レスポンスチャンク処理: v2 は複数のチャンクに分割して送信される HTTP レスポンスを 1 つに統合して処理できます。レスポンスがチャンク単位で届くことを前提に動作するクライアントの場合、動作が変わる可能性があります。
  • HTTP ヘッダー名の表記: v2 はリクエスト・レスポンスの HTTP/1.1 ヘッダー名を小文字に変換して転送する場合があります(例: Content-Typecontent-type)。HTTP ヘッダー名は標準上、大文字と小文字を区別しませんが、ヘッダー名の大文字・小文字を区別して処理するバックエンドサーバーやクライアントが存在する場合、動作に影響を与える可能性があります。特にレスポンスヘッダーを読み取るクライアントが影響を受ける場合があります。
  • HTTP 標準への準拠: v2 は HTTP 標準をより厳密に準拠します。非標準形式のリクエスト/レスポンスを使用していた場合、動作が変わる可能性があります。

v2 は HTTP 標準(RFC)に準拠していますが、その過程で既存(v1)と比較して一部の動作が若干異なる場合があります。上記の項目は代表的な例であり、明示されていない他の動作も変わる可能性があるため、エンジンバージョンを変更した後は、必ず十分に検証してから運用環境に適用してください。

ロードバランサー HTTP プロトコルバージョン

次のプロトコルを使用する場合、プロトコルバージョンとして HTTP/1 または HTTP/2 を選択できます。

  • リスナー TERMINATED_HTTPS
  • メンバーグループ HTTP、HTTP_REENCRYPT

HTTP/2 を選択した場合、メンバーグループで HTTP を選択すると H2C(平文)で、HTTP_REENCRYPT を選択すると H2(TLS 暗号化)で通信します。 選択したプロトコルバージョンに従って厳密に動作し、HTTP/2 を選択した場合は HTTP/1 で通信することはできません。 ヘルスチェックプロトコルを HTTP または HTTPS で選択すると、メンバーグループで選択したプロトコルバージョンと同じように動作します。

注意

  • ロードバランサーエンジンバージョン v1 では使用できません。
  • メンバーグループのプロトコルバージョンが HTTP/2 で、ヘルスチェックプロトコルに HTTP または HTTPS を選択した後に Host を入力しない場合、ホストヘッダーに NHNLB が自動的に設定されます。
  • リスナーのプロトコルバージョンが HTTP/2 の場合、Keep-Alive タイムアウトを [使用しない] に設定しても、クライアントとのセッションは即座に終了しません。HTTP/2 は 1 つの接続で複数のリクエストを多重化して処理するため、レスポンスごとに接続を終了する HTTP/1 の動作は適用されません。

L7ルール

ロードバランサーはL7データに基づいてロードバランシングを実行できます。L7ルーティングテンプレートを選択してロードバランサーを作成する場合、L7ポリシーが含まれたロードバランサーを作成できます。 使用可能なアクションは以下のとおりです。

  • 対象グループへ転送:L7ルールに一致した場合に、設定された対象グループへ送信する方式です。L7データに基づいて特定の対象グループへパケットをルーティングできます。
  • URLへ転送:L7ルールに一致した場合に、設定されたURLにリダイレクトする機能です。HTTPヘッダのLocationを使用してリダイレクトを実行します。
  • ブロック:L7ルールに一致した場合にブロックする機能です。Forbidden (403)のレスポンスを返却します。

ロードバランサーのプロキシモード

ロードバランサーはプロキシモードで動作します。したがって、クライアントはリクエストを送信するためにロードバランサーと接続を確立し、ロードバランサーはインスタンスサーバーと接続を確立します。メンバーインスタンスサーバーの視点からは、セッションの送信元 (Source) IPがロードバランサーのIPとして認識されます。サーバーでクライアントのIPを確認するには、ロードバランサーが追加したX-Forwarded-Forヘッダの情報を参考にするか (HTTP/TERMINATED_HTTPSプロトコル)、Proxy Protocolを使用する必要があります (TCP/HTTPSプロトコル)。

ポイント

ロードバランサーがプロキシモードで動作する場合、クライアントがリクエストするポートとサーバー側でサービスするポートを異なる形でサービスできます。また、TERMINATED_HTTPSのようにサーバーの負荷を軽減する機能も提供でき、クライアントに送信されるトラフィック量も統計の形で提供できるようになります。(統計機能は追加予定)

ポイント

HTTPの非標準ヘッダとして、サーバーがクライアントのIPを確認するために使用します。 ロードバランサー経由で入るHTTPリクエストにはX-Forwarded-Forキーが含まれます。その値はクライアントのIPです。

X-Forwarded-Forヘッダは、ロードバランサーのプロトコルをHTTP/TERMINATED_HTTPSに設定した場合にのみ有効になります。リスナー単位でX-Forwardedヘッダの追加/削除を制御できます。

ポイント

ロードバランサーでTCPを使用する際、クライアント側のIP情報を送信するためのプロトコルです。人間が理解しやすいようにUS-ASCIIフォーマットの1行のテキストで表現されています。TCP接続が確立されると最初に1回送信され、受信側で全て受信するまで他のデータ送信は遅延します。

プロキシプロトコルは大きく6つの項目に分類されます。それぞれの項目は空白文字で区切られます。 最後の文字は必ずCarrige Return () + Line Feed (\n)で終わる必要があります。

```
PROXY INET_PROTCOL CLIENT_IP PROXY_IP CLIENT_PORT PROXY_PORT\r\n
```
略語 ASCII HEX 説明
PROXY "PROXY" 0x50 0x52 0x4F 0x58 0x59 プロキシプロトコルであることを通知するためのインジケーター
INET_PROTOCL "TCP4"または"TCP6" 0x54 0x43 0x50 0x34または0x54 0x43 0x50 0x36 使用中のINETプロトコル形式
CLIENT_IP 例) "192.168.100.101"
または"fe80::a159:b1f3:c346:5975"
0xC0 0xA8 0x64 0x65 送信元IPアドレス
PROXY_IP 例) "192.168.100.102"
または"fe80::a159:b1f3:c346:5976"
0xC0 0xA8 0x64 0x66 宛先IPアドレス
CLIENT_PORT 例) "43179" 0xA8 0xAB 送信元ポート
PROXY_PORT 例) "80" 0x80 宛先ポート

プロキシプロトコルの例は以下のとおりです。

  • "PROXY TCP4 255.255.255.255 255.255.255.255 65535 65535\r\n": TCP/IPv4
  • "PROXY TCP6 ffff:f...f:ffff ffff:f...f:ffff 65535 65535\r\n": TCP/IPv6
  • "PROXY UNKNOWN\r\n":不明な接続

TCPまたはHTTPSプロトコルを使用する場合、ロードバランサーにプロキシプロトコルを設定することでクライアントのIPを確認できます。この場合、サーバーにも上記のようなプロキシプロトコルを認識する機能を備えている必要があります。

プロキシプロトコルとヘルスチェック

リスナーにプロキシプロトコルを設定すると、サービストラフィックには常にプロキシプロトコルが送信されますが、ヘルスチェックトラフィックにはヘルスチェックポートの設定に応じて送信されるかどうかが異なります。ヘルスチェックポートをメンバーポートに設定した場合はヘルスチェックの接続にもプロキシプロトコルが送信され、ユーザー指定で別のポートを指定した場合は送信されません。

リスナープロキシプロトコル ヘルスチェックポート ヘルスチェック時のプロキシプロトコル サービストラフィックのプロキシプロトコル
ON メンバーポート 送信 送信
ON ユーザー指定 送信しない 送信
OFF メンバーポート 送信しない 送信しない
OFF ユーザー指定 送信しない 送信しない

したがって、ヘルスチェックプロトコルに HTTP または HTTPS を使用しながらプロキシプロトコルが送信される場合、メンバーインスタンスがプロキシプロトコルを認識できる必要があります。認識できる場合に正常なレスポンスが返され、ACTIVE 状態になります。メンバーインスタンスがプロキシプロトコルをサポートしていない場合は、ヘルスチェックポートをユーザー指定に設定してプロキシプロトコルが送信されないようにする必要があります。

ヒント

ヘルスチェックプロトコルが TCP の場合は、メンバーインスタンスとの TCP ハンドシェイクの成否のみを確認します。そのため、プロキシプロトコルの送信有無やメンバーインスタンスのプロキシプロトコルサポートの有無にかかわらず、該当ポートが開いていれば ACTIVE 状態とみなします。

セッション接続制限

ロードバランサーはQoSを保証するため、リスナーごとに同時に維持できる接続数を制限しています。指定された接続制限値を超過するリクエストが入ってきた場合、ロードバランサー内部のキューに蓄積され、先行するリクエストが完了した後に処理されます。また、キューがいっぱいになるか、サーバー/クライアント側のタイムアウトに達してリクエストが強制的に中断される場合があります。この場合、クライアント側は予期せぬレスポンス遅延を経験する可能性があります。

ポイント

一般ロードバランサーのセッション接続制限の最大値は60,000、専用ロードバランサーの場合は480,000です。

セッション維持

ユーザー情報を維持する必要がある場合や、あるクライアントのリクエストが特定のサーバーにのみ転送される必要があるサービスのために、ロードバランサーのセッション維持機能を利用できます。クライアントのリクエストを処理したサーバーが、継続してそのクライアントのリクエストを処理するようにする設定です。ロードバランシング方式をSOURCE IPに選択した場合、クライアントのIPに基づいてサーバーを決定するため、セッションの維持が提供されます。ロードバランシング方式にROUND ROBINやLEAST CONNECTIONを使用する場合は、次のようなセッション維持機能を使用できます。

  • No Session Persistence (セッション維持なし):セッション維持を行わない方式です。

  • Source IP (送信元IPによるセッション管理):リクエスト元の送信元IPを基準にセッションを維持する方式です。このため、最初のリクエスト時にロードバランシング方式によって選択されたインスタンスと送信元IP間のマッピングテーブルを内部的に保管します。その後、同じ送信元IPを持つリクエストが入ってきた場合、マッピングテーブルを確認して最初のリクエストにレスポンスを返したインスタンスに転送します。ロードバランサーは最大10,000個の送信元IPに対するマッピングを保存できます。TCPプロトコルのリスナーでセッションを維持するように設定したい場合は、この方式を使用する必要があります。

  • APP Cookie (アプリケーションによるセッション管理):サーバー側から提供される明示的なCookie設定を通じてセッションを維持する方式です。最初のリクエスト時、サーバーは自身に設定されたCookie値を設定するように、HTTPのSet-Cookieヘッダを通じて転送する必要があります。この時、ロードバランサーはサーバーのレスポンス中に指定されたCookieがあるか検査し、Cookieがあれば内部的にCookieとサーバーID間のマッピングを維持します。その後、クライアントがCookieヘッダに特定のサーバーを指すCookieを含めて送信すると、ロードバランサーがCookieに対応するサーバーにリクエストを転送します。ロードバランサーでは、CookieとサーバーID間のマッピングが3時間使用されないと自動的に削除されます。

  • HTTP Cookie (ロードバランサーによるセッション管理):APP Cookie方式と似ていますが、ロードバランサーで自動的に設定されるCookieを通じてセッションを維持する方式です。ロードバランサーはサーバーのレスポンスにSRVというCookieを追加して送信します。この時、SRV Cookieの値はサーバーごとの固有IDです。クライアントがSRVをCookieに含めて送信すると、最初にレスポンスを返したサーバーにリクエストが転送されます。

ポイント

ロードバランサーにTCPセッションの接続維持時間を設定できます。Keep-Aliveタイムアウト値を設定することで、クライアントとロードバランサー、ロードバランサーとサーバー間のセッション維持時間を調整できます。

無効なリクエストのブロック

HTTPリクエストヘッダに無効な文字が含まれている場合にブロックする機能です。サーバーの脆弱性を狙ったハッカーの攻撃や、バグのあるブラウザーを通じて無効な文字が含まれたHTTPリクエストヘッダが流入する可能性があります。この機能が有効化されると、ロードバランサーは無効な文字が含まれたHTTPリクエストをブロックしてインスタンスに送信されるのを防ぎ、400レスポンスコード (bad request) をクライアントに送信します。

カスタムレスポンス

ロードバランサーのリスナーで特定のHTTPエラーコードが発生した際に、ユーザーに送信するレスポンスをユーザーが直接定義できます。カスタムレスポンスを設定すると、デフォルトのシステムレスポンスの代わりに、目的のカスタムメッセージやHTMLなどの内容をクライアントに送信できます。

サポートするHTTPステータスコードは400、403、408、500、502、503、504です。レスポンスボディは最大1024文字まで入力でき、コンテンツタイプはtext/htmltext/plainapplication/jsonapplication/javascripttext/cssの中から選択できます。同一のリスナー内で、各エラーコードは1回のみカスタムレスポンスとして登録できます。

X-Forwardedヘッダ

ロードバランサーは、リスナー単位でX-Forwardedヘッダの追加/削除を制御できます。X-Forwardedヘッダは、クライアントのオリジン情報(プロトコル、ポート、IPアドレス)をバックエンドサーバーに送信するために使用されます。

X-Forwardedヘッダの種類

  • X-Forwarded-Proto:クライアントが使用したプロトコル(httpまたはhttps)をバックエンドサーバーに送信します。HTTPリスナーの場合はhttp、TERMINATED_HTTPSリスナーの場合はhttpsの値が設定されます。
  • X-Forwarded-Port:クライアントが接続したポート番号をバックエンドサーバーに送信します。
  • X-Forwarded-For:クライアントのオリジンIPアドレスをバックエンドサーバーに送信します。

X-Forwardedヘッダの制御

リスナーの作成時またはリスナーの修正時に、次の3つのフラグを通じて各ヘッダの追加/削除を制御できます。全てのフラグのデフォルト値はtrueです。

  • enable_x_forwarded_proto:X-Forwarded-Protoヘッダのon/off
  • enable_x_forwarded_port:X-Forwarded-Portヘッダのon/off
  • enable_x_forwarded_for:X-Forwarded-Forヘッダのon/off

ポイント

X-Forwardedヘッダは、HTTP/TERMINATED_HTTPSプロトコルを使用するリスナーでのみ使用できます。

インスタンスのヘルスチェック

NHN Cloudのロードバランサーは、メンバーとして登録されたインスタンスが正常に動作しているかを確認するため、定期的にヘルスチェックを試みます。ヘルスチェックは、指定されたプロトコルに従って決められたレスポンスが来るかを確認することで行われます。指定された回数や時間内に正常なレスポンスが来ない場合は、異常なインスタンスとみなして負荷分散の対象から除外します。この機能を通じて、予期せぬ障害やメンテナンスの際にも、中断することなくサービスを提供できます。

ロードバランサーは、ヘルスチェックのプロトコルとしてTCP、HTTP、HTTPSをサポートしています。精密なヘルスチェックを行うため、各プロトコルの使用時にヘルスチェックの方法を多様に設定できます。

リスナーにプロキシプロトコルを設定した場合、ヘルスチェックポートの設定に応じてヘルスチェックの動作が異なります。詳細については、「ロードバランサープロキシモード」の「プロキシプロトコルとヘルスチェック」を参照してください。

ロードバランサーの統計機能

ロードバランサーが処理したネットワークフローに関する様々な統計指標をチャートで確認できます。NHN Cloudロードバランサーの統計機能の特徴は以下のとおりです。

  • ロードバランサーごと、リスナーごとの統計チャートを提供します。
  • 1時間、24時間、1週間、1か月、指定期間などで期間を分類して表示できます。
  • ロードバランサーを基準として、クライアント統計量とインスタンス統計量がそれぞれ異なるチャートで提供されます。
  • インスタンス統計量は、メンバーインスタンスごとに分けて表示することも、集計結果のみを表示することもできます。(インスタンスごとに表示:ON/OFF)

提供されるチャートは以下のとおりです。

統計指標名
(チャート名)
区分 単位 説明
クライアントセッション数 クライアント ea ロードバランサーがクライアントと接続中のセッション数
クライアントセッションCPS クライアント cps
(connections per second)
クライアントと1秒間に新規接続したセッション数
セッションCPS インスタンス cps
(connections per second)
インスタンスと1秒間に新規接続したセッション数
トラフィック In インスタンス bps
(bits per second)
ロードバランサーがインスタンスに送信したトラフィック量
トラフィック Out インスタンス bps
(bits per second)
インスタンスがロードバランサーに送信したトラフィック量
ロードバランシング除外数 インスタンス ea ヘルスチェック(health check)の失敗により、ロードバランシングの対象から除外された回数

ポイント

  • 現在使用中のロードバランサー、リスナー、メンバーに対する統計チャートのみが提供されます。ロードバランサーのリソースを削除した場合、該当リソースの過去の統計データは提供されません。
  • 単位がeaであるチャートでは、設定した期間によって数値の意味が変わる場合があります。数値の意味は、各チャート上部の「?」アイコンにマウスカーソルを合わせると確認できます。
  • トラフィック In、トラフィック Outなど、ネットワーク使用量に関する指標でチャートに表示される数値は、L2、L3、L4ヘッダのサイズを除いたペイロード転送サイズを単位時間で割ったデータです。したがって、チャートに表示される数値は課金データとは無関係です。
  • 統計データは最大1年間分提供されます。

ロードバランサーのIPアクセス制御機能

ロードバランサーに流入するパケットを制御するには、IPアクセス制御機能を利用できます。 この機能はセキュリティグループとは異なる機能であり、違いは以下のとおりです。

ポイント

区分 セキュリティグループ ロードバランサーのIPアクセス制御 備考
制御対象 インスタンス ロードバランサー
設定対象 IP、ポートの設定 IPのみ設定 ロードバランサーに設定されたポート以外のトラフィックは基本的にブロック
制御トラフィック インバウンド/アウトバウンドトラフィック
選択可能
インバウンドトラフィックのみ制御対象
アクセス制御タイプ 許可ポリシーのみ設定 許可またはブロックポリシーを選択可能

セキュリティグループの設定とロードバランサーのIPアクセス制御設定は、互いに影響を与えません。したがって、インスタンスに送受信されるトラフィックを制御するにはセキュリティグループを使用し、ロードバランサーに流入するトラフィックを制御するにはIPアクセス制御機能を使用する必要があります。

IPアクセス制御機能を利用するには、以下の事項を設定する必要があります。

IPアクセス制御グループ

  • 1つのプロジェクトに最大10個のグループを作成できます。
  • グループのプロパティは、名前、メモ、アクセス制御タイプです。
  • アクセス制御タイプのプロパティは、「許可(Allow)」と「ブロック(Deny)」のいずれかを設定できます。
  • アクセス制御グループに、制御を希望するIPアクセス制御対象を追加できます。
  • IPアクセス制御グループを削除すると、グループ内の全てのIPアクセス制御対象が削除され、このアクセス制御グループが適用されていた全てのロードバランサーでそのIPを制御しなくなります。

IPアクセス制御タイプ

  • 「許可(Allow)」:グループに属するIPのアクセスは許可し、それ以外の全てのIPのアクセスをブロックします。
  • 「ブロック(Deny)」:グループに属するIPのアクセスはブロックし、それ以外の全てのIPのアクセスを許可します。

注意

'「許可」タイプのアクセス制御グループをロードバランサーに適用するには、ロードバランサーのメンバーインスタンスIPをアクセス制御対象に追加する必要があります。

IPアクセス制御対象

  • 1つのプロジェクトに最大1,000個のアクセス制御対象を作成できます。
  • アクセス制御対象は、メモ、IPアドレスなどのプロパティを持ちます。
  • 1つのアクセス制御対象は、IPアドレスまたはCIDR形式のIPアドレス範囲を持つことができます。CIDR形式のIPアドレス範囲を入力すると、そのネットワーク内の全ての帯域がアクセス制御対象に含まれます。

ポイント

NHN Cloud Security Monitoringサービスを利用すると、脅威となる送信元IPアドレスを特定できます。

IPアクセス制御タイプを「ブロック」に設定したIPアクセス制御グループを作成し、発見された脅威送信元IPをアクセス制御対象に追加することで、システムのセキュリティを高めることができます。

IPアクセス制御グループの適用

  • 1つのアクセス制御グループは、複数のロードバランサーに適用できます。
  • 1つのロードバランサーに複数のアクセス制御グループを適用できます。ただし、バインドされるグループのアクセス制御タイプが同じである必要があります。
  • IPアクセス制御グループを適用していないロードバランサーは、全てのIPのアクセスを許可します。

ポイント

  • ロードバランサーとIPアクセス制御の変更時の動作
    • ロードバランサーを削除すると、アクセス制御のバインディングが削除されます。アクセス制御グループは削除されません。
    • アクセス制御グループを削除すると、その内容がグループとバインドされた全てのロードバランサーに反映されます。
    • アクセス制御グループ内のアクセス制御対象を追加または削除すると、グループとバインドされた全てのロードバランサーにその内容が反映されます。
TOP