python 监听tcp端口_创建TCP监听_创建TCP监听_功能示例_Python SDK示例_SDK 参考_开发指南_负载均衡 - 阿里云...

# encoding=utf-8

import json

import sys

# 调用AcsClient参数进行身份验证

from aliyunsdkcore.client import AcsClient

# 使用阿里云官方sdk的异常处理模块

from aliyunsdkcore.acs_exception.exceptions import ServerException, ClientException

# 调用创建SLB实例API

from aliyunsdkslb.request.v20140515 import CreateLoadBalancerRequest

# 调用添加默认服务器组API

from aliyunsdkslb.request.v20140515 import AddBackendServersRequest

# 调用添加TCP监听API

from aliyunsdkslb.request.v20140515 import CreateLoadBalancerTCPListenerRequest

# 调用从默认服务器组中移除ECS实例API

from aliyunsdkslb.request.v20140515 import RemoveBackendServersRequest

# 调用删除SLB实例API

from aliyunsdkslb.request.v20140515 import DeleteLoadBalancerRequest

# 命令行打印日志

from sdk_lib.common_util import CommonUtil

# 异常处理逻辑

from sdk_lib.exception import ExceptionHandler

'''

创建slb实例->添加后端服务器->创建tcp监听->删除后端服务器->删除slb实例

'''

# client参数配置

ACS_CLIENT = AcsClient(

'your-access-key-id', # your-access-key-id

'your-access-key-secret', # your-access-key-secret

'cn-zhangjiakou', # your-region-id

)

TRY_TIME = 3

def create_load_balancer(params):

'''

create_load_balancer:创建slb实例

官网API参考链接:https://help.aliyun.com/document_detail/27577.html

'''

try:

# 设置创建SLB实例的调用参数

request = CreateLoadBalancerRequest.CreateLoadBalancerRequest()

request.set_MasterZoneId(params["master_zone_id"])

request.set_SlaveZoneId(params["slave_zone_id"])

request.set_LoadBalancerName(params["load_balancer_name"])

request.set_PayType(params["pay_balancer_type"])

request.set_LoadBalancerSpec(params["load_balancer_spec"])

# 发送调用请求并接收返回数据

response = ACS_CLIENT.do_action_with_exception(request)

response_json = json.loads(response)

# 返回结果

return response_json

except ServerException as e:

ExceptionHandler.server_exception(e)

except ClientException as e:

ExceptionHandler.client_exception(e)

def add_backend_servers(params):

'''

add_backend_servers:添加后端服务器

官网API参考链接: https://help.aliyun.com/document_detail/27632.html

'''

counter = 0

while counter < TRY_TIME:

try:

# 设置添加默认服务器组的调用参数

request = AddBackendServersRequest.AddBackendServersRequest()

# 负载均衡实例的ID

request.set_LoadBalancerId(params["load_balancer_id"])

# 要添加的后端服务器列表

request.set_BackendServers(params["backend_servers"])

# 发送调用请求并接收返回数据

response = ACS_CLIENT.do_action_with_exception(request)

response_json = json.loads(response)

# 返回结果

return response_json

except ServerException as e:

if ExceptionHandler.server_exception(e):

return e

except ClientException as e:

if ExceptionHandler.client_exception(e):

return e

finally:

counter += 1

def create_tcp_listener(params):

'''

create_tcp_listener:创建tcp监听

官网API参考链接: https://help.aliyun.com/document_detail/27594.html

'''

counter = 0

while counter < TRY_TIME:

try:

# 设置创建TCP监听的调用参数

request = CreateLoadBalancerTCPListenerRequest.CreateLoadBalancerTCPListenerRequest()

# 负载均衡实例的ID

request.set_LoadBalancerId(params["load_balancer_id"])

# 负载均衡实例前端使用的端口

request.set_ListenerPort(params["listener_port"])

# 负载均衡实例后端使用的端口

request.set_BackendServerPort(params["backend_server_port"])

# 监听的健康检查协议

request.set_HealthCheckType(params["listener_health_check"])

# 设置监听的带宽峰值

request.set_Bandwidth(params["listener_bandwidth"])

# 发送调用请求并接收返回数据

response = ACS_CLIENT.do_action_with_exception(request)

response_json = json.loads(response)

# 返回结果

return response_json

except ServerException as e:

if ExceptionHandler.server_exception(e):

return e

except ClientException as e:

if ExceptionHandler.client_exception(e):

return e

finally:

counter += 1

def remove_backend_servers(params):

'''

add_backend_servers:删除后端服务器

官网API参考链接: https://help.aliyun.com/document_detail/27633.html

'''

counter = 0

while counter < TRY_TIME:

try:

# 设置删除后端服务器的调用参数

request = RemoveBackendServersRequest.RemoveBackendServersRequest()

# 负载均衡实例的ID

request.set_LoadBalancerId(params["load_balancer_id"])

# 要删除的后端服务器列表

request.set_BackendServers(params["backend_servers"])

# 发送调用请求并接收返回数据

response = ACS_CLIENT.do_action_with_exception(request)

response_json = json.loads(response)

# 返回结果

return response_json

except ServerException as e:

if ExceptionHandler.server_exception(e):

return e

except ClientException as e:

if ExceptionHandler.client_exception(e):

return e

finally:

counter += 1

def delete_load_balancer(load_balancer_id):

'''

delete_load_balancer:删除slb实例

官网API参考链接:https://help.aliyun.com/document_detail/27579.html

'''

try:

# 设置删除SLB实例的调用参数

request = DeleteLoadBalancerRequest.DeleteLoadBalancerRequest()

# 负载均衡实例的ID

request.set_LoadBalancerId(load_balancer_id)

# 发送调用请求并接收返回数据

response = ACS_CLIENT.do_action_with_exception(request)

response_json = json.loads(response)

# 返回结果

return response_json

except ServerException as e:

ExceptionHandler.server_exception(e)

except ClientException as e:

ExceptionHandler.client_exception(e)

def main():

params = {}

# 设置创建SLB实例的参数

# 设置新建SLB实例的主可用区为cn-zhangjiakou-a

params["master_zone_id"] = "cn-zhangjiakou-a"

# 设置新建SLB实例的主可用区为cn-zhangjiakou-b

params["slave_zone_id"] = "cn-zhangjiakou-b"

# 设置新建SLB实例的名称为SLB1

params["load_balancer_name"] = "SLB1"

# 设置新建SLB实例的计费类型为按量计费

params["pay_balancer_type"] = "PayOnDemand"

# 设置新建SLB实例的规格为slb.s1.small

params["load_balancer_spec"] = "slb.s1.small"

# 设置添加到默认服务器组的ECS的实例ID和权重

params["backend_servers"] = [{"ServerId": "i-8vbe8yi8krxxxxxxxxxxw", "Weight": "100"},

{"ServerId": "i-8vbe8yi8kccxxxxxxxxxv", "Weight": "100"}]

# 设置添加TCP监听的参数

# 前端使用的端口为80

params["listener_port"] = 80

# 后端服务器开放用来接收请求的端口为80

params["backend_server_port"] = 80

# 健康检查协议为TCP

params["listener_health_check"] = "tcp"

# TCP监听的带宽峰值为-1,即不限制带宽峰值

params["listener_bandwidth"] = -1

# 创建slb实例

# 获取create_load_balancer函数返回值,load_balancer_json为结果的json串

load_balancer_json = create_load_balancer(params)

# 打印 load_balancer_json结果,其中"create_load_balancer"是对json串起的名字

CommonUtil.log("create_load_balancer", load_balancer_json)

# slb实例id

params["load_balancer_id"] = load_balancer_json["LoadBalancerId"]

# 添加后端服务器

load_balancer_json = add_backend_servers(params)

CommonUtil.log("add_backend_servers", load_balancer_json)

# 创建tcp监听

load_balancer_json = create_tcp_listener(params)

CommonUtil.log("create_tcp_listener", load_balancer_json)

# 删除后端服务器

load_balancer_json = remove_backend_servers(params)

CommonUtil.log("remove_backend_servers", load_balancer_json)

# 删除slb实例

# 删除返回的LoadBalancerId对应的SLB实例

load_balancer_json = delete_load_balancer(load_balancer_json["LoadBalancerId"])

# 打印 load_balancer_json结果

CommonUtil.log("delete_load_balancer", load_balancer_json)

if __name__ == "__main__":

sys.exit(main())

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值