# 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())

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

  1. python和pygame游戏开发指南_学习记录

    <python和pygame游戏开发指南> Making Games With Python and Palme [美]Ai Sweigart 著,李强 译,2015.12第一版 文章目录 ...

  2. 区块链开发指南_区块链开发权威指南

    区块链开发指南 by Haseeb Qureshi 由Haseeb Qureshi 区块链开发权威指南 (The authoritative guide to blockchain developme ...

  3. web开发指南_成为专业Web开发人员的实用指南

    web开发指南 This article is meant to serve as a practical guide to becoming a professional web developer ...

  4. fabric shim安装合约_智能合约简介_智能合约开发_Hyperledger Fabric_开发指南_区块链服务 BaaS - 阿里云...

    概述 在 Hyperledger Fabric 中,链码(Chaincode)又称为智能合约(下文中我们统一称为链码),是用Go,node.js或Java编写的程序,主要用于操作账本上的数据.用户的应 ...

  5. 物联卡查询流量_物联卡流量查询_python_API文档_开发指南_物联网无线连接服务 - 阿里云...

    物联网卡流量查询接口 步骤 1 创建阿里云账号 为了访问服务,您需要有一个阿里云账号.如果没有,可首先按照如下步骤创建阿里云账号: 访问阿里云 官方网站,单击页面上的 免费注册 按钮. 按照屏幕提示完 ...

  6. libgdx开发指南_使用libgdx进行Android游戏开发–一天中的原型,第1a部分

    libgdx开发指南 在本文中,我将绕开游戏引擎和组件的构建模块,并演示如何使用libgdx库快速制作游戏原型. 您将学到什么: 创建一个非常简单的2D Shooter Platformer游戏. 完 ...

  7. python听歌识曲爬虫_Python爬取网易云音乐热门评论的搜索结果-阿里云开发者社区...

    网易云音乐评论爬虫(三):爬取歌曲的全部评论 用过网易云音乐听歌的朋友都知道,网易云音乐每首歌曲后面都有很多评论,热门歌曲的评论更是接近百万或者是超过百万条.现在我就来分享一下如何爬取网易云音乐歌曲的 ...

  8. python中shutil模块_python文件、文件夹、压缩包处理模块-shutil模块-阿里云开发者社区...

    shutil模块 高级的文件.文件夹.压缩包 处理模块 本节内容基本在linux下python交互环境实现 复制移动文件.文件夹 将文件内容拷贝到另一个文件中,可以部分内容 格式如下: ``` shu ...

  9. 区块链开发指南_区块链开发完全指南

    区块链将是技术的发展方向. 我认为未来将围绕区块链一新兴技术构建,这绝不是什么牵强附会.区块链最初被设计成一种公共的,无权限的技术,后来引入了另一种区块链,每种区块链都有自己独特的用例集.公共/无权限 ...

最新文章

  1. Matlab数据的可视化 -- 散点图
  2. python语言是谁发明的咋读-Guido发明的python语言是哪一年正式发布的?
  3. 【深度学习】array, list, tensor,Dataframe,Series之间互相转换总结
  4. html select 可输入 可编辑
  5. 线性代数及其应用(part3)--对角化
  6. android ble 连续读写,Android BLE实现对蓝牙的读写
  7. SpringMVC框架搭建( 使用Jar包搭建)
  8. 鸿蒙 OS 尖刀武器之分布式软总线技术全解析!
  9. jquery上传图片_MVC 上传图片,裁剪头像
  10. 十全干货:核心游戏系统架构设计
  11. UVA12541 LA6148 Birthdates【最值】
  12. python迭代器一般包含_python 迭代器
  13. 五万字整理Mybatis 入门只需要一篇文章
  14. 段落超出,省略...
  15. 如何使用UMAP分析100维数据,惊艳令人叹为观止
  16. 站在两个世界的边缘 程浩,一个认真生活过的人
  17. 各省市大学 全国各个省市重点民办本专科大学
  18. 【Pygame小游戏】趣味益智游戏 :打地鼠,看一下能打多少只呢?(附源码)
  19. 银行等单位工作日计算的实现
  20. DedeCMS织梦教程:菜鸟级基础问题解决方法大汇总

热门文章

  1. linux之gzip命令
  2. 优步杭州推出顺路接单功能,不久将向全国开放!
  3. 用终端命令(Git)合并到Master分支等操作
  4. Java语言的特点和特性
  5. C学习笔记-makefile
  6. Python函数(1)
  7. js学习总结----js中常用的四种输出方式
  8. Mac OS X安装 ffmpeg
  9. 厚积薄发,丰富的公用类库积累,助你高效进行系统开发(10)---各种线程同步的集合类...
  10. 【SpringMVC 笔记】结果跳转、数据处理、乱码问题