负载均衡SDK实践
概览
负载均衡SDK,是通过封装OpenAPI协议,简化租户上云的一种方式。由于租户内部业务系统程序开发语言各不相同,会提供多种程序语言版本的SDK。在使用SDK时,还需要对服务域名、Access Key/Secret Key密钥对及网络配置参数(如:连接数上限、超时设置等)进行配置。
负载均衡SDK使用实践
下面将以Go语言版本SDK为例,演示如何通过SDK实现负载均衡实例的创建、变配直到销毁的整个过程。
1.资源准备
在创建负载均衡前,除了确认SDK的服务域名、Access Key/Secret Key之外,同样需要准备好所在地域内的VPC、子网及云服务器等资源。其中,子网与云服务器要创建在相同VPC内。
2.创建应用型负载均衡实例
根据VPC实例ID与子网ID创建负载均衡实例,相关代码如下所示。
1import "github.com/baidubce/bce-sdk-go/services/appblb"
2
3func CreateLoadBalancer() {
4 ak, sk, endpoint := "Your AK", "Your SK", "Your endpoint"
5 BlbClient, _ := appblb.NewClient(ak, sk, endpoint) // 初始化客户端
6 createBlbArgs := &appblb.CreateLoadBalancerArgs{
7 Name: "blb-test", // 实例名称
8 VpcId: "vpc-xxxxxxxx", // 实例所在的专有网络的唯一ID
9 SubnetId: "sbn-xxxxxxxx", // 实例所在的子网的唯一ID
10 }
11 // 创建负载均衡实例
12 response, _ := BlbClient.CreateLoadBalancer(createBlbArgs)
13}
3.查询应用型负载均衡实例
根据负载均衡ID查询实例的详细信息,相关代码如下所示。
1import "github.com/baidubce/bce-sdk-go/services/appblb"
2
3func DescribeLoadBalancers() {
4 ak, sk, endpoint := "Your AK", "Your SK", "Your endpoint"
5 BlbClient, _ := appblb.NewClient(ak, sk, endpoint) // 初始化客户端
6 describeBlbsArgs := &appblb.DescribeLoadBalancersArgs{}
7 // 查询负载均衡实例列表
8 response, _ := BlbClient.DescribeLoadBalancers(describeBlbsArgs)
9}
4.更新应用型负载均衡实例
根据负载均衡ID更新实例信息,相关代码如下所示。
1import "github.com/baidubce/bce-sdk-go/services/appblb"
2
3func UpdateLoadBalancer() {
4 ak, sk, endpoint := "Your AK", "Your SK", "Your endpoint"
5 BlbClient, _ := appblb.NewClient(ak, sk, endpoint) // 初始化客户端
6 BlbID := "blb-xxxxxxxx" // 实例ID
7 updateBlbArgs := &appblb.UpdateLoadBalancerArgs{
8 Name: "blb—test", // 实例名称
9 Description: "blb description", // 实例描述
10 }
11 // 更新负载均衡实例
12 err := BlbClient.UpdateLoadBalancer(BlbID, updateBlbArgs)
13 if err != nil {
14 panic(err)
15 }
16}
5.创建监听
为负载均衡实例创建监听时,可配置监听端口和调度算法等信息,相关代码如下所示。
1import "github.com/baidubce/bce-sdk-go/services/appblb"
2
3func DescribeAppTCPListeners() {
4 ak, sk, endpoint := "Your AK", "Your SK", "Your endpoint"
5 BlbClient, _ := appblb.NewClient(ak, sk, endpoint) // 初始化客户端
6 BlbID := "blb-xxxxxxxx" // 实例ID
7 describeTCPListenersArgs := &appblb.DescribeAppListenerArgs{
8 ListenerPort: 80, // 监听端口号
9 }
10 // 查询TCP监听
11 response, err := BlbClient.CreateAppTCPListeners(BlbID, describeTCPListenersArgs)
12 if err != nil {
13 panic(err)
14 }
15}
6.查询监听
根据负载均衡ID查询实例下的监听的详细信息,相关代码如下所示。
1import "github.com/baidubce/bce-sdk-go/services/appblb"
2
3func DescribeAppTCPListeners() {
4 ak, sk, endpoint := "Your AK", "Your SK", "Your endpoint"
5 BlbClient, _ := appblb.NewClient(ak, sk, endpoint) // 初始化客户端
6 BlbID := "blb-xxxxxxxx" // 实例ID
7 describeTCPListenersArgs := &appblb.DescribeAppListenerArgs{
8 ListenerPort: 80, // 监听端口号
9 }
10 // 查询TCP监听
11 response, err := BlbClient.DescribeAppTCPListeners(BlbID, describeTCPListenersArgs)
12 if err != nil {
13 panic(err)
14 }
15}
7.更新监听
根据负载均衡ID和监听端口更新监听的配置信息,相关代码如下所示。
1import "github.com/baidubce/bce-sdk-go/services/appblb"
2
3func UpdateAppTCPListener() {
4 ak, sk, endpoint := "Your AK", "Your SK", "Your Endpoint"
5 appBlbClient, _ := appblb.NewClient(ak, sk, endpoint) // 初始化客户端
6 blbID := "blb-xxxxxxxx" // 实例ID
7 updateAppTCPListenerArgs := &appblb.UpdateAppTCPListenerArgs{
8 UpdateAppListenerArgs: appblb.UpdateAppListenerArgs{
9 ListenerPort: 80, // 监听端口
10 Scheduler: "RoundRobin", // 调度算法
11 },
12 }
13 // 更新监听
14 if err := appBlbClient.UpdateAppTCPListener(blbID, updateAppTCPListenerArgs); err != nil {
15 panic(err)
16 }
17}
8.创建服务器组
根据负载均衡ID创建后端服务器组,创建时可以指定后端云服务器ID与权重信息,相关代码如下所示。
1import "github.com/baidubce/bce-sdk-go/services/appblb"
2
3func CreateAppServerGroup() {
4 ak, sk, endpoint := "Your AK", "Your SK", "Your endpoint"
5 blbClient, _ := appblb.NewClient(ak, sk, endpoint) // 初始化客户端
6 BlbID := "blb-xxxxxxxx"
7 CreateAppServerGroupArgs := &appblb.CreateAppServerGroupArgs{
8 Name: "sg_test", // 服务器组名称
9 Description: "sg_test", // 服务器组名称
10 BackendServerList: []AppBackendServer{
11 {
12 InstanceId: "i-xxxxxxxx", // 云服务器ID
13 Weight: 20, // 云服务器权重
14 },
15 },
16 }
17 // 创建服务器组
18 response, err := blbClient.CreateAppServerGroup(BlbID, CreateAppServerGroupArgs)
19 if err != nil {
20 return
21 }
22}
9.查询服务器组
根据负载均衡实例ID查询实例下所有的服务器组信息,相关代码如下所示。
1import "github.com/baidubce/bce-sdk-go/services/appblb"
2
3func DescribeAppServerGroup() {
4 ak, sk, endpoint := "Your AK", "Your SK", "Your endpoint"
5 blbClient, _ := appblb.NewClient(ak, sk, endpoint) // 初始化客户端
6 BlbID := "blb-xxxxxxxx"
7 DescribeAppServerGroupArgs := &appblb.DescribeAppServerGroupArgs{}
8 // 查询服务器组
9 response, err := blbClient.DescribeAppServerGroup(BlbID, DescribeAppServerGroupArgs)
10 if err != nil {
11 return
12 }
13}
10.更新服务器组
根据负载均衡实例ID和服务器组ID更新服务器组信息,相关代码如下所示。
1import "github.com/baidubce/bce-sdk-go/services/appblb"
2
3func UpdateAppServerGroup() {
4 ak, sk, endpoint := "Your AK", "Your SK", "Your endpoint"
5 blbClient, _ := appblb.NewClient(ak, sk, endpoint) // 初始化客户端
6 BlbID := "blb-xxxxxxxx"
7 UpdateAppServerGroupArgs := &appblb.UpdateAppServerGroupArgs{
8 SgId: "sg-xxxxxxxx", // 服务器组ID
9 Name: "sg-name", // 服务器组名称
10 Description: "sg-test", // 服务器组描述
11 }
12 // 更新服务器组
13 err := blbClient.UpdateAppServerGroup(BlbID, UpdateAppServerGroupArgs)
14 if err != nil {
15 return
16 }
17}
11.创建服务器组端口
根据负载均衡实例ID与健康检查配置信息,创建服务器组端口,相关代码如下所示。
1import "github.com/baidubce/bce-sdk-go/services/appblb"
2
3func CreateAppServerGroupPort() {
4 ak, sk, endpoint := "Your AK", "Your SK", "Your endpoint"
5 blbClient, _ := appblb.NewClient(ak, sk, endpoint) // 初始化客户端
6 BlbID := "blb-xxxxxxx"
7 CreateAppServerGroupPortArgs := &appblb.CreateAppServerGroupPortArgs{
8 SgId: "sg-xxxxxxxx", // 服务器组ID
9 Port: 80, // 服务器组端口
10 Type: "TCP", // 服务器组协议
11 HealthCheck: "TCP", // 健康检查协议
12 HealthCheckPort: 80, // 健康检查端口
13 HealthCheckTimeoutInSecond: 2, // 健康检查超时时间
14 HealthCheckIntervalInSecond: 5, // 健康检查间隔
15 HealthCheckDownRetry: 3, // 不健康阈值
16 HealthCheckUpRetry: 3, // 健康阈值
17 }
18 // 创建服务器组端口
19 result, err := blbClient.CreateAppServerGroupPort(BlbID, CreateAppServerGroupPortArgs)
20 if err != nil {
21 return
22 }
23}
12.更新服务器组端口
通过负载均衡实例ID、服务器组ID以及服务器组端口ID,更新服务器组端口信息,相关代码如下所示。
1import "github.com/baidubce/bce-sdk-go/services/appblb"
2
3func UpdateAppServerGroupPort() {
4 ak, sk, endpoint := "Your AK", "Your SK", "Your endpoint"
5 blbClient, _ := appblb.NewClient(ak, sk, endpoint) // 初始化客户端
6 BlbID := "blb-xxxxxxxx"
7 UpdateAppServerGroupPortArgs := &appblb.UpdateAppServerGroupPortArgs{
8 SgId: "sg-xxxxxxxx", // 服务器组ID
9 PortId: "sg_port-xxxxxxxx", // 服务器组端口ID
10 HealthCheck: "TCP", // 健康检查协议
11 HealthCheckPort: 80, // 健康检查端口
12 HealthCheckTimeoutInSecond: 2, // 健康检查超时时间
13 HealthCheckIntervalInSecond: 3, // 健康检查间隔
14 HealthCheckDownRetry: 3, // 不健康阈值
15 HealthCheckUpRetry: 1, // 健康阈值
16 }
17 // 更新服务器组端口
18 err := blbClient.UpdateAppServerGroupPort(BlbID, UpdateAppServerGroupPortArgs)
19 if err != nil {
20 return
21 }
22}
13.创建策略(监听绑定服务器组)
通过负载均衡实例ID、服务器组ID以及服务器组端口ID,实现负载均衡前端端口和后端服务器组绑定,相关代码如下所示。
1import "github.com/baidubce/bce-sdk-go/services/appblb"
2
3func CreatePolicysServerGroup() {
4 ak, sk, endpoint := "Your AK", "Your SK", "Your endpoint"
5 appblbClient, _ := appblb.NewClient(ak, sk, endpoint) // 初始化客户端
6 AppBlbID := "blb-xxxxxxxx"
7 args := &appblb.CreatePolicysArgs{
8 ListenerPort: 80, // 监听端口
9 Type: "TCP", // 监听协议
10 AppPolicyVos: []appblb.AppPolicy{ // 监听绑定策略列表
11 {
12 Description: "test", // 策略描述
13 Priority: 100, // 策略优先级
14 AppServerGroupId: "sg-xxxxxxxx", // 服务器组ID
15 BackendPort: 80, // 服务器组端口号
16 RuleList: []appblb.AppRule{ // 策略规则列表
17 {
18 Key: "*", // 规则的类型
19 Value: "*", // 通配符匹配字符串
20 },
21 },
22 },
23 },
24 }
25 // 创建策略
26 if err := appblbClient.CreatePolicys(AppBlbID, args); err != nil {
27 return
28 }
29}
14.查询策略
根据负载均衡实例ID及监听信息查询转发策略,相关代码如下所示。
1import "github.com/baidubce/bce-sdk-go/services/appblb"
2
3func DescribePolicysServerGroup() {
4 ak, sk, endpoint := "Your AK", "Your SK", "Your endpoint"
5 appblbClient, _ := appblb.NewClient(ak, sk, endpoint) // 初始化客户端
6 AppBlbID := "blb-xxxxxxxx"
7 args := &appblb.DescribePolicysArgs{
8 Port: 80,
9 Type: "TCP",
10 }
11 // 查询策略
12 response, err := appblbClient.DescribePolicys(AppBlbID, args)
13 if err != nil {
14 return
15 }
16}
15.删除策略
根据负载均衡实例ID及转发策略ID,删除转发策略,相关代码如下所示。
1import "github.com/baidubce/bce-sdk-go/services/appblb"
2
3func DeletePolicys() {
4 ak, sk, endpoint := "Your AK", "Your SK", "Your endpoint"
5 appblbClient, _ := appblb.NewClient(ak, sk, endpoint) // 初始化客户端
6 AppBlbID := "blb-xxxxxxxx"
7 args := &appblb.DeletePolicysArgs{
8 Port: 80, // 监听端口
9 Type: "TCP", // 监听协议
10 PolicyIdList: []string{
11 "policy-xxxxxxxx", // 策略ID
12 },
13 }
14 // 删除策略
15 if err := appblbClient.DeletePolicys(AppBlbID, args); err != nil {
16 return
17 }
18}
16.删除服务器组端口
根据负载均衡实例ID及服务器组端口ID,删除服务器组端口,相关代码如下所示。
1import "github.com/baidubce/bce-sdk-go/services/appblb"
2
3func DeleteAppServerGroupPort() {
4 ak, sk, endpoint := "Your AK", "Your SK", "Your endpoint"
5 blbClient, _ := appblb.NewClient(ak, sk, endpoint) // 初始化客户端
6 BlbID := "blb-xxxxxxxx"
7 DeleteAppServerGroupPortArgs := &appblb.DeleteAppServerGroupPortArgs{
8 SgId: "sg-xxxxxxxx", // 服务器组ID
9 PortIdList: []string{"sg_port-xxxxxxxx"}, // 服务器组端口ID
10 }
11 // 删除服务器组端口
12 err := blbClient.DeleteAppServerGroupPort(BlbID, DeleteAppServerGroupPortArgs)
13 if err != nil {
14 return
15 }
16}
17.删除服务器组
根据负载均衡实例ID及服务器组ID,删除服务器组,相关代码如下所示。
1import "github.com/baidubce/bce-sdk-go/services/appblb"
2
3func DeleteAppServerGroup() {
4 ak, sk, endpoint := "Your AK", "Your SK", "Your endpoint"
5 blbClient, _ := appblb.NewClient(ak, sk, endpoint) // 初始化客户端
6 blbId := "blb-xxxxxxxx"
7 deleteAppServerGroupArgs := &appblb.DeleteAppServerGroupArgs{
8 SgId: "sg-xxxxxxxx", // 服务器组ID
9 }
10 // 删除服务器组
11 err := blbClient.DeleteAppServerGroup(blbId, deleteAppServerGroupArgs)
12 if err != nil {
13 return
14 }
15}
18.删除监听
根据负载均衡实例ID及监听信息,删除监听,相关代码如下所示。
1import "github.com/baidubce/bce-sdk-go/services/appblb"
2
3func DeleteAppListeners() {
4 ak, sk, endpoint := "Your AK", "Your SK", "Your endpoint"
5 client, _ := appblb.NewClient(ak, sk, endpoint) // 初始化客户端
6 blbID := "blb-xxxxxxxx"
7 args := &appblb.DeleteAppListenersArgs{
8 PortList: []uint16{
9 80, // 监听端口
10 },
11 }
12 // 删除监听
13 err = client.DeleteAppListeners(blbID, args)
14 if err != nil {
15 panic(err)
16 }
17}
19.释放应用型负载均衡
根据负载均衡实例ID,删除负载均衡实例,相关代码如下所示。
1import "github.com/baidubce/bce-sdk-go/services/appblb"
2
3func DeleteLoadBalancer() {
4 ak, sk, endpoint := "Your AK", "Your SK", "Your endpoint"
5 BlbClient, _ := appblb.NewClient(ak, sk, endpoint) // 初始化客户端
6 BlbID := "blb-xxxxxxxx" // 实例ID
7 // 释放负载均衡实例
8 err := BlbClient.DeleteLoadBalancer(BlbID)
9 if err != nil {
10 panic(err)
11 }
12}