作为服务产品的rackspace负载平衡器的python接口
python-cloudlb的Python项目详细描述
Homepage: | https://github.com/chmouel/python-cloudlb |
---|---|
Credits: | Copyright 2011 Chmouel Boudjnah <chmouel@chmouel.com> |
Licence: | BSD |
用法
目前没有太多文档,只是一些快速的典型用法 可以使用此库执行的脚本。这是基于最新版本的:
http://docs.rackspacecloud.com/loadbalancers/api/clb-devguide-latest.pdf
创建负载均衡器:
#!/usr/bin/python import cloudlb clb = cloudlb.CloudLoadBalancer("username", "apikey","chicago") node1 = cloudlb.Node(address="10.180.160.131", port=80, condition="ENABLED") virtualIP1 = cloudlb.VirtualIP( type="PUBLIC") clb.loadbalancers.create(name="mytestinglb", port=80, protocol="HTTP", nodes=[node1], virtualIps=[virtualIp1])
列出负载平衡器:
#!/usr/bin/python import cloudlb clb = cloudlb.CloudLoadBalancer("username", "apikey","chicago") lbs = clb.loadbalancers.list() for lb in lbs: print "%s has %s node attached with IP addresses:" % (lb.name, len(lb.nodes)) for ip in lb.virtualIps: print "%s/%s" % (ip.ipVersion, ip.address)
列出具有属于它的节点的负载平衡器:
#!/usr/bin/python import cloudlb clb = cloudlb.CloudLoadBalancer("username", "apikey","chicago") ip = '10.1.1.1' lbs = clb.loadbalancers.search(ip) for lb in lbs: print "%s has %s node attached" % (lb.name, ip))
按ID获取LB:
#!/usr/bin/python import cloudlb clb = cloudlb.CloudLoadBalancer("username", "apikey","chicago") clb.authenticate() lb = clb.loadbalancers.get(LoadBalancerID)
删除lb:
#!/usr/bin/python import cloudlb clb = cloudlb.CloudLoadBalancer("username", "apikey","chicago") lb = clb.loadbalancers.get(LoadBalancerID) lb.delete()
列出lb的节点:
#!/usr/bin/python import cloudlb clb = cloudlb.CloudLoadBalancer("username", "apikey","chicago") lbs = clb.loadbalancers.list() lb = lbs[0] #get the first one nodes=lb.nodes.filter(status='ENABLED') for node in nodes: print node.address
通过lb条件过滤节点:
#!/usr/bin/python import cloudlb clb = cloudlb.CloudLoadBalancer("username", "apikey","chicago") lbs = clb.loadbalancers.list() lb = lbs[0] #get the first one for node in lb.nodes: print node.address
将节点添加到lb:
#!/usr/bin/python import cloudlb clb = cloudlb.CloudLoadBalancer("username", "apikey","chicago") newnode = cloudlb.Node(address="10.180.160.131", port=80, condition="ENABLED") lbs = clb.loadbalancers.list() lb = lbs[0] #add to the first one lb.add_nodes([newnode])
从lb中删除节点:
#!/usr/bin/python import cloudlb clb = cloudlb.CloudLoadBalancer("username", "apikey","chicago") lbs = clb.loadbalancers.list() lb = lbs[0] #add to the first one node = lb.nodes[0] #get the first node node.delete() #delete it
更新节点的属性:
#!/usr/bin/python import cloudlb clb = cloudlb.CloudLoadBalancer("username", "apikey","chicago") lbs = clb.loadbalancers.list() mylb = lbs[0] #add to the first one nodeid = 14106 nodes = mylb.nodes node = mylb.nodes.get(nodeid) toggle_status = node.condition == "ENABLED" and "DISABLED" or "ENABLED" node.condition = toggle_status node.update()
使用.get()获取节点的权重:
#!/usr/bin/python import cloudlb clb = cloudlb.CloudLoadBalancer("username", "apikey","chicago") lbs = clb.loadbalancers.list() mylb = lbs[0] #add to the first one nodeid = 14106 nodes = mylb.nodes node = mylb.nodes.get(nodeid) print node.weight
更新loadbalancer上的属性:
#!/usr/bin/python import cloudlb clb = cloudlb.CloudLoadBalancer("username", "apikey","chicago") lbs = clb.loadbalancers.list() mylb = lbs[0] #first lb mylb.protocol = "FTP" mylb.name = "APrettyNewName" mylb.update()
获取所有负载平衡器的使用统计信息:
#!/usr/bin/python import cloudlb clb = cloudlb.CloudLoadBalancer("username", "apikey","chicago") print clb.get_usage()
获取特定负载平衡器的使用统计信息:
#!/usr/bin/python import cloudlb clb = cloudlb.CloudLoadBalancer("username", "apikey","chicago") lbs = clb.loadbalancers.list() mylb = lbs[0] #first lb print mylb.get_usage()
获取特定负载平衡器的实时统计信息:
#!/usr/bin/python import cloudlb clb = cloudlb.CloudLoadBalancer("username", "apikey","chicago") lbs = clb.loadbalancers.list() mylb = lbs[0] #first lb print mylb.get_stats()
获取所有负载平衡器的限制:
#!/usr/bin/python import cloudlb clb = cloudlb.CloudLoadBalancer("username", "apikey","chicago") print clb.get_limits()
获取负载平衡算法:
#!/usr/bin/python import cloudlb clb = cloudlb.CloudLoadBalancer("username", "apikey","chicago") print clb.get_algorithms()
获取负载平衡协议:
#!/usr/bin/python import cloudlb clb = cloudlb.CloudLoadBalancer("username", "apikey","chicago") print clb.get_protocols()
获取当前运行状况监视器:
#!/usr/bin/python import cloudlb clb = cloudlb.CloudLoadBalancer("username", "apikey","chicago") lbs = clb.loadbalancers.list() mylb = lbs[0] #first lb hm_monitor = mylb.healthmonitor() print hm_monitor.get()
使用简单的TCP连接监视负载平衡器:
#!/usr/bin/python import cloudlb clb = cloudlb.CloudLoadBalancer("username", "apikey","chicago") lbs = clb.loadbalancers.list() mylb = lbs[0] #first lb hm_monitor = mylb.healthmonitor() hm = cloudlb.healthmonitor.HealthMonitor( type="CONNECT", delay=10, timeout=10, attemptsBeforeDeactivation=3) hm_monitor.add(hm)
使用http监视loadbalancer:
#!/usr/bin/python import cloudlb clb = cloudlb.CloudLoadBalancer("username", "apikey","chicago") lbs = clb.loadbalancers.list() mylb = lbs[0] #first lb hm_monitor = mylb.healthmonitor() hm = cloudlb.healthmonitor.HealthMonitor( type="HTTP", #or HTTPS delay=10, timeout=10, attemptsBeforeDeactivation=3, path="/", statusRegex="^[234][0-9][0-9]$", bodyRegex="testing") hm_monitor.add(hm)
删除运行状况监视器规则:
#!/usr/bin/python import cloudlb clb = cloudlb.CloudLoadBalancer("username", "apikey","chicago") lbs = clb.loadbalancers.list() mylb = lbs[0] #first lb hm_monitor = mylb.healthmonitor() hm_monitor.delete()
添加http cookie会话持久性:
#!/usr/bin/python import cloudlb clb = cloudlb.CloudLoadBalancer("username", "apikey","chicago") lbs = clb.loadbalancers.list() mylb = lbs[0] #first lb ss = cloudlb.sessionpersistence.SessionPersistence(persistenceType="HTTP_COOKIE") ssp = mylb.session_persistence() ssp.add(ss)
获取会话持久性:
#!/usr/bin/python import cloudlb clb = cloudlb.CloudLoadBalancer("username", "apikey","chicago") lbs = clb.loadbalancers.list() mylb = lbs[0] #first lb ssp = mylb.session_persistence() print ssp.get()
删除会话持久性配置:
#!/usr/bin/python import cloudlb clb = cloudlb.CloudLoadBalancer("username", "apikey","chicago") lbs = clb.loadbalancers.list() mylb = lbs[0] #first lb ssp = mylb.session_persistence() ssp.delete()
启用/禁用连接日志记录:
#!/usr/bin/python import cloudlb clb = cloudlb.CloudLoadBalancer("username", "apikey","chicago") lbs = clb.loadbalancers.list() mylb = lbs[0] #first lb cl = mylb.connection_logging() #Get connection logging status print cl.get() #Enable connection logging cl.enable() #Disable connection logging cl.disable()
访问列表:
#!/usr/bin/python import cloudlb clb = cloudlb.CloudLoadBalancer("username", "apikey","chicago") lbs = clb.loadbalancers.list() mylb = lbs[0] #first lb accesslist = mylb.accesslist() networkItem1 = cloudlb.accesslist.NetworkItem( address="10.20.30.40", type="ALLOW") networkItem2 = cloudlb.accesslist.NetworkItem( address="0.0.0.0/0", type="DENY") # Allow only 10.20.30.40 accesslist.add([networkItem1, networkItem2]) # List accesslists print accesslist.list() # Delete all accesslist accesslist.delete() # Delete accesslist by ID accesslist.delete(id=62)
自定义错误页:
#!/usr/bin/python import cloudlb clb = cloudlb.CloudLoadBalancer("username", "apikey","chicago") lbs = clb.loadbalancers.list() mylb = lbs[0] #first lb errorpage = mylb.errorpage() # Display current error page print errorpage.get() # Change the error page errorpage.add('<html><body><h1>Error</h1></body></html>') # Revert to the default error page errorpage.delete()
许可证
有关许可证信息,请参见复制。版权所有©2011,Rackspace US,Inc.