IBM Cloud Docs
パブリック・ネットワーク・ロード・バランサーまたはプライベート・ネットワーク・ロード・バランサーの作成

パブリック・ネットワーク・ロード・バランサーまたはプライベート・ネットワーク・ロード・バランサーの作成

IBM Cloud® Network Load Balancer for VPC (NLB)はコンソール、CLI、APIで作成できます。

開始前に

パブリック NLB またはプライベート NLB を構成するには、以下の前提条件を満たしていることを確認してください。

  • VPC がない場合は、NLB を作成するリージョンに VPC を作成します。
  • VPCの優先ゾーンにサブネットを作成します。

NLBサービスは、カスタム・ルーティング・テーブルにルールを追加して、いくつかの障害条件に対するサービスの可用性を確保することができる。 結果として、クライアントが NLB のゾーンまたは VPC の外部にある場合、適切なトラフィック・ソースを選択して、NLB が存在する VPC に着信カスタム・ルーティング・テーブルを追加する必要があります。

プライベート NLB の場合、表 1 に示すように、クライアントのロケーションに応じて、着信ルーティング・テーブルが存在することを確認する必要があります。

カスタムのルーティングテーブルを必要とするトラフィックソース。
クライアント・ロケーション ルーティング・テーブル・タイプ トラフィック・ソース
オンプレミスの Ingress Direct Link
別の VPC またはクラシック・インフラストラクチャー Ingress Transit Gateway
同じ VPC の別のアベイラビリティー・ゾーン Ingress VPC ゾーン

詳しくは、ルーティング・テーブルおよび経路についてを参照してください。

コンソールでネットワークロードバランサーを作成する

IBM Cloud コンソールでネットワーク・ロード・バランサーを作成して構成するには、以下の手順を実行します。

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

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

  3. ページ右上の「 +を作成 」をクリック。

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

  5. 「場所」については、必要に応じて以下のフィールドを編集します。

    • Geography- ロードバランサーを作成する地域を示します。
    • Region- ロードバランサーを作成する地域を示します。
  6. 詳細については、以下の情報を記入してください:

    • 名前- ロードバランサーの名前を my-load-balancer のように入力します。

    • リソースグループ- ロードバランサーのリソースグループを選択します。

    • タグ- (オプション)タグを追加して、リソースの整理や検索に役立ちます。 後でさらにタグを追加できます。 詳しくは、『タグの処理』を参照してください。

    • アクセス管理タグ-(オプション) アクセス管理タグをリソースに追加して、アクセス制御関係の編成に役立てます。 サポートされるアクセス管理タグの形式は key:value のみです。 詳しくは、タグを使用したリソースに対するアクセス権限の制御を参照してください。

    • 仮想プライベートクラウド- VPCを選択します。

    • タイプの場合。 「パブリック」 または 「プライベート」 のいずれかを選択します。

      プライベートタイプに限り、ルーティングモードを有効にすることができます。これは、可用性の高い仮想ネットワーク機能(VNF)を展開するために使用されます。 ユース・ケースおよびエンドツーエンドの説明については、HA 仮想ネットワーク機能のデプロイメントについてを参照してください。

    • DNS タイプとして、 「パブリック」 または 「プライベート」 を選択します。 プライベートDNSゾーンは、 IBM Cloud、アカウント内で明示的に許可されたネットワークからのみ、またはクロスアカウントアクセスでのみ解決可能です。

      プライベート・タイプの場合のみ「バインド +」 をクリックして DNS インスタンスとゾーンの情報を入力し、 「バインド」 をクリックします。

    • ロードバランサーを作成するサブネットを選択します。 アプリケーションの可用性を最大化するには、別のゾーンのサブネットを選択します。

  7. バックエンドプールでは、 プールの作成をクリックし、以下の情報を指定してバックエンドプールを作成します。 完了したら、**「Create (作成)」**をクリックします。

    1 つ以上のプールを作成できます。

    • プールの名前 (my-pool など) を入力します。

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

    • セッション維持率を選択します。**「なし」または「ソース IP」**を選択します。 「送信元 IP」 を選択すると、セッション中のすべての要求が同じインスタンスに送信されます。

    • 方式 (ロード・バランシング・アルゴリズム) を選択します。 以下のオプションが表示される:

      • ラウンドロビン - 各インスタンスに要求を順番に転送します。 すべてのインスタンスが、ほぼ同数のクライアント接続を受信します。
      • 重みづけしたラウンドロビン - 割り当てられた重みに比例して各インスタンスに要求を転送します。 例えば、インスタンスA、B、Cがあり、それぞれの重みが60、60、30に設定されている場合、インスタンスAとBは同数の接続を受け、インスタンスCは半分の接続を受ける。
      • 最小接続数 - 現時点で接続数が最小のインスタンスに要求を転送します。
    • ヘルス・チェックの場合、以下のオプションが表示されます。

      • ヘルス・チェック・パス- ヘルス・チェック・パスは、ヘルス・チェック・プロトコルとして HTTP を選択した場合にのみ適用されます。 ヘルス・チェック・パスは、プール内のインスタンスに HTTP ヘルス・チェック要求を送信するためにロード・バランサーが使用する URL を指定します。 デフォルトでは、ヘルス・チェックはルート・パス (/) に送信されます。
      • ヘルス・プロトコル - ロード・バランサーがプール内のインスタンスにヘルス・チェック・メッセージを送信するために使用するプロトコル。
      • ヘルスポート- ロードバランサーがヘルスチェックリクエストを送るポート。 デフォルトでは、ヘルス・チェックは、インスタンスにトラフィックを送信するときと同じポートで送信されます。
      • 間隔 (Interval) - 2 つの連続するヘルス・チェック試行の間隔 (秒単位) デフォルトでは、ヘルス・チェックは 5 秒間隔で送信されます。
      • Timeout (sec)- システムがヘルスチェック要求からの応答を待つ最大時間。 デフォルトでは、ロード・バランサーは応答を 2 秒待ちます。
      • Max retries- インスタンスが不健康と宣言されるまでにロードバランサーが行う健康チェックの最大回数。 デフォルトでは、ヘルス・チェックが 2 回失敗すると、インスタンスは正常ではないと見なされます。

      バックエンド・プールの作成後に、サーバー・インスタンスを添付できます。

  8. オプションとして、既存のプールに対してバックアップを作成することができます。 これにより、メンバーに障害が発生した場合でも、バックアッププールがトラフィックを管理することができます。 そのためには、フェイルセーフポリシーを作成する必要があります

    バックアッププールを割り当てるには、ロードバランサーに少なくとも1つのプールが必要です。

    • ロードバランサーの状態が 「アクティブ」 に変わったら 、「バックエンドプール」タブを選択します。
    • プール・リスト・ページで、 Editをクリックし、以下の情報を指定する:
      • 操作 :バックアッププールを作成するには、 [前へ] を選択します。 これにより 、ターゲットセクションがアクティブになります。
      • ターゲット: 互換性のあるプールのリストからプールを選択して、バックアッププールを作成します。

    ネットワークロードバランサーの場合、リスナーにすでに接続されているプールをバックアッププールとして割り当てることはできません。 また、リスナーをバックアッププールに割り当てることはできません。

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

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

  9. Create listenerをクリックし、以下の情報を指定する:

    • Default back-end pool- このリスナーがトラフィックを転送するデフォルトのバックエンド・プール。
    • プロトコル - 着信要求を受信するために使用するプロトコル。
    • リスナーポート- リクエストを受け取るリスニングポート。 選択項目は次のとおりです。
      • シングルリスナーポート- ロードバランサーが顧客のインバウンドトラフィックを受信するポートです。
      • リスナー・ポート範囲-ロード・バランサーがインバウンド・カスタマー・トラフィックを受信するポートの範囲。

    次に、「Create」 をクリックします。 1 つ以上のリスナーを作成できます。

  10. Security groupsでは、ロードバランサーにアタッチするセキュリティグループを選択するか、 CreateをクリックしてNLBにアタッチする新しいセキュリティグループを作成します。

    セキュリティグループが負荷分散トラフィック(リスナー、ターゲット、ヘルスチェックポート)を許可していることを確認します。 セキュリティー・グループを指定しない場合は、VPC のデフォルトのセキュリティー・グループが代わりに関連付けられます。

  11. 「見積もりに追加」 をクリックして、ロード・バランサーの価格設定を確認し、作成します。

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

以下の例は、CLI を使用して Network Load Balancer for VPC (NLB) を作成する方法を示しています。 この例では、ポート 0716_6acdd058-4607-4463-af08-d4999d983945 で listen する TCP サーバーを実行する 1 つの VPC 仮想サーバー・インスタンス (ID 9090) の前に配置しています。 ロード・バランサーのフロントエンド・リスナーにより、TCP サーバーへの安全なアクセスが可能になります。

CLIを使ってネットワークロードバランサーを作成するには、以下の手順に従います:

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

  2. CLIからアカウントにログインする。 パスワードを入力すると、使用するアカウントと地域が表示されます。

    ibmcloud login --sso
    
  3. ロード・バランサーを作成します。

    ibmcloud is load-balancer-create nlb-test public --subnet 0896-b1f24514-89dc-4afd-b0e2-5489a43cf45c --family network
    

    出力例:

    Creating load balancer nlb-test in resource group under account IBM Cloud Network Services as user test@ibm.com...
    
     ID                 r006-99b5ab45-6357-42db-8b32-5d2c8aa62776
     Name               nlb-test
     CRN                crn:v1:public:is:us-south-1:a/123456::load-balancer:r006-99b5ab45-6357-42db-8b32-5d2c8aa62776
     Family             Network
     Host name          99b5ab45-us-south.lb.test.appdomain.cloud
     Subnets            ID                                          Name
                        0896-b1f24514-89dc-4afd-b0e2-5489a43cf45c   nlb
     Security Groups    ID                                          Name
                        0581-a1336811-39dc-5aff-a0e6-6489a43ca62v   nlb1
    
     Public IPs
     Private IPs
     Provision status   create_pending
     Operating status   offline
     Is public          true
     Listeners
     Pools              ID   Name
    
     Resource group     ID                                 Name
                        3021f90279574ce287dd5fba82c08899   Default
    
     Created            2020-08-27T14:34:34.732-05:00
    

    プライベートネットワークのロードバランサーを作成する。

    ibmcloud is load-balancer-create nlb-test private --subnet 07a7-37b4dcfc-841e-4d4a-9f9f-9e45ffbd0285 --family network
    

    出力例:

    Creating load balancer nlb-test in resource group  under account CNS Development Account - netsvs as user test@us.ibm.com...
    
    ID                 r018-8a994baa-21ba-428c-ac3f-e3fd91fa92c9
    Name               nlb-test
    CRN                crn:v1:bluemix:public:is:eu-gb-3:a/123456::load-balancer:r018-8a994baa-21ba-428c-ac3f-e3fd91fa92c9
    Family             Network
    Host name          8a994baa-eu-gb.lb.appdomain.cloud
    Subnets            ID                                          Name
                       07a7-37b4dcfc-841e-4d4a-9f9f-9e45ffbd0285   nlb1
    Security Groups    ID                                          Name
                       0581-a1336811-39dc-5aff-a0e6-6489a43ca626
    
    Public IPs
    Private IPs
    Provision status   create_pending
    Operating status   offline
    Is public          false
    Listeners
    Pools              ID   Name
    
    Resource group     ID                                 Name
                       42c4f51adc3147b4b4049ad9826c30a1   Default
    
    Created            2021-03-22T11:34:57.34-05:00
    
  4. プールを作成します。

    ibmcloud is load-balancer-pool-create nlb-pool r006-99b5ab45-6357-42db-8b32-5d2c8aa62776  weighted_round_robin tcp 10  --failsafe-policy-action forward --failsafe-policy-target pool2
    

    出力例:

    Creating pool nlb-pool of load balancer r006-99b5ab45-6357-42db-8b32-5d2c8aa62776  under account IBM Cloud Network Services as user test@ibm.com...
    
    ID                         r006-3b66d605-6aa5-4166-9f66-b16054da3cb0
    Name                       nlb-pool
    Protocol                   tcp
    Algorithm                  weighted_round_robin
    Instance group             ID   Name
                               -    -
    
    Health monitor             Type   Port   Health monitor URL   Delay   Retries   Timeout
                               http   8080   /                    10      2         5
    
    Failsafe policy            Action    Target ID                                   Target name   Healthy Member Threshold Count
                                forward   r006-815e16e7-8729-4d9e-9203-936a6b615ee1   pool2         0
    
    Session persistence type   source_ip
    Members
    Provision status           active
    Created                    2020-08-27T14:45:42.038-05:00
    
  5. メンバーを作成します。

    ibmcloud is load-balancer-pool-member-create r006-99b5ab45-6357-42db-8b32-5d2c8aa62776 r006-3b66d605-6aa5-4166-9f66-b16054da3cb0 9090 0716_6acdd058-4607-4463-af08-d4999d983945 --weight 70
    

    出力例:

    Creating member of pool r006-3b66d605-6aa5-4166-9f66-b16054da3cb0 under account IBM Cloud Network Services as user test@ibm.com...
    
    ID                 r006-61f8b000-a90d-4abe-909e-c507dffec565
    Port               9090
    Target             0716_6acdd058-4607-4463-af08-d4999d983945
    Weight             70
    Health             unknown
    Created            2020-08-27T14:59:55.446-05:00
    Provision status   create_pending
    
  6. リスナーを作成します。

    ibmcloud is load-balancer-listener-create r006-99b5ab45-6357-42db-8b32-5d2c8aa62776 7070 tcp --default-pool r006-3b66d605-6aa5-4166-9f66-b16054da3cb0
    

    出力例:

    Creating listener of load balancer r006-99b5ab45-6357-42db-8b32-5d2c8aa62776 under account IBM Cloud Network Services as user test@ibm.com...
    
    ID                     r006-2847a948-f9b6-4fc1-91c6-f1c49dac3eba
    Certificate instance   -
    Connection limit       -
    Port                   7070
    Protocol               tcp
    Default pool           r006-3b66d605-6aa5-4166-9f66-b16054da3cb0
    Provision status       create_pending
    Created                2020-08-27T15:16:08.643-05:00
    
  7. ロードバランサーの詳細を取得する。

    ibmcloud is load-balancer r006-99b5ab45-6357-42db-8b32-5d2c8aa62776
    

    出力例:

    Getting load balancer r006-99b5ab45-6357-42db-8b32-5d2c8aa62776 under account IBM Cloud Network Services as user test@ibm.com...
    
    ID                 r006-99b5ab45-6357-42db-8b32-5d2c8aa62776
    Name               nlb-test
    CRN                crn:v1:public:is:us-south-1:a/123456::load-balancer:r006-99b5ab45-6357-42db-8b32-5d2c8aa62776
    Family             Network
    Host name          99b5ab45-us-south.lb.test.appdomain.cloud
    Subnets            ID                                          Name
                       0896-b1f24514-89dc-4afd-b0e2-5489a43cf45c   nlb
    
    Public IPs         150.238.50.78, 150.238.54.95
    Private IPs        10.240.0.58, 10.240.0.59
    Provision status   active
    Operating status   online
    Is public          true
    Listeners          r006-2847a948-f9b6-4fc1-91c6-f1c49dac3eba
    Pools              ID                                          Name
                       r006-3b66d605-6aa5-4166-9f66-b16054da3cb0   nlb-pool
    
    Resource group     ID                                 Name
                       3021f90279574ce287dd5fba82c08899   Default
    
    Created            2020-08-27T14:34:34.732-05:00
    

APIを使ってネットワークロードバランサーを作成する

次の例は、ポート 80 をリッスンするウェブ・アプリケーションを実行している、2 つの VPC 仮想サーバ・インスタンス (192.168.100.5192.168.100.6) の前にネットワーク・ロードバランサーを作成する例です。 ロード・バランサーのフロントエンド・リスナーにより、HTTPS を使用した Web アプリケーションへの安全なアクセスが可能になります。

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

APIを使ってネットワークロードバランサーを作成するには、以下の手順に従ってください:

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

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

    • ResourceGroupId- まず、リソースグループを取得し、変数に入力する。
    export ResourceGroupId=<your_resourcegroup_id>
    
  3. リスナー、プール、アタッチされたサーバーインスタンス(プールメンバー)でロードバランサーを作成する。

    curl -H "Authorization: $iam_token" -X POST
    "$vpc_api_endpoint/v1/load_balancers?version=$api_version&generation=2" \
        -d '{
            "name": "example-balancer",
            "is_public": true,
            "profile": {
                "name": "network-fixed"
            },
            "listeners": [
                {
                    "certificate_instance": {
                      "crn": "crn:v1:bluemix:public:cloudcerts:us-south:a/123456:b8877ea4-b8eg-467e-912a-da1eb7f031cg:certificate:43219c4c97d013fb2a95b21dddde1234"
                    },
                    "port": 443,
                    "protocol": "tcp",
                    "default_pool": {
                        "name": "example-pool"
                    }
                }
            ],
            "pools": [
                {
                    "algorithm": "round_robin",
                    "health_monitor": {
                        "delay": 5,
                        "max_retries": 2,
                        "timeout": 2,
                        "type": "tcp",
                        "url_path": "/"
                    },
                    "name": "example-pool",
                    "protocol": "tcp",
                    "session_persistence": {
                        "cookie_name": "string",
                        "type": "source_ip"
                    },
                    "members": [
                        {
                            "port": 80,
                            "target": {
                                "address": "192.168.100.5"
                            },
                            "weight": 50
                        },
                        {
                            "port": 80,
                            "target": {
                                "address": "192.168.100.6"
                            },
                            "weight": 50
                        }
                    ]
                }
            ],
            "subnets": [
                {
                    "id": "7ec87131-1c7e-4990-b4f0-a26f2e61f98e"
                }
            ]
            }'
    

    出力例:

    {
        "created_at": "2018-07-12T23:17:07.5985381Z",
        "crn": "crn:v1:bluemix:public:is:us-south:a/123456::load-balancer:dd754295-e9e0-4c9d-bf6c-58fbc59e5727",
        "hostname": "ac34687d.lb.appdomain.cloud",
        "href": "https://us-south.iaas.cloud.ibm.com/v1/load_balancers/dd754295-e9e0-4c9d-bf6c-58fbc59e5727",
        "id": "0738-dd754295-e9e0-4c9d-bf6c-58fbc59e5727",
        "is_public": true,
        "profile": {
            "name": "network-fixed",
            "family": "network"
        },
        "listeners": [
            {
                "id": "0738-70294e14-4e61-11e8-bcf4-0242ac110004",
                "href": "https://us-south.iaas.cloud.ibm.com/v1/load_balancers/dd754295-e9e0-4c9d-bf6c-58fbc59e5727/listeners/70294e14-4e61-11e8-bcf4-0242ac110004"
            }
        ],
        "name": "example-balancer",
        "operating_status": "offline",
        "pools": [
            {
                "id": "0738-70294e14-4e61-11e8-bcf4-0242ac110004",
                "href": "https://us-south.iaas.cloud.ibm.com/v1/load_balancers/dd754295-e9e0-4c9d-bf6c-58fbc59e5727/pools/70294e14-4e61-11e8-bcf4-0242ac110004",
                "name": "example-pool"
            }
        ],
        "provisioning_status": "create_pending",
        "resource_group": {
            "id": "56969d60-43e9-465c-883c-b9f7363e78e8"
        },
        "subnets": [
            {
                "id": "0738-7ec86020-1c6e-4889-b3f0-a15f2e50f87e",
                "href": "https://us-south.iaas.cloud.ibm.com/v1/subnets/7ec86020-1c6e-4889-b3f0-a15f2e50f87e",
                "name": "example-subnet"
            }
        ]
    }
    

    次の手順で使用するために、ロード・バランサーの ID を保存します。 例えば、変数 lbid に保存することができる。

    lbid=0738-dd754295-e9e0-4c9d-bf6c-58fbc59e5727
    
  4. ロードバランサーの詳細を取得する。

     curl -H "Authorization: $iam_token" -X GET "$vpc_api_endpoint/v1/load_balancers/$lbid?version=$api_version&generation=2"
    

    プロビジョニングにはある程度時間がかかることを想定しておいてください。 ロード・バランサーの準備ができると、次の出力例に示されているように、online および active の状況に設定されます。

    {
     "id": "0738-dd754295-e9e0-4c9d-bf6c-58fbc59e5727",
     "crn": "crn:v1:bluemix:public:is:us-south:a/123456::load-balancer:dd754295-e9e0-4c9d-bf6c-58fbc59e5727",
     "href": "https://us-south.iaas.cloud.ibm.com/v1/load_balancers/dd754295-e9e0-4c9d-bf6c-58fbc59e5727",
     "name": "example-balancer",
     "created_at": "2018-07-13T22:22:24.489Z",
     "hostname": "dd754295-e9e0-4c9d-bf6c-58fbc59e5727.lb.appdomain.cloud",
     "is_public": true,
     "profile": {
           "name": "network-fixed",
           "family": "network"
     },
     "listeners": [
       {
         "id": "0738-70294e14-4e61-11e8-bcf4-0242ac110004",
          "href": "https://us-south.iaas.cloud.ibm.com/v1/load_balancers/dd754295-e9e0-4c9d-bf6c-58fbc59e5727/listeners/70294e14-4e61-11e8-bcf4-0242ac110004"
       }
     ],
     "operating_status": "online",
     "pools": [
       {
         "id": "0738-70294e14-4e61-11e8-bcf4-0242ac110004",
         "href": "https://us-south.iaas.cloud.ibm.com/v1/load_balancers/dd754295-e9e0-4c9d-bf6c-58fbc59e5727/pools/70294e14-4e61-11e8-bcf4-0242ac110004",
         "name": "example-pool"
       }
     ],
     "private_ips": [
       {
         "address": "192.168.10.5"
       },
       {
         "address": "192.168.10.6"
       }
     ],
     "provisioning_status": "active",
     "public_ips": [
       {
           "address": "169.11.111.115"
       },
       {
           "address": "169.11.111.116"
       }
     ],
     "resource_group": {
       "id": "0738-56969d60-43e9-465c-883c-b9f7363e78e8"
     },
     "subnets": [
       {
         "id": "0738-7ec86020-1c6e-4889-b3f0-a15f2e50f87e",
         "href": "https://us-south.iaas.cloud.ibm.com/v1/subnets/7ec86020-1c6e-4889-b3f0-a15f2e50f87e",
         "name": "example-subnet"
       }
     ]