建立公用或專用網路負載平衡器
您可以使用主控台、CLI 或 API 建立 IBM Cloud® Network Load Balancer for VPC (NLB)。
開始之前
若要配置公用或專用 NLB,請確定您已符合下列必要條件:
- 如果您沒有 VPC,請在您要建立 NLB 的地區中建立 VPC。
- 在 VPC 的偏好區域中建立子網路。
NLB 服務可能會將規則新增至自訂遞送表,以確保服務在某些失敗狀況下的可用性。 因此,如果用戶端位於 NLB 的區域及/或 VPC 外部,則必須將 Ingress 自訂遞送表新增至 NLB 所在的 VPC,並選取適當的資料流量來源。
對於專用 NLB,視用戶端的位置而定,您必須確保入口遞送表存在 (如表 1 中所述)。
| 用戶端位置 | 遞送表類型 | 資料流量來源 |
|---|---|---|
| 內部部署 | Ingress | Direct Link |
| 另一個 VPC 或標準基礎架構 | Ingress | Transit Gateway |
| 相同 VPC 的另一個可用性區域 | Ingress | VPC 區域 |
如需相關資訊,請參閱 關於路由表和路由。
在主控台中建立網路負載平衡器
若要在 IBM Cloud 主控台中建立並配置網路負載平衡器,請遵循下列步驟:
-
請在瀏覽器中開啟 IBM Cloud 控制台,並登入您的帳戶。
-
選取導覽功能表
,然後按一下 Infrastructure
> Network > Load balancers。
-
按一下頁面右上方的 建立 +。
-
若為負載平衡器類型,請選取「網路負載平衡器 (NLB)」磚。
-
若為「位置」,必要的話,請編輯下列欄位。
- 地理位置-指出您要在其中建立負載平衡器的地理位置。
- 地區-指出您要建立負載平衡器的地區。
-
如需詳細資訊,請填寫以下資料:
-
名稱- 輸入負載平衡器的名稱,例如
my-load-balancer。 -
資源群組- 為負載平衡器選取一個資源群組。
-
標籤- (可選)添加標籤,有助於您整理和查找資源。 您之後可以新增其他標籤。 如需相關資訊,請參閱使用標籤。
-
存取管理標籤-(選用) 將存取管理標籤新增至資源,以協助組織存取控制關係。 存取權管理標籤唯一支援的格式是
key:value。 如需相關資訊,請參閱 使用標籤控制對資源的存取權。 -
虛擬私有雲- 選擇您的 VPC。
-
針對類型。選取 公用 或 專用。
僅限專用類型,您可以啟用遞送模式,用來部署高可用性虛擬網路功能 (VNFs)。 如需使用案例及端對端指示,請參閱 關於 HA 虛擬網路功能部署。
-
針對 DNS 類型,選取 公用 或 專用。 私人 DNS 區域僅能在 IBM Cloud 上解析,且僅限於帳戶中明確允許的網路,或具備跨帳戶存取權限的網路。
僅限專用類型,按一下 連結 + 以輸入 DNS 實例及區域資訊,然後按一下 連結。
-
請選擇要建立負載平衡器的子網。 若要最大化應用程式的可用性,請選取不同區域中的子網路。
-
-
對於後端池,請按一下「建立池」,並指定以下資訊以建立後端池。 完成時,請按一下建立。
您可以建立一個以上的儲存區。
-
請輸入資料庫名稱,例如
my-pool。 -
選取此儲存區中實例的通訊協定。 儲存區的通訊協定必須符合其關聯接聽器的通訊協定。 例如,若聆聽器為 TCP,則池的協定必須是 TCP。 或者,如果监听器是 UDP,则池的协议也必须是 UDP。
-
選擇階段作業組合,並選取 無 或 來源 IP。 如果您選擇 來源 IP,則會將階段作業期間的所有要求傳送至相同的實例。
-
選取方法,這是負載平衡演算法。 顯示以下選項:
- 輪詢- 依序將請求轉發至每個實例。 所有實例都會收到大約相等數目的用戶端連線。
- 加權循環調度- 根據各執行個體的指定權重比例,將請求轉發至各執行個體。 例如,假設有實例 A、B 和 C,且其權重分別設定為 60、60 和 30,那麼實例 A 和 B 將獲得相等的連線數,而實例 C 獲得的連線數則為其一半。
- 最少連線數- 將請求轉發至當前連線數最少的執行個體。
-
對於性能檢查,會顯示下列選項:
- 健康檢查路徑- 健康檢查路徑只有在您選擇 HTTP 作為健康檢查通訊協定時才適用。 健康檢查路徑指定了負載平衡器用於將 HTTP 健康檢查請求傳送至彙總池中實例所使用的 URL。 預設情況下,狀態檢查會發送至根目錄 (/)。
- 健康檢查協定- 負載平衡器用於向叢集中的執行個體發送健康檢查訊息的協定。
- 健康檢查埠- 負載平衡器用來發送健康檢查請求的埠號。 預設情況下,健康檢查會透過與傳送至該實例的流量相同的埠進行傳送。
- 間隔- 兩次連續健康檢查嘗試之間的間隔(以秒為單位)。 預設情況下,系統每 5 秒會發送一次狀態檢查。
- 超時 (秒)- 系統等待健康檢查請求回應的最長時間。 預設情況下,負載平衡器會等待 2 秒鐘以取得回應。
- 重試次數上限-在將實例宣告為性能不佳之前,負載平衡器所進行的性能檢查嘗試次數上限。 依預設,在兩次失敗的性能檢查之後,就不再將實例視為性能良好。
在建立後端儲存區之後,您可以連接伺服器實例。
-
-
您可以選擇為任何現有池建立備份。 這可讓備份資料池在成員故障時管理流量。 為此,您必須建立故障安全政策:
您的負載平衡器必須至少有一個池,才能指定備份池。
- 負載平衡器的狀態變更為 Active(作用中 )後,選擇 Back-end pools(後端池) 索引標籤。
- 在池清單頁中,按一下編輯,然後指 定下列資訊:
- 動作:選取向前,以建立備份池。 這會使目標區段處於活動狀態。
- 目標:從相容池清單中選取一個池來建立備份池。
對於網路負載平衡器,如果池已連接至監聽器,則無法指定該池為備份池。 此外,侦听器不能连接到备份池。
雖然負載平衡器會停止將連線傳送至狀態異常的執行個體,但它仍會持續監控這些執行個體的狀態,並在確認其狀態恢復正常時(也就是成功通過連續兩次健康檢查後)恢復使用這些執行個體。
如果池中的執行個體狀態異常,而您認為應用程式運作正常,請重新檢查健康檢查協定和健康檢查路徑的值。 此外,請檢查附加至這些執行個體的所有安全性群組,以確保其規則允許負載平衡器與執行個體之間的流量。
-
按一下「建立監聽器」,並指定以下資訊:
- 預設後端彙總- 此監聽器將流量轉發至的預設後端彙總。
- 通訊協定- 用於接收傳入請求的通訊協定。
- 監聽埠- 用於接收請求的監聽埠。 選項如下:
- 單一接聽器埠-負載平衡器接收入埠客戶資料流量的埠。
- 接聽器埠範圍-負載平衡器接收入埠客戶資料流量的埠範圍。
然後,按一下建立。 您可以建立一個以上的接聽器。
-
對於安全群組,請選取您要連接至負載平衡器的安全群組,或按一下 建立 以建立新的安全群組來連接至 NLB。
確保安全群組容許負載平衡資料流量 (接聽器、目標及性能檢查埠)。 如果您未指定安全群組,則會改為連接 VPC 中的預設安全群組。
-
按一下 新增至預估,以檢閱負載平衡器的計價並建立它。
從 CLI 建立網路負載平衡器
下列範例說明使用 CLI 來建立 Network Load Balancer for VPC (NLB)。 在這個範例中,它在一個 VPC 虛擬伺服器實例 (ID 0716_6acdd058-4607-4463-af08-d4999d983945) 前執行 TCP 伺服器,該伺服器在 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 建立網路負載平衡器
下列範例說明在兩個 VPC 虛擬伺服器實例 (192.168.100.5 和 192.168.100.6) 之前建立網路負載平衡器,執行在埠 80 上接聽的 Web 應用程式。 負載平衡器設有前端監聽器,可透過 HTTPS 安全地存取該網頁應用程式。
此範例會跳過使用 API 來佈建 VPC、子網路及實例的 必要步驟。
若要使用 API 建立網路負載平衡器,請遵循下列步驟:
-
設定 API 環境。
-
將下列值儲存在要在 API 指令中使用的變數中。
ResourceGroupId-首先,取得資源群組,然後移入變數。
export ResourceGroupId=<your_resourcegroup_id> -
建立一個負載平衡器,其中包含一個監聽器、一個池以及已連接的伺服器執行個體(池成員)。
curl -H "Authorization: Bearer $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: Bearer $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" } ]