プライベートパスネットワークロードバランサーの作成
プライベート・パス・ネットワーク・ロード・バランサー (NLB) は、プライベート・パス・サービスでのみ使用できます。 Load Balancers for VPCのページ から、またはプライベートパスのサービスプロビジョニングプロセスの一部として、プライベートパスのNLBを作成します。 コンソール、CLI、API、または Terraform を使って Private Path ネットワークロードバランサーを作成できます。
プライベート・パスにより、サービス・プロバイダーは、ホストされたサービスの利用者のためにプライベート接続を有効にし、管理することができる。 プライベート・パス・サービスでは、プライベート・パスNLBが各利用者の仮想プライベート・エンドポイント(VPE)ゲートウェイとのセキュアな接続を確立する必要がある。 詳しくは、 プライベート・パス・サービスについて を参照してください。
プライベートパスNLBはポートレンジ機能をサポートしている。 現在、プライベートパスNLBに接続されているすべてのVPEは、範囲内のどのポートにも接続できる。 詳しくは、パブリックネットワークのロードバランサーのポート範囲を設定する を参照してください。
開始前に
プライベートパスNLBが適切に構成されていることを確認するために、以下の要件を確認してください:
- VPCがない場合は、プライベートパスNLBを作成するのと同じリージョンにVPCを作成する。 プライベート・パス NLB とプライベート・パス・サービスに同じ VPC リージョンを使用します。
- プライベートパスNLBを作成する前に、仮想サーバーインスタンスを作成します。 これにより、完全に作動することが保証される。
- 選択したVPCに少なくとも1つのサブネットがあることを確認してください。
コンソール、CLI、API、または Terraform を使って Private Path ネットワークロードバランサーを作成できます。
コンソールでプライベートパスのネットワークロードバランサーを作成する
IBM Cloud コンソールで Network Load Balancer for VPC を作成し設定するには、以下の手順に従う:
-
ブラウザーから、IBM Cloud コンソールを開き、アカウントにログインします。
-
ナビゲーションメニューの
選択し、 インフラストラクチャ
> ネットワーク > ロードバランサーをクリックします。
-
ページ右上の**「作成」**をクリックします。
-
ロード・バランサー・タイプの場合は、 「ネットワーク・ロード・バランサー (NLB) (Network Load Balancer (NLB))」 タイルを選択します。
-
「ロケーション」セクションで、必要に応じて以下のフィールドを編集します。
- ジオグラフィー: ロード・バランサーを作成するジオグラフィー。
- リージョン (Region): ロード・バランサーを作成するリージョン。
-
「詳細」セクションで、以下の情報を入力します。
- 名前 :
private-path-load-balancer
のようにロードバランサーの名前を入力します。 - リソース・グループ: ロード・バランサーのリソース・グループを選択します。
- タグ (オプション)タグを追加して、リソースの整理や検索に役立ちます。 後でさらにタグを追加できます。 詳しくは、『タグの処理』を参照してください。
- アクセス管理タグ: (オプション) アクセス管理タグをリソースに追加して、アクセス制御関係の編成に役立てます。 サポートされるアクセス管理タグの形式は
key:value
のみです。 詳しくは、タグを使用したリソースに対するアクセス権限の制御を参照してください。 - 仮想プライベート・クラウド: ロード・バランサーをデプロイする VPC を選択します。
- サブネットサブネットを選択します。
- タイプ:プライベート・パスを選択します。
- 名前 :
-
Back-end poolsセクションで、Create pool をクリックし、以下の情報を指定し、Create をクリックします。 1 つ以上のプールを作成できます。
-
private-path-pool
のように、プールの一意の名前を入力します。 -
このプール内のインスタンスのプロトコルを選択します。 プールのプロトコルは、その関連リスナーのプロトコルと一致している必要があります。 例えば、リスナーが TCP である場合、プールのプロトコルは TCP にする必要があります。
-
以下のオプションから、ロード・バランシング・アルゴリズムである方式を選択します。
- ラウンドロビン - 各インスタンスに要求を順番に転送します。 すべてのインスタンスが、ほぼ同数のクライアント接続を受信します。
- 重みづけしたラウンドロビン - 割り当てられた重みに比例して各インスタンスに要求を転送します。 例えば、インスタンス A、B、および C があり、それらの重みが 60、60、および 30 に設定されている場合、インスタンス A と B は同数の接続を受信し、インスタンス C はその半数の接続を受信します。
-
セッション維持を選択し、 「なし」 を選択します。
-
以下のヘルス・チェック・オプションを入力します。
-
ヘルス・チェック・パス- ヘルス・チェック・パスは、ヘルス・チェック・プロトコルとして HTTP を選択した場合にのみ適用されます。 ヘルス・チェック・パスは、プール内のインスタンスに HTTP ヘルス・チェック要求を送信するためにロード・バランサーが使用する URL を指定します。 デフォルトでは、ヘルス・チェックはルート・パス (
/
) に送信されます。 -
ヘルス・プロトコル - ロード・バランサーがプール内のインスタンスにヘルス・チェック・メッセージを送信するために使用するプロトコル。
-
ヘルス・ポート(オプション)- ヘルス・チェック・リクエストを送信するポート。 デフォルトでは、ヘルス・チェックは、インスタンスにトラフィックを送信するときと同じポートで送信されます。
-
Interval (sec)- 連続した2回のヘルスチェックの間隔(秒)。
-
Timeout (sec)- システムがヘルスチェック要求からの応答を待つ最大時間。
-
Maximum retries (最大再試行回数)- インスタンスが不健康と宣言されるまでにロードバランサーが行う健康チェックの最大回数。 デフォルトでは、ヘルス・チェックが 2 回失敗すると、インスタンスは正常ではないと見なされます。
ロード・バランサーは正常でないインスタンスへの接続の送信を停止しますが、それらのインスタンスの正常性のモニターを続け、インスタンスが再び正常と判断された場合 (つまり、ヘルス・チェックの試行が 2 回連続で成功した場合) には、そのインスタンスの使用を再開します。
プール内のインスタンスが不健全で、アプリケーションが正常に動作していると思われる場合は、ヘルス・プロトコルとヘルス・パスの値を再度確認してください。 また、インスタンスに関連付けられているセキュリティー・グループも参照して、ロード・バランサーとインスタンスの間のトラフィックがルールで許可されていることを確認してください。
-
-
-
バックエンド・プールにメンバーをアタッチするのは、今すぐでも、プライベート・パスNLBを作成した後でも可能です。 バック・エンド・プールのテーブル行の Attach をクリックします。 以下の情報を指定し、 Attachをクリックします。
-
メンバータイプ :仮想サーバーインスタンス、またはアプリケーションロードバランサーをメンバーとして追加します。 仮想サーバーインスタンスの場合は、各タイプを個別にアタッチする。
プライベートパスNLBプールにALBをメンバーターゲットとしてアタッチした場合、そのプールに他のメンバーを追加することはできません。
-
サブネット: サブネットを選択します。
-
サーバーのリストから、バックエンド・プールに接続したいサーバーを選択します。 各サーバー・ポートに有効な値を指定していることを確認してください。
バックエンドプールには複数の仮想サーバーインスタンスをアタッチできますが、プライベートパスのロードバランサーは地域的な可用性を提供し、単一のサブネットが選択されていてもゾーン障害に回復力があります。
ゾーン障害に対する回復力を確保するために、複数のPrivate Pathロードバランサーを作成したり、複数のサブネットを指定したりする必要はありません。 サブネットの選択はロードバランサーに関連付けられたIPアドレスだけに影響します。 バックエンドプールにアタッチできる仮想サーバーインスタンス数の詳細については、「 Private Pathネットワークロードバランサーのクォータとサービス制限 」を参照してください。
バックエンドのプールテーブルで編集したいメンバーの行にある
をクリックすると、添付メンバーを編集できます。 削除したいメンバーの行にあるマイナスアイコンを選択することで、添付メンバーを削除することもできます。
-
-
フロントエンドリスナーセクションで 「作成」 をクリックし、以下の情報を指定して 「作成」 をクリックします。 1 つ以上のリスナーを作成できます。
- Default back-end pool- このリスナーがトラフィックを転送するデフォルトのバックエンド・プール。
- リスナー・プロトコル- 着信リクエストの受信に使用するプロトコル (TCP )。
- リスナーポート- リクエストを受け取るリスニングポート。
-
注文の概要を確認し、「 作成 」をクリックして注文を完了します。
CLIからPrivate Pathネットワークロードバランサーを作成する
次の例は、CLIからプライベート・パスNLBを作成する例を示している。 この例では、プライベート・パスNLBは、ポート 9090
でリッスンするTCPサーバーを実行している1つのVPC仮想サーバー・インスタンス(ID 0716_6acdd058-4607-4463-af08-d4999d983945
)の前にあります。 ロード・バランサーのフロントエンド・リスナーにより、TCP サーバーへの安全なアクセスが可能になります。
CLIからプライベートパスNLBを作成するには、以下の手順に従ってください:
-
CLI 環境をセットアップします。
-
CLIでアカウントにログインします。 パスワードを入力すると、使用するアカウントと地域を選択するプロンプトが表示されます:
ibmcloud login --sso
-
プライベートパスNLBを作成する:
ibmcloud is load-balancer-create ppnlb-test private-path --subnet cli-subnet-1 --family network
出力例:
Creating load balancer ppnlb-test in resource group under account IBM Cloud Network Services as user test@ibm.com... ID Name ppnlb-test CRN Family Network Host name Subnets ID Name cli-subnet-2 Public IPs Reserved IPs ID Address Subnet Provision status create_pending Operating status offline Is public false Is private path true Listeners Pools ID Name my-pool Resource group ID Name Default Created 2025-01-10T15:07:53+05:30 Availability region Instance Group Supported false SourceIP Session Supported false Security groups supported false UDP Supported false Access mode private_path
-
プールを作成します。
ibmcloud is load-balancer-pool-create my-pool pp-nlb-test round_robin tcp 20 2 5 http
出力例:
Creating pool my-pool of load balancer my-pool under account IBM Cloud Network Services as user test@ibm.com... ID Name my-pool Protocol tcp Algorithm round_robin Instance group ID Name - - Proxy protocol disabled Health monitor Type Port Health monitor URL Delay Retries Timeout http - / 20 2 5 Session persistence type Type Cookie name - - Members Provision status create_pending Created 2025-01-10T20:44:57+05:30
-
メンバーを作成します。
ibmcloud is load-balancer-pool-member-create test-ppnlb-1 test 3000 my-target
ユーザーは、仮想サーバーインスタンスまたはアプリケーションロードバランサー(ALB)をターゲットとしてPPNLBを作成できます。
my-target
をmy-instance
またはmy-alb
としてメンバーを作成する。出力例:
Creating member of pool test under account IBM Cloud Network Services as user test@ibm.com... ID test Port 3000 Target 10.240.66.14 Weight 50 Health unknown Created 0001-01-01T05:53:28+05:53 Provision status create_pending
-
リスナーを作成します。
ibmcloud is load-balancer-listener-create ppnlb-test --port-min 443 --protocol tcp
出力例:
Creating listener of load balancer ppnlb-test under account IBM Cloud Network Services as user test@ibm.com... ID Certificate instance - Connection limit - Ports 443 Idle connection timeout - Protocol tcp Default pool - Accept proxy protocol false Provision status create_pending Created 2025-01-10T21:02:37+05:30
-
ロード・バランサーの詳細を表示します。
ibmcloud is load-balancer ppnlb-test
出力例:
Getting load balancer ppnlb-test under account IBM Cloud Network Services as user test@ibm.com... ID Name ppnlb-test CRN Family Network Host name Subnets ID Name nlb Public IPs Reserved IPs ID Address Subnet Provision status active Operating status online Is public false Is private path true Listeners Pools ID Name my-pool Resource group ID Name Default Created 2025-01-10T15:07:53+05:30 Availability region Instance Group Supported false SourceIP Session Supported false Security groups supported false UDP Supported false Access mode private_path
APIを使ってネットワークロードバランサーを作成する
以下の例では、APIを使用してプライベート・パスNLBを作成している。 ここで詳しく説明する NLB は、ポート 80
で listen する Web アプリケーションを実行する 2 つの VPC 仮想サーバー・インスタンス (192.168.100.5
および 192.168.100.6
) の前にあります。 フロントエンドのリスナーがあり、 HTTPS を使ってウェブアプリケーションに安全にアクセスできる。
この例では、API を使用して VPC、サブネット、およびインスタンスをプロビジョニングするための 前提条件を 省略します。
APIを使用してプライベート・パスNLBを作成するには、以下の手順に従ってください:
-
API 環境をセットアップします。
-
API コマンドで使用する以下の値を変数に格納します。
subnetId
-まずサブネットを取得してから、変数にデータを設定します。
export subnetId=<your_subnet_id>
targetId
- 次に、サブネットと同じVPCにある仮想サーバー・インスタンスまたはアプリケーション・ロード・バランサー(ALB)を取得する:
export targetId=<your_target_id>
-
リスナー、プール、およびアタッチされたサーバー・インスタンス(プール・メンバー)を使用して、プライベート・パスNLBを作成します:
curl -H "Authorization: $iam_token" -X POST "$vpc_api_endpoint/v1/load_balancers?version=$api_version&generation=2" \ -d '{ "is_public": false, "is_private_path": true, "name": "my-load-balancer", "listeners": [ { "default_pool": { "name": "my-pool" }, "port_min": 80, "port_max": 80, "protocol": "tcp" } ], "subnets": [ { "id" : "$subnetId" } ], "pools": [ { "algorithm": "round_robin", "health_monitor": { "delay": 2, "max_retries": 1, "timeout": 1, "port": 80, "type": "tcp" }, "name": my-pool", "protocol": "tcp", "members" : [ { "port" : 80, "target" : {"id" : "$targetId"} } ] } ], "profile": { "name": "network-private-path" } }'
出力例:
{ "availability": "region", "created_at": "2023-09-22T21:49:26.000Z", "crn": "crn:v1:bluemix:public:is:au-syd:a/b21af5a9874242b7851e780943d595a9::load-balancer:r026-d-86b51a9e-a058-4317-beed-8ee581a1f413", "hostname": ".invalid", "href": "https://au-syd.iaas.cloud.ibm.com/v1/load_balancers/r026-d-86b51a9e-a058-4317-beed-8ee581a1f413", "id": "r026-d-86b51a9e-a058-4317-beed-8ee581a1f413", "instance_groups_supported": false, "is_private_path": true, "is_public": false, "listeners": [ { "href": "https://au-syd.iaas.cloud.ibm.com/v1/load_balancers/r026-d-86b51a9e-a058-4317-beed-8ee581a1f413/listeners/r026-00b18a00-d860-4f4d-bb84-e29ffc2d8e47", "id": "r026-00b18a00-d860-4f4d-bb84-e29ffc2d8e47" } ], "logging": { "datapath": { "active": false } }, "name": "my-load-balancer", "operating_status": "offline", "pools": [ { "href": "https://au-syd.iaas.cloud.ibm.com/v1/load_balancers/r026-d-86b51a9e-a058-4317-beed-8ee581a1f413/pools/r026-f25e3f26-3aa6-4aef-9108-1587d3ac6679", "id": "r026-f25e3f26-3aa6-4aef-9108-1587d3ac6679", "name": "my-pool" } ], "private_ips": [ { "address": "10.245.0.4", "href": "https://au-syd.iaas.cloud.ibm.com/v1/subnets/02h7-ee9114e7-28d4-4416-bbfa-f274dbd49f02/reserved_ips/02h7-e21d477e-3e71-47fc-aec4-9703766cf652", "id": "02h7-e21d477e-3e71-47fc-aec4-9703766cf652", "name": "nugget-ounce-stability-vocation", "resource_type": "subnet_reserved_ip" }, { "address": "10.245.0.5", "href": "https://au-syd.iaas.cloud.ibm.com/v1/subnets/02h7-ee9114e7-28d4-4416-bbfa-f274dbd49f02/reserved_ips/02h7-1910c529-dadd-4960-aba5-3c4604f99f56", "id": "02h7-1910c529-dadd-4960-aba5-3c4604f99f56", "name": "impostors-synopses-uncivic-livable", "resource_type": "subnet_reserved_ip" }, { "address": "10.245.0.6", "href": "https://au-syd.iaas.cloud.ibm.com/v1/subnets/02h7-ee9114e7-28d4-4416-bbfa-f274dbd49f02/reserved_ips/02h7-a7e55150-5b02-426f-b1dc-aa136effc6ce", "id": "02h7-a7e55150-5b02-426f-b1dc-aa136effc6ce", "name": "unmade-garnish-preview-defame", "resource_type": "subnet_reserved_ip" }, { "address": "10.245.0.7", "href": "https://au-syd.iaas.cloud.ibm.com/v1/subnets/02h7-ee9114e7-28d4-4416-bbfa-f274dbd49f02/reserved_ips/02h7-ae009701-8301-420c-862e-a9ec1f79214c", "id": "02h7-ae009701-8301-420c-862e-a9ec1f79214c", "name": "slacking-scuttle-stonework-reptile", "resource_type": "subnet_reserved_ip" } ], "profile": { "family": "network", "href": "https://au-syd.iaas.cloud.ibm.com/v1/load_balancer/profiles/network-private-path", "name": "network-private-path" }, "provisioning_status": "create_pending", "public_ips": [], "resource_group": { "href": "https://resource-controller.cloud.ibm.com/v2/resource_groups/297468d87ca047c5be28368e52b055ce", "id": "297468d87ca047c5be28368e52b055ce", "name": "Default" }, "resource_type": "load_balancer", "route_mode": false, "security_groups": [], "security_groups_supported": false, "source_ip_session_persistence_supported": false, "subnets": [ { "crn": "crn:v1:bluemix:public:is:au-syd-1:a/b21af5a9874242b7851e780943d595a9::subnet:02h7-ee9114e7-28d4-4416-bbfa-f274dbd49f02", "href": "https://au-syd.iaas.cloud.ibm.com/v1/subnets/02h7-ee9114e7-28d4-4416-bbfa-f274dbd49f02", "id": "02h7-ee9114e7-28d4-4416-bbfa-f274dbd49f02", "name": "my-subnet", "resource_type": "subnet" } ], "udp_supported": false }
次の手順で使用するために、ロード・バランサーの ID を保存します。 例えば、変数
lbid
などに保存してください。lbid=0738-dd754295-e9e0-4c9d-bf6c-58fbc59e5727
-
プライベートパスのロードバランサーの詳細を取得します:
curl -H "Authorization: $iam_token" -X GET "$vpc_api_endpoint/v1/load_balancers/$lbid?version=$api_version&generation=2"
プロビジョニングに時間をかける。 ロード・バランサーの準備ができると、次の出力例に示されているように、
online
およびactive
の状況に設定されます。{ "availability": "region", "created_at": "2023-09-22T21:49:26.000Z", "crn": "crn:v1:bluemix:public:is:au-syd:a/b21af5a9874242b7851e780943d595a9::load-balancer:r026-d-86b51a9e-a058-4317-beed-8ee581a1f413", "hostname": ".invalid", "href": "https://au-syd.iaas.cloud.ibm.com/v1/load_balancers/r026-d-86b51a9e-a058-4317-beed-8ee581a1f413", "id": "r026-d-86b51a9e-a058-4317-beed-8ee581a1f413", "instance_groups_supported": false, "is_private_path": true, "is_public": false, "listeners": [ { "href": "https://au-syd.iaas.cloud.ibm.com/v1/load_balancers/r026-d-86b51a9e-a058-4317-beed-8ee581a1f413/listeners/r026-00b18a00-d860-4f4d-bb84-e29ffc2d8e47", "id": "r026-00b18a00-d860-4f4d-bb84-e29ffc2d8e47" } ], "logging": { "datapath": { "active": false } }, "name": "my-load-balancer", "operating_status": "only", "pools": [ { "href": "https://au-syd.iaas.cloud.ibm.com/v1/load_balancers/r026-d-86b51a9e-a058-4317-beed-8ee581a1f413/pools/r026-f25e3f26-3aa6-4aef-9108-1587d3ac6679", "id": "r026-f25e3f26-3aa6-4aef-9108-1587d3ac6679", "name": "my-pool" } ], "private_ips": [ { "address": "10.245.0.4", "href": "https://au-syd.iaas.cloud.ibm.com/v1/subnets/02h7-ee9114e7-28d4-4416-bbfa-f274dbd49f02/reserved_ips/02h7-e21d477e-3e71-47fc-aec4-9703766cf652", "id": "02h7-e21d477e-3e71-47fc-aec4-9703766cf652", "name": "nugget-ounce-stability-vocation", "resource_type": "subnet_reserved_ip" }, { "address": "10.245.0.5", "href": "https://au-syd.iaas.cloud.ibm.com/v1/subnets/02h7-ee9114e7-28d4-4416-bbfa-f274dbd49f02/reserved_ips/02h7-1910c529-dadd-4960-aba5-3c4604f99f56", "id": "02h7-1910c529-dadd-4960-aba5-3c4604f99f56", "name": "impostors-synopses-uncivic-livable", "resource_type": "subnet_reserved_ip" }, { "address": "10.245.0.6", "href": "https://au-syd.iaas.cloud.ibm.com/v1/subnets/02h7-ee9114e7-28d4-4416-bbfa-f274dbd49f02/reserved_ips/02h7-a7e55150-5b02-426f-b1dc-aa136effc6ce", "id": "02h7-a7e55150-5b02-426f-b1dc-aa136effc6ce", "name": "unmade-garnish-preview-defame", "resource_type": "subnet_reserved_ip" }, { "address": "10.245.0.7", "href": "https://au-syd.iaas.cloud.ibm.com/v1/subnets/02h7-ee9114e7-28d4-4416-bbfa-f274dbd49f02/reserved_ips/02h7-ae009701-8301-420c-862e-a9ec1f79214c", "id": "02h7-ae009701-8301-420c-862e-a9ec1f79214c", "name": "slacking-scuttle-stonework-reptile", "resource_type": "subnet_reserved_ip" } ], "profile": { "family": "network", "href": "https://au-syd.iaas.cloud.ibm.com/v1/load_balancer/profiles/network-private-path", "name": "network-private-path" }, "provisioning_status": "active", "public_ips": [], "resource_group": { "href": "https://resource-controller.cloud.ibm.com/v2/resource_groups/297468d87ca047c5be28368e52b055ce", "id": "297468d87ca047c5be28368e52b055ce", "name": "Default" }, "resource_type": "load_balancer", "route_mode": false, "security_groups": [], "security_groups_supported": false, "source_ip_session_persistence_supported": false, "subnets": [ { "crn": "crn:v1:bluemix:public:is:au-syd-1:a/b21af5a9874242b7851e780943d595a9::subnet:02h7-ee9114e7-28d4-4416-bbfa-f274dbd49f02", "href": "https://au-syd.iaas.cloud.ibm.com/v1/subnets/02h7-ee9114e7-28d4-4416-bbfa-f274dbd49f02", "id": "02h7-ee9114e7-28d4-4416-bbfa-f274dbd49f02", "name": "my-subnet", "resource_type": "subnet" } ], "udp_supported": false }
TerraformでPrivate Pathネットワークロードバランサーを作る
次の例では、Terraformを使ってPrivate Pathネットワークのロードバランサーを作成します:
-
プライベートパスNLBを作成する:
resource "ibm_is_lb" "example_ppnlb" { name = "example-ppnlb" subnets = [ibm_is_subnet.example_subnet.id] profile = "network-private-path" type = "private_path" }
-
オプションで、プライベート・パスNLB用のプールを作成する:
resource "ibm_is_lb_pool" "example_pool" { name = "example-pool" lb = [ibm_is_lb.example_ppnlb.id] algorithm = "round_robin" protocol = "tcp" health_delay = 2 health_retries = 2 health_timeout = 1 health_type = "tcp" }
-
オプションとして、ALBまたは仮想サーバーインスタンスIDをプライベートパスNLBのプールメンバーとしてターゲットにします:
resource "ibm_is_lb" "example_alb" { name = "example-alb" subnets = [ibm_is_subnet.example_subnet.id] }
resource "ibm_is_lb_pool_member" "example_member" { lb = [ibm_is_lb.example_ppnlb.id] pool = element(split("/", ibm_is_lb_pool.example_pool.id), 1) port = 8080 weight = 20 target_id = [ibm_is_lb.example_alb.id] }
Terraformリソースに関するドキュメントは Terraform Registryを 参照。