プライベートパス・ネットワーク・ロードバランサーの作成

プライベート・パス・ネットワーク・ロード・バランサー (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 を作成および設定するには、以下の手順に従ってください

  1. ブラウザーから、IBM Cloud コンソールを開き、アカウントにログインします。

  2. ナビゲーションメニューの メニューアイコンを 選択し、 インフラストラクチャ VPCアイコンネットワークロードバランサーをクリックします。

  3. ページ右上の**「作成」**をクリックします。

  4. ロード・バランサー・タイプの場合は、 「ネットワーク・ロード・バランサー (NLB) (Network Load Balancer (NLB))」 タイルを選択します。

  5. 「ロケーション」セクションで、必要に応じて以下のフィールドを編集します。

    • ジオグラフィー: ロード・バランサーを作成するジオグラフィー。
    • リージョン (Region): ロード・バランサーを作成するリージョン。
  6. 「詳細」セクションで、以下の情報を入力します。

    • 名前 :ロードバランサーの名前を入力します(例: private-path-load-balancer )。
    • リソース・グループ: ロード・バランサーのリソース・グループを選択します。
    • タグ :(任意)リソースを整理したり見つけたりするのに役立つタグを追加してください。 後でさらにタグを追加できます。 詳しくは、『タグの処理』を参照してください。
    • アクセス管理タグ: (オプション) アクセス管理タグをリソースに追加して、アクセス制御関係の編成に役立てます。 サポートされるアクセス管理タグの形式は key:value のみです。 詳しくは、タグを使用したリソースに対するアクセス権限の制御を参照してください。
    • 仮想プライベート・クラウド: ロード・バランサーをデプロイする VPC を選択します。
    • サブネット :サブネットを選択してください。
    • タイププライベート・パスを選択します。
  7. Back-end poolsセクションで、Create pool をクリックし、以下の情報を指定し、Create をクリックします。 1 つ以上のプールを作成できます。

    • プールに「 private-path-pool 」のような一意の名前を入力してください。

    • このプール内のインスタンスのプロトコルを選択します。 プールのプロトコルは、その関連リスナーのプロトコルと一致している必要があります。 例えば、リスナーが TCP である場合、プールのプロトコルは TCP にする必要があります。

    • 以下のオプションから、ロード・バランシング・アルゴリズムである方式を選択します。

      • ラウンドロビン - 各インスタンスに要求を順番に転送します。 すべてのインスタンスが、ほぼ同数のクライアント接続を受信します。
      • 重みづけしたラウンドロビン - 割り当てられた重みに比例して各インスタンスに要求を転送します。 例えば、インスタンス A、B、および C があり、それらの重みが 60、60、および 30 に設定されている場合、インスタンス A と B は同数の接続を受信し、インスタンス C はその半数の接続を受信します。
    • セッション維持を選択し、 「なし」 を選択します。

    • 以下のヘルス・チェック・オプションを入力します。

      • ヘルスチェックパス- ヘルスチェックパスは、ヘルスチェックプロトコルとして「 HTTP 」を選択した場合にのみ適用されます。 ヘルス・チェック・パスは、プール内のインスタンスに HTTP ヘルス・チェック要求を送信するためにロード・バランサーが使用する URL を指定します。 デフォルトでは、ヘルス・チェックはルート・パス (/) に送信されます。

      • ヘルス・プロトコル - ロード・バランサーがプール内のインスタンスにヘルス・チェック・メッセージを送信するために使用するプロトコル。

      • ヘルスポート(オプション)- ヘルスチェックのリクエストを送信するポート。 デフォルトでは、ヘルス・チェックは、インスタンスにトラフィックを送信するときと同じポートで送信されます。

      • 間隔(秒)- 2回の連続したヘルスチェックの実行間隔(秒単位)。

      • タイムアウト(秒)- ヘルスチェックのリクエストに対する応答をシステムが待機する最大時間。

      • 最大再試行回数- インスタンスが「正常でない」と判定されるまでに、ロードバランサーが実行するヘルスチェックの最大試行回数。 デフォルトでは、ヘルス・チェックが 2 回失敗すると、インスタンスは正常ではないと見なされます。

        ロード・バランサーは正常でないインスタンスへの接続の送信を停止しますが、それらのインスタンスの正常性のモニターを続け、インスタンスが再び正常と判断された場合 (つまり、ヘルス・チェックの試行が 2 回連続で成功した場合) には、そのインスタンスの使用を再開します。

      プール内のインスタンスの状態が「不健全」と表示されているにもかかわらず、アプリケーションが正常に動作していると判断される場合は、ヘルスプロトコルとヘルスパスの値を再確認してください。 また、インスタンスに関連付けられているセキュリティー・グループも参照して、ロード・バランサーとインスタンスの間のトラフィックがルールで許可されていることを確認してください。

  8. (任意)[ リクエスト設定 ] を選択して、ヘルスチェックのリクエスト値をカスタマイズします。 値が指定されていない場合は、デフォルト設定が使用されます。

    • リクエストメソッドGET または POST のいずれかを選択してください。 どちらのメソッドについても、リクエストヘッダーをカスタマイズできます。 POST メソッドを使用する際、必要に応じてリクエスト本文をカスタマイズすることができます。
    • リクエスト本文 :ヘルスチェックに使用する HTTP のリクエスト本文を含めてください。 特に指定がない場合、ヘルスチェックのリクエストにはリクエスト本文が含まれません。
    • ホストヘッダー :リクエストが HTTP/1.1 プロトコルを使用するように、ホストヘッダーを含めます。 それ以外の場合は、システムはデフォルトで HTTP/1.0 を使用します。
    • その他のリクエストヘッダーを追加する :1つ以上のリクエストヘッダーを追加します。
    • ヘッダー名GET リクエストメソッドの場合、 content-typeacceptauthorizationcookieoriginreferrer、または user-agent のいずれかを選択してください。 POST のリクエストメソッドについては、 content-typecontent-lengthapplication-json、または accept-encoding のいずれかを選択してください。
    • :指定されたヘッダー名に対応する値を入力してください。

    プライベートパス・ネットワーク・ロードバランサー(PPNLB)において、GET APIのレスポンスにヘルスモニターのリクエストおよびレスポンスフィールドが含まれないという既知の問題があります。

  9. (オプション)[ 応答設定 ] を選択して、ヘルスチェックの応答値をカスタマイズします。 値が指定されていない場合は、デフォルト設定が使用されます。

    • レスポンス本文 :レスポンス本文を入力してください。

    • 応答コード :100~599の範囲内で、カンマ区切りで複数の値を指定できます。 範囲を指定するには、XX を使用してください。 例えば、 2XX では、200~299の範囲です。

      HTTP データをプレーンテキストで送信するため、傍受される可能性があり、安全ではないと見なされます。プロトコルとしては、 http の代わりに https を使用することを推奨します。 詳細については、「 HTTP が安全でないのはなぜですか? 」をご覧ください。

      ロード・バランサーは正常でないインスタンスへの接続の送信を停止しますが、それらのインスタンスの正常性のモニターを続け、インスタンスが再び正常と判断された場合 (つまり、ヘルス・チェックの試行が 2 回連続で成功した場合) には、そのインスタンスの使用を再開します。

      プール内のインスタンスが正常でないのに、アプリケーションが正常に実行されている場合は、ヘルス・プロトコルとヘルス・パスの値を再確認してください。 また、インスタンスに関連付けられているセキュリティー・グループも参照して、ロード・バランサーとインスタンスの間のトラフィックがルールで許可されていることを確認してください。

  10. バックエンド・プールにメンバーをアタッチするのは、今すぐでも、プライベート・パスNLBを作成した後でも可能です。 バック・エンド・プールのテーブル行の Attach をクリックします。 以下の情報を指定してから、「 添付 」をクリックしてください。

    • メンバータイプ :仮想サーバーインスタンス、予約IP、またはアプリケーションロードバランサーをメンバーとして追加します。 仮想サーバーインスタンスの場合は、各タイプを個別にアタッチする。 予約IPメンバーは、ベアメタルサーバー、仮想サーバーインスタンスのプライマリーまたはセカンダリーインターフェース、または仮想ネットワークインターフェースにバインドすることができる。

      プライベートパスNLBプールにALBをメンバーターゲットとしてアタッチした場合、そのプールに他のメンバーを追加することはできません。

    • サブネット: サブネットを選択します。

    • サーバーのリストから、バックエンド・プールに接続したいサーバーを選択します。 各サーバー・ポートに有効な値を指定していることを確認してください。

      「Your Private Path」ロードバランサーはリージョン単位の可用性を提供し、単一のサブネットが選択された場合でも、ゾーン障害に対して耐性を備えています。

    ゾーン障害に対する回復力を確保するために、複数のPrivate Pathロードバランサーを作成したり、複数のサブネットを指定したりする必要はありません。 サブネットの選択はロードバランサーに関連付けられたIPアドレスだけに影響します。 バックエンドプールにアタッチできる仮想サーバーインスタンス数の詳細については、「 Private Pathネットワークロードバランサーのクォータとサービス制限 」を参照してください。

    バックエンドのプールテーブルで編集したいメンバーの行にある編集アイコン をクリックすると、添付メンバーを編集できます。 削除したいメンバーの行にあるマイナスアイコンを選択することで、添付メンバーを削除することもできます。

  11. フロントエンドリスナーセクションで 「作成」 をクリックし、以下の情報を指定して 「作成」 をクリックします。 1 つ以上のリスナーを作成できます。

    • デフォルトのバックエンドプール- このリスナーがトラフィックを転送するデフォルトのバックエンドプール。
    • リスナープロトコル- 着信リクエストを受信するために使用するプロトコル( TCP )。
    • リスナーポート- リクエストを受信するリスニングポート。
  12. 注文の概要を確認し、「 作成 」をクリックして注文を完了してください。

CLIからPrivate Pathネットワークロードバランサーを作成する

次の例は、CLIからプライベート・パスNLBを作成する例を示している。 この例では、プライベートパス NLB は、ポート 9090 でリスニングしている TCP サーバーを実行している 1 つの VPC 仮想サーバーインスタンス(ID: 0716_6acdd058-4607-4463-af08-d4999d983945 )の前に配置されています。 ロード・バランサーのフロントエンド・リスナーにより、TCP サーバーへの安全なアクセスが可能になります。

CLIからプライベートパスNLBを作成するには、以下の手順に従ってください:

  1. CLI 環境をセットアップします。

  2. CLI を使用してアカウントにログインしてください。 パスワードを入力すると、使用するアカウントと地域を選択するよう求められます:

    ibmcloud login --sso
    
  3. プライベートパス 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
    
  4. プールを作成します。

    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
    
  5. メンバーを作成します。

    ibmcloud is load-balancer-pool-member-create test-ppnlb-1 test 3000 my-target
    

    ユーザーは、仮想サーバーインスタンス、予約IP、またはアプリケーションロードバランサー(ALB)をターゲットとしてプライベートパスNLBを作成できます。 my-targetmy-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
    
  6. リスナーを作成します。

    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
    
  7. ロード・バランサーの詳細を表示します。

    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 を使用することで、Webアプリケーションへの安全なアクセスが可能になります。

この例では、API を使用して VPC、サブネット、およびインスタンスをプロビジョニングするための 前提条件となる手順を 省略しています。

APIを使用してプライベート・パスNLBを作成するには、以下の手順に従ってください:

  1. API 環境をセットアップします。

  2. API コマンドで使用する以下の値を変数に格納します。

    • subnetId-まずサブネットを取得してから、変数にデータを設定します。
    export subnetId=<your_subnet_id>
    
    • targetId- 次に、サブネットと同じVPCにある仮想サーバーインスタンス、予約IP、またはアプリケーションロードバランサー(ALB)を取得する:
    export targetId=<your_target_id>
    
  3. リスナー、プール、および接続されたサーバーインスタンス(プールメンバー)を備えたプライベートパス NLB を作成します:

    curl -H "Authorization: Bearer $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
    
  4. プライベートパス・ロードバランサーの詳細を確認するには:

     curl -H "Authorization: Bearer $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ネットワークのロードバランサーを作成します:

  1. プライベートパス NLB を作成する:

    resource "ibm_is_lb" "example_ppnlb" {
      name    = "example-ppnlb"
      subnets = [ibm_is_subnet.example_subnet.id]
      profile = "network-private-path"
      type    = "private_path"
    }
    
  2. オプションで、プライベート・パス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"
    }
    
  3. オプションとして、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]
    }
    
  4. オプションとして、プライベートパスNLBのプールメンバーとして予約IPをターゲットにする:

    resource "ibm_is_subnet_reserved_ip" "example" {
    subnet = ibm_is_subnet.example.id
    }
    
    resource "ibm_is_lb_pool_member" "example" {
      lb        = ibm_is_lb.example_ppnlb.id
      pool      = element(split("/", ibm_is_lb_pool.example.id), 1)
      port      = 8080
      weight    = 20
      target_id = ibm_is_subnet_reserved_ip.example.id
    }
    

Terraformリソースに関するドキュメントについては、 Terraform Registry を参照してください。