负载均衡
更新时间:2025-08-11
创建Blb负载均衡
以下代码可以创建Blb负载均衡:
Go
1func createBecBlb(client *bec.Client) {
2 request := &api.CreateBlbArgs{
3 // 负载均衡类型,支持容器与虚机两种,分别对应"container"、"vm"
4 LbType: "vm",
5 // 付费方式,目前仅支持后付费方式("postpay")
6 PaymentMethod: "postpay",
7 // 负载均衡所在区域信息
8 Region: "NORTH_CHINA",
9 // 负载均衡所在城市信息
10 City: "BAODING1",
11 // 负载均衡所属运营商信息
12 ServiceProvider: "TRIPLE_LINE",
13 // 负载均衡名称
14 BlbName: "bec-wj-test",
15 // 是否需要公网ip
16 NeedPublicIp: false,
17 // 负载均衡最大带宽限制,单位Mbps
18 BandwidthInMbpsLimit: 100,
19 }
20
21 response, err := client.CreateBlb(request)
22 if err != nil {
23 fmt.Printf("createBecBlb error: %v\n", err)
24 return
25 }
26 fmt.Printf("createBecBlb response: %+v\n", response)
27}
说明:创建负载均衡详情可参照API参考文档
获取Blb负载均衡列表
使用以下代码可以获取Blb负载均衡列表:
Go
1func getBecBlbs(client *bec.Client) {
2 lbType := "vm" // 负载均衡类型,取值为container、vm,分别对应容器和虚机。缺省为“container”。
3 order := "" // 排序方式
4 orderBy := "" // 排序字段
5 keyword := "wj" // 搜索关键字
6 keywordType := "blbName" // 搜索关键字类型
7 status := "" // 负载均衡状态
8 region := "" // 负载均衡所在区域
9 pageNo := 1 //页数。缺省值为1。
10 pageSize := 10 // 每页数量。缺省值为10。
11 response, err := client.GetBlbList(lbType, order, orderBy, keyword, keywordType, status, region, pageNo, pageSize)
12 if err != nil {
13 fmt.Printf("getBecBlbs error: %v\n", err)
14 return
15 }
16 fmt.Printf("getBecBlbs response: %+v\n", response)
17}
获取Blb详情
使用以下代码可以获取指定BCC虚机实例:
Go
1func getBecBlb(client *bec.Client) {
2 // 负载均衡ID
3 response, err := client.GetBlbDetail("applb-cn-baoding1-ix-arqfkkyw")
4 if err != nil {
5 fmt.Printf("getBecBlb error: %v\n", err)
6 return
7 }
8 fmt.Printf("getBecBlb response: %+v\n", response)
9}
删除指定的Blb
使用以下代码可以删除指定的Blb:
Go
1func deleteBecBlb(client *bec.Client) {
2 // 负载均衡Id
3 response, err := client.DeleteBlb("applb-cn-baoding1-ix-arqfkkyw")
4 if err != nil {
5 fmt.Printf("deleteBecBlb error: %v\n", err)
6 return
7 }
8 fmt.Printf("deleteBecBlb response: %+v\n", response)
9}
更新指定的Blb
使用以下代码可以更新指定的Blb:
Go
1func updateBecBlb(client *bec.Client) {
2 request := &api.UpdateBlbArgs{
3 // 负载均衡名称
4 BlbName: "bec-wj-name",
5 }
6 // 负载均衡Id
7 response, err := client.UpdateBlb("applb-cn-baoding1-ix-ti9ax0bc", request)
8 if err != nil {
9 fmt.Printf("updateBecBlb error: %v\n", err)
10 return
11 }
12 fmt.Printf("updateBecBlb response: %+v\n", response)
13}
创建BLB监听设置
使用以下代码可以创建BLB监听设置:
Go
1func createBecBlbMonitorPort(client *bec.Client) {
2 frontendPort := &api.Port{
3 // 端口号
4 Port: 8083,
5 // 使用协议名称
6 Protocol: api.ProtocolUdp,
7 }
8 healthCheckString := "udp_string"
9 healthCheck := &api.HealthCheck{
10 // UDP检查字符串
11 HealthCheckString: &healthCheckString,
12 // 健康检查协议
13 HealthCheckType: "udp",
14 // 健康阈值
15 HealthyThreshold: 3,
16 // 健康检查时间
17 IntervalInSeconds: 1,
18 // 响应超时时间
19 TimeoutInSeconds: 1,
20 // 不健康阈值
21 UnhealthyThreshold: 3,
22 }
23
24 request := &api.BlbMonitorArgs{
25 // 后端端口
26 BackendPort: 80,
27 // 负载均衡端口
28 FrontendPort: frontendPort,
29 // 健康检查设置
30 HealthCheck: healthCheck,
31 // 转发规则
32 LbMode: "wrr",
33 }
34 // 负载均衡Id
35 response, err := client.CreateBlbMonitorPort("applb-cn-baoding1-ix-ti9ax0bc", request)
36 if err != nil {
37 fmt.Printf("createBecBlbMonitorPort error: %v\n", err)
38 return
39 }
40 fmt.Printf("createBecBlbMonitorPort response: %+v\n", response)
41}
获取BLB监听设备列表
使用以下代码可以获取BLB监听设备列表:
Go
1func getBlbMonitorPortList(client *bec.Client) {
2 // 负载均衡Id
3 blbId := "applb-cn-baoding1-ix-ti9ax0bc"
4 // 起始页
5 pageNo := 1
6 // 每页数量
7 pageSize := 10
8 response, err := client.GetBlbMonitorPortList(blbId, pageNo, pageSize)
9 if err != nil {
10 fmt.Printf("getBlbMonitorPortList error: %v\n", err)
11 return
12 }
13 fmt.Printf("getBlbMonitorPortList response: %+v\n", response)
14}
获取指定BLB指定监听端口的详情
使用以下代码可以获取指定BLB指定监听端口的详情:
Go
1func getBecBlbMonitorPortDetails(client *bec.Client) {
2 // 负载均衡Id
3 blbId := "applb-cn-baoding1-ix-ti9ax0bc"
4 // 负载均衡端口
5 port := 8083
6 // 负载均衡协议
7 protocol := api.ProtocolTcp
8
9 response, err := client.GetBlbMonitorPortDetails(blbId, protocol, port)
10 if err != nil {
11 fmt.Printf("getBecBlbMonitorPortDetails error: %v\n", err)
12 return
13 }
14 fmt.Printf("getBecBlbMonitorPortDetails response: %+v\n", response)
15}
修改BLB监听端口设置
使用以下代码可以修改BLB监听端口设置:
Go
1func updateBecBlbMonitorPort(client *bec.Client) {
2 frontendPort := &api.Port{
3 // 使用协议名称
4 Protocol: api.ProtocolUdp,
5 // 端口号
6 Port: 8083,
7 }
8 healthCheckString := "udp_new_string"
9 healthCheck := &api.HealthCheck{
10 // 不健康阈值
11 UnhealthyThreshold: 3,
12 // 响应超时时间
13 TimeoutInSeconds: 1,
14 // 健康检查时间
15 IntervalInSeconds: 2,
16 // 健康阈值
17 HealthyThreshold: 4,
18 // 健康检查协议
19 HealthCheckType: "udp",
20 // UDP检查字符串
21 HealthCheckString: &healthCheckString,
22 }
23
24 request := &api.BlbMonitorArgs{
25 // 健康检查设置
26 HealthCheck: healthCheck,
27 // 后端端口
28 BackendPort: 8083,
29 // 负载均衡端口
30 FrontendPort: frontendPort,
31 // 转发规则
32 LbMode: "wrr",
33 }
34 // 负载均衡Id
35 response, err := client.UpdateBlbMonitorPort("applb-cn-baoding1-ix-ti9ax0bc", request)
36 if err != nil {
37 fmt.Printf("updateBecBlbMonitorPort error: %v\n", err)
38 return
39 }
40 fmt.Printf("updateBecBlbMonitorPort response: %+v\n", response)
41}
获取指定BEC LB后端绑定Pod/VM列表
使用以下代码可以获取指定BEC LB后端绑定Pod/VM列表:
Go
1func getBecBlbBackendPodList(client *bec.Client) {
2 // 负载均衡Id
3 blbId := "applb-cn-baoding1-ix-upagaou4"
4 // 起始页
5 pageNo := 1
6 // 每页数量
7 pageSize := 10
8 response, err := client.GetBlbBackendPodList(blbId, pageNo, pageSize)
9 if err != nil {
10 fmt.Printf("getBecBlbBackendPodList error: %v\n", err)
11 return
12 }
13 fmt.Printf("getBecBlbBackendPodList response: %+v\n", response)
14}
获取指定BLB可绑定的部署StatefulSet/VmReplicas组
使用以下代码可以获取指定BLB可绑定的部署StatefulSet/VmReplicas组:
Go
1func getBecBlbBackendBindingStsList(client *bec.Client) {
2 // 负载均衡Id
3 blbId := "applb-cn-baoding1-ix-upagaou4"
4 // 起始页
5 pageNo := 1
6 // 每页数量
7 pageSize := 10
8 // 关键字类型
9 keywordType := "serviceId"
10 // 关键字
11 keyword := "s-3vhzeool"
12 response, err := client.GetBlbBackendBindingStsList(blbId, pageNo, pageSize, keywordType, keyword)
13 if err != nil {
14 fmt.Printf("getBecBlbBackendBindingStsList error: %v\n", err)
15 return
16 }
17 fmt.Printf("getBecBlbBackendBindingStsList response: %+v\n", response)
18}
获取指定的StatefulSet/VmReplicas后端可绑定的Pod/Vm组
使用以下代码可以获取指定的StatefulSet/VmReplicas后端可绑定的Pod/Vm组:
Go
1func getBecBlbBindingPodListWithSts(client *bec.Client) {
2 // 负载均衡Id
3 blbId := "applb-cn-baoding1-ix-upagaou4"
4 // 部署名称
5 stsName := "sts-eggbfafu-2-l-baoding1-ja6iq"
6 response, err := client.GetBlbBindingPodListWithSts(blbId, stsName)
7 if err != nil {
8 fmt.Printf("getBecBlbBindingPodListWithSts error: %v\n", err)
9 return
10 }
11 fmt.Printf("getBecBlbBindingPodListWithSts response: %+v\n", response)
12}
为指定BLB绑定后端StatefulSet/VmReplicas
使用以下代码可以为指定BLB绑定后端StatefulSet/VmReplicas:
Go
1func createBecBlbBinding(client *bec.Client) {
2 // 容器组\虚机实例列表
3 podWeight := []api.Backends{
4 {
5 // 容器组\虚机实例名称
6 Name: "sts-vjox56jt-2-l-baoding1-uogke-0",
7 Ip: "192.168.0.11",
8 // 容器组\虚机实例权重
9 Weight: 20,
10 },
11 }
12
13 request := &api.CreateBlbBindingArgs{
14 BindingForms: &[]api.BlbBindingForm{
15 {
16 // 部署名称
17 DeploymentId: "sts-vjox56jt-2-l-baoding1-uogke",
18 // 权重
19 DefaultWeight: 80,
20 // 容器组\虚机实例列表
21 PodWeight: &podWeight,
22 },
23 },
24 }
25 // 负载均衡Id
26 response, err := client.CreateBlbBinding("applb-cn-baoding1-ix-0vq7etyb", request)
27 if err != nil {
28 fmt.Printf("createBecBlbBinding error: %v\n", err)
29 return
30 }
31 fmt.Printf("createBecBlbBinding response: %+v\n", response)
32}
修改指定BLB后端绑定容器组Pod/虚机组Vm的权重
使用以下代码可以修改指定BLB后端绑定容器组Pod/虚机组Vm的权重:
Go
1func updateBecBlbBindPodWeight(client *bec.Client) {
2 // 后端服务器信息
3 podWeightList := []api.Backends{
4 {
5 // 后端服务器权重
6 Weight: 100,
7 // 后端服务器名称
8 Name: "name",
9 },
10 }
11
12 request := &api.UpdateBindPodWeightArgs{
13 PodWeightList: &podWeightList,
14 }
15 // 负载均衡Id
16 response, err := client.UpdateBlbBindPodWeight("applb-cn-baoding1-ix-ti9ax0bc", request)
17 if err != nil {
18 fmt.Printf("updateBecBlbBindPodWeight error: %v\n", err)
19 return
20 }
21 fmt.Printf("updateBecBlbBindPodWeight response: %+v\n", response)
22}
获取BEC BLB 监控
使用以下代码可以获取BEC BLB 监控:
Go
1func getBecBlbResourceMetrics(client *bec.Client) {
2 // 负载均衡Id
3 blbId := "applb-cn-baoding1-ix-ti9ax0bc"
4 // 监控指标类型,支持bandwidth_receive(入网带宽)、bandwidth_transmit(出网带宽)、
5 // traffic_receive(入网流量)、traffic_transmit(出网流量)
6 metricsType := api.MetricsType("bandwidth_receive")
7 // 支持"extranet"、"intranet",分别对应公网、内网
8 ipType := "extranet"
9 // 端口号,如不指定则传空字符串
10 port := ""
11 // 运营商字段,如不指定则传空字符串
12 serviceProvider := ""
13 // 数据点间隔(单位:分钟)
14 stepInMin := 5
15 // 当前时间戳(秒)
16 end := int(time.Now().Unix())
17 // 偏移时间(秒)
18 offset := 3600
19 // 起始时间戳(秒)
20 start := end - offset
21
22 response, err := client.GetBlbMetrics(blbId, ipType, port, serviceProvider, start, end, stepInMin, metricsType)
23 if err != nil {
24 fmt.Printf("getBecBlbResourceMetrics error: %v\n", err)
25 return
26 }
27 fmt.Printf("getBecBlbResourceMetrics response: %+v\n", response)
28}