パブリック・ネットワーク・ロード・バランサーまたはプライベート・ネットワーク・ロード・バランサーの作成
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 コンソールでネットワーク・ロード・バランサーを作成して構成するには、以下の手順を実行します。
-
ブラウザから、 IBM Cloud コンソールを開き、アカウントにログインします。
-
ナビゲーション メニュー
を選択し、 インフラストラクチャ
> ネットワーク > ロード バランサー をクリックします。
-
ページ右上の「 +を作成 」をクリック。
-
ロード・バランサー・タイプの場合は、「ネットワーク・ロード・バランサー (NLB)」タイルを選択します。
-
「場所」については、必要に応じて以下のフィールドを編集します。
- Geography- ロードバランサーを作成する地域を示します。
- Region- ロードバランサーを作成する地域を示します。
-
詳細については、以下の情報を記入してください:
-
名前- ロードバランサーの名前を
my-load-balancer
のように入力します。 -
リソースグループ- ロードバランサーのリソースグループを選択します。
-
タグ- (オプション)タグを追加して、リソースの整理や検索に役立ちます。 後でさらにタグを追加できます。 詳しくは、『タグの処理』を参照してください。
-
アクセス管理タグ-(オプション) アクセス管理タグをリソースに追加して、アクセス制御関係の編成に役立てます。 サポートされるアクセス管理タグの形式は
key:value
のみです。 詳しくは、タグを使用したリソースに対するアクセス権限の制御を参照してください。 -
仮想プライベートクラウド- VPCを選択します。
-
タイプの場合。 「パブリック」 または 「プライベート」 のいずれかを選択します。
プライベートタイプに限り、ルーティングモードを有効にすることができます。これは、可用性の高い仮想ネットワーク機能(VNF)を展開するために使用されます。 ユース・ケースおよびエンドツーエンドの説明については、HA 仮想ネットワーク機能のデプロイメントについてを参照してください。
-
DNS タイプとして、 「パブリック」 または 「プライベート」 を選択します。 プライベートDNSゾーンは、 IBM Cloud、アカウント内で明示的に許可されたネットワークからのみ、またはクロスアカウントアクセスでのみ解決可能です。
プライベート・タイプの場合のみ、 「バインド +」 をクリックして DNS インスタンスとゾーンの情報を入力し、 「バインド」 をクリックします。
-
ロードバランサーを作成するサブネットを選択します。 アプリケーションの可用性を最大化するには、別のゾーンのサブネットを選択します。
-
-
バックエンドプールでは、 プールの作成をクリックし、以下の情報を指定してバックエンドプールを作成します。 完了したら、**「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 回失敗すると、インスタンスは正常ではないと見なされます。
バックエンド・プールの作成後に、サーバー・インスタンスを添付できます。
-
-
オプションとして、既存のプールに対してバックアップを作成することができます。 これにより、メンバーに障害が発生した場合でも、バックアッププールがトラフィックを管理することができます。 そのためには、フェイルセーフポリシーを作成する必要があります
バックアッププールを割り当てるには、ロードバランサーに少なくとも1つのプールが必要です。
- ロードバランサーの状態が 「アクティブ」 に変わったら 、「バックエンドプール」タブを選択します。
- プール・リスト・ページで、 Editをクリックし、以下の情報を指定する:
- 操作 :バックアッププールを作成するには、 [前へ] を選択します。 これにより 、ターゲットセクションがアクティブになります。
- ターゲット: 互換性のあるプールのリストからプールを選択して、バックアッププールを作成します。
ネットワークロードバランサーの場合、リスナーにすでに接続されているプールをバックアッププールとして割り当てることはできません。 また、リスナーをバックアッププールに割り当てることはできません。
ロード・バランサーは正常でないインスタンスへの接続の送信を停止しますが、それらのインスタンスの正常性のモニターを続け、インスタンスが再び正常と判断された場合 (つまり、ヘルス・チェックの試行が 2 回連続で成功した場合) には、そのインスタンスの使用を再開します。
プール内のインスタンスが正常でないのに、アプリケーションが正常に実行されている場合は、ヘルス・プロトコルとヘルス・パスの値を再確認してください。 また、インスタンスに関連付けられているセキュリティー・グループも参照して、ロード・バランサーとインスタンスの間のトラフィックがルールで許可されていることを確認してください。
-
Create listenerをクリックし、以下の情報を指定する:
- Default back-end pool- このリスナーがトラフィックを転送するデフォルトのバックエンド・プール。
- プロトコル - 着信要求を受信するために使用するプロトコル。
- リスナーポート- リクエストを受け取るリスニングポート。 選択項目は次のとおりです。
- シングルリスナーポート- ロードバランサーが顧客のインバウンドトラフィックを受信するポートです。
- リスナー・ポート範囲-ロード・バランサーがインバウンド・カスタマー・トラフィックを受信するポートの範囲。
次に、「Create」 をクリックします。 1 つ以上のリスナーを作成できます。
-
Security groupsでは、ロードバランサーにアタッチするセキュリティグループを選択するか、 CreateをクリックしてNLBにアタッチする新しいセキュリティグループを作成します。
セキュリティグループが負荷分散トラフィック(リスナー、ターゲット、ヘルスチェックポート)を許可していることを確認します。 セキュリティー・グループを指定しない場合は、VPC のデフォルトのセキュリティー・グループが代わりに関連付けられます。
-
「見積もりに追加」 をクリックして、ロード・バランサーの価格設定を確認し、作成します。
CLIからネットワークロードバランサーを作成する
以下の例は、CLI を使用して Network Load Balancer for VPC (NLB) を作成する方法を示しています。 この例では、ポート 0716_6acdd058-4607-4463-af08-d4999d983945
で listen する TCP サーバーを実行する 1 つの VPC 仮想サーバー・インスタンス (ID 9090
) の前に配置しています。 ロード・バランサーのフロントエンド・リスナーにより、TCP
サーバーへの安全なアクセスが可能になります。
CLIを使ってネットワークロードバランサーを作成するには、以下の手順に従います:
-
CLI 環境をセットアップします。
-
CLIからアカウントにログインする。 パスワードを入力すると、使用するアカウントと地域が表示されます。
ibmcloud login --sso
-
ロード・バランサーを作成します。
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
-
プールを作成します。
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
-
メンバーを作成します。
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
-
リスナーを作成します。
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
-
ロードバランサーの詳細を取得する。
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.5
と 192.168.100.6
) の前にネットワーク・ロードバランサーを作成する例です。 ロード・バランサーのフロントエンド・リスナーにより、HTTPS を使用した Web アプリケーションへの安全なアクセスが可能になります。
この例では、API を使用して VPC、サブネット、インスタンスをプロビジョンする前提条件の手順を省略しています。
APIを使ってネットワークロードバランサーを作成するには、以下の手順に従ってください:
-
API 環境をセットアップします。
-
APIコマンドで使用する変数に以下の値を格納する。
ResourceGroupId
- まず、リソースグループを取得し、変数に入力する。
export ResourceGroupId=<your_resourcegroup_id>
-
リスナー、プール、アタッチされたサーバーインスタンス(プールメンバー)でロードバランサーを作成する。
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
-
ロードバランサーの詳細を取得する。
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" } ]