建立公用或專用網路負載平衡器

您可以使用主控台、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 主控台中建立並配置網路負載平衡器,請遵循下列步驟:

  1. 請在瀏覽器中開啟 IBM Cloud 控制台,並登入您的帳戶。

  2. 選取導覽功能表 功能表圖示,然後按一下 Infrastructure VPC 圖示 > Network > Load balancers

  3. 按一下頁面右上方的 建立 +

  4. 若為負載平衡器類型,請選取「網路負載平衡器 (NLB)」磚。

  5. 若為「位置」,必要的話,請編輯下列欄位。

    • 地理位置-指出您要在其中建立負載平衡器的地理位置。
    • 地區-指出您要建立負載平衡器的地區。
  6. 如需詳細資訊,請填寫以下資料:

    • 名稱- 輸入負載平衡器的名稱,例如 my-load-balancer

    • 資源群組- 為負載平衡器選取一個資源群組。

    • 標籤- (可選)添加標籤,有助於您整理和查找資源。 您之後可以新增其他標籤。 如需相關資訊,請參閱使用標籤

    • 存取管理標籤-(選用) 將存取管理標籤新增至資源,以協助組織存取控制關係。 存取權管理標籤唯一支援的格式是 key:value。 如需相關資訊,請參閱 使用標籤控制對資源的存取權

    • 虛擬私有雲- 選擇您的 VPC。

    • 針對類型。選取 公用專用

      僅限專用類型,您可以啟用遞送模式,用來部署高可用性虛擬網路功能 (VNFs)。 如需使用案例及端對端指示,請參閱 關於 HA 虛擬網路功能部署

    • 針對 DNS 類型,選取 公用專用。 私人 DNS 區域僅能在 IBM Cloud 上解析,且僅限於帳戶中明確允許的網路,或具備跨帳戶存取權限的網路。

      僅限專用類型,按一下 連結 + 以輸入 DNS 實例及區域資訊,然後按一下 連結

    • 請選擇要建立負載平衡器的子網。 若要最大化應用程式的可用性,請選取不同區域中的子網路。

  7. 對於後端池,請按一下「建立池」,並指定以下資訊以建立後端池。 完成時,請按一下建立

    您可以建立一個以上的儲存區。

    • 請輸入資料庫名稱,例如 my-pool

    • 選取此儲存區中實例的通訊協定。 儲存區的通訊協定必須符合其關聯接聽器的通訊協定。 例如,若聆聽器為 TCP,則池的協定必須是 TCP。 或者,如果监听器是 UDP,则池的协议也必须是 UDP。

    • 選擇階段作業組合,並選取 來源 IP。 如果您選擇 來源 IP,則會將階段作業期間的所有要求傳送至相同的實例。

    • 選取方法,這是負載平衡演算法。 顯示以下選項:

      • 輪詢- 依序將請求轉發至每個實例。 所有實例都會收到大約相等數目的用戶端連線。
      • 加權循環調度- 根據各執行個體的指定權重比例,將請求轉發至各執行個體。 例如,假設有實例 A、B 和 C,且其權重分別設定為 60、60 和 30,那麼實例 A 和 B 將獲得相等的連線數,而實例 C 獲得的連線數則為其一半。
      • 最少連線數- 將請求轉發至當前連線數最少的執行個體。
    • 對於性能檢查,會顯示下列選項:

      • 健康檢查路徑- 健康檢查路徑只有在您選擇 HTTP 作為健康檢查通訊協定時才適用。 健康檢查路徑指定了負載平衡器用於將 HTTP 健康檢查請求傳送至彙總池中實例所使用的 URL。 預設情況下,狀態檢查會發送至根目錄 (/)。
      • 健康檢查協定- 負載平衡器用於向叢集中的執行個體發送健康檢查訊息的協定。
      • 健康檢查埠- 負載平衡器用來發送健康檢查請求的埠號。 預設情況下,健康檢查會透過與傳送至該實例的流量相同的埠進行傳送。
      • 間隔- 兩次連續健康檢查嘗試之間的間隔(以秒為單位)。 預設情況下,系統每 5 秒會發送一次狀態檢查。
      • 超時 (秒)- 系統等待健康檢查請求回應的最長時間。 預設情況下,負載平衡器會等待 2 秒鐘以取得回應。
      • 重試次數上限-在將實例宣告為性能不佳之前,負載平衡器所進行的性能檢查嘗試次數上限。 依預設,在兩次失敗的性能檢查之後,就不再將實例視為性能良好。

      在建立後端儲存區之後,您可以連接伺服器實例。

  8. 您可以選擇為任何現有池建立備份。 這可讓備份資料池在成員故障時管理流量。 為此,您必須建立故障安全政策:

    您的負載平衡器必須至少有一個池,才能指定備份池。

    • 負載平衡器的狀態變更為 Active(作用中 )後,選擇 Back-end pools(後端池) 索引標籤。
    • 在池清單頁中,按一下編輯,然後指 定下列資訊:
      • 動作:選取向前,以建立備份池。 這會使目標區段處於活動狀態。
      • 目標:從相容池清單中選取一個池來建立備份池。

    對於網路負載平衡器,如果池已連接至監聽器,則無法指定該池為備份池。 此外,侦听器不能连接到备份池。

    雖然負載平衡器會停止將連線傳送至狀態異常的執行個體,但它仍會持續監控這些執行個體的狀態,並在確認其狀態恢復正常時(也就是成功通過連續兩次健康檢查後)恢復使用這些執行個體。

    如果池中的執行個體狀態異常,而您認為應用程式運作正常,請重新檢查健康檢查協定和健康檢查路徑的值。 此外,請檢查附加至這些執行個體的所有安全性群組,以確保其規則允許負載平衡器與執行個體之間的流量。

  9. 按一下「建立監聽器」,並指定以下資訊:

    • 預設後端彙總- 此監聽器將流量轉發至的預設後端彙總。
    • 通訊協定- 用於接收傳入請求的通訊協定。
    • 監聽埠- 用於接收請求的監聽埠。 選項如下:
      • 單一接聽器埠-負載平衡器接收入埠客戶資料流量的埠。
      • 接聽器埠範圍-負載平衡器接收入埠客戶資料流量的埠範圍。

    然後,按一下建立。 您可以建立一個以上的接聽器。

  10. 對於安全群組,請選取您要連接至負載平衡器的安全群組,或按一下 建立 以建立新的安全群組來連接至 NLB。

    確保安全群組容許負載平衡資料流量 (接聽器、目標及性能檢查埠)。 如果您未指定安全群組,則會改為連接 VPC 中的預設安全群組。

  11. 按一下 新增至預估,以檢閱負載平衡器的計價並建立它。

從 CLI 建立網路負載平衡器

下列範例說明使用 CLI 來建立 Network Load Balancer for VPC (NLB)。 在這個範例中,它在一個 VPC 虛擬伺服器實例 (ID 0716_6acdd058-4607-4463-af08-d4999d983945) 前執行 TCP 伺服器,該伺服器在 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 建立網路負載平衡器

下列範例說明在兩個 VPC 虛擬伺服器實例 (192.168.100.5192.168.100.6) 之前建立網路負載平衡器,執行在埠 80 上接聽的 Web 應用程式。 負載平衡器設有前端監聽器,可透過 HTTPS 安全地存取該網頁應用程式。

此範例會跳過使用 API 來佈建 VPC、子網路及實例的 必要步驟

若要使用 API 建立網路負載平衡器,請遵循下列步驟:

  1. 設定 API 環境

  2. 將下列值儲存在要在 API 指令中使用的變數中。

    • ResourceGroupId-首先,取得資源群組,然後移入變數。
    export ResourceGroupId=<your_resourcegroup_id>
    
  3. 建立一個負載平衡器,其中包含一個監聽器、一個池以及已連接的伺服器執行個體(池成員)。

    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
    
  4. 取得負載平衡器的詳細資料。

     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"
       }
     ]