|
@@ -17,6 +17,8 @@ from aliyunsdkecs.request.v20140526.RunInstancesRequest import RunInstancesReque
|
|
|
from aliyunsdkecs.request.v20140526.DescribeNetworkInterfacesRequest import DescribeNetworkInterfacesRequest
|
|
|
from aliyunsdkslb.request.v20140515.AddBackendServersRequest import AddBackendServersRequest
|
|
|
from aliyunsdkecs.request.v20140526.RunCommandRequest import RunCommandRequest
|
|
|
+from aliyunsdkcore.request import CommonRequest
|
|
|
+
|
|
|
|
|
|
logging.basicConfig(level=logging.INFO,
|
|
|
format='%(asctime)s %(filename)s[line:%(lineno)d] %(levelname)s %(message)s',
|
|
@@ -142,18 +144,43 @@ def healthCheck(instance_id):
|
|
|
addBackendServers(slb_id_2, instance_id)
|
|
|
|
|
|
|
|
|
+def setWeight(slb_id, instance_id, weight):
|
|
|
+ """
|
|
|
+ 设置slb权重
|
|
|
+ :param slb_id: slb_id
|
|
|
+ :param instance_id: 服务器id
|
|
|
+ :param weight: 权重值
|
|
|
+ :return: None
|
|
|
+ """
|
|
|
+ BackendServers = [{"ServerId": instance_id, "Weight": weight}]
|
|
|
+ request = CommonRequest()
|
|
|
+ request.set_accept_format('json')
|
|
|
+ request.set_domain('slb.aliyuncs.com')
|
|
|
+ request.set_version('2014-05-15')
|
|
|
+ request.set_method('POST')
|
|
|
+ request.set_action_name('SetBackendServers')
|
|
|
+ request.add_query_param('BackendServers', BackendServers)
|
|
|
+ request.add_query_param('LoadBalancerId', slb_id)
|
|
|
+ try:
|
|
|
+ response = clt.do_action_with_exception(request)
|
|
|
+ except Exception as e:
|
|
|
+ logging.error(e)
|
|
|
+
|
|
|
+
|
|
|
def addBackendServers(slb_id, instance_id):
|
|
|
"""服务器挂载到负载均衡"""
|
|
|
request = AddBackendServersRequest()
|
|
|
request.set_accept_format('json')
|
|
|
ipaddr = getIpaddr(instance_id)
|
|
|
request.set_LoadBalancerId(slb_id)
|
|
|
+ request.set_BackendServers([{"ServerId": instance_id, "Weight": "0", "Type": "ecs", "ServerIp": ipaddr}])
|
|
|
+ response = client.do_action_with_exception(request)
|
|
|
+ logging.info(response)
|
|
|
for i in range(1, 6):
|
|
|
- weight = i * 20
|
|
|
- request.set_BackendServers([{"ServerId": instance_id, "Weight": weight, "Type": "ecs", "ServerIp": ipaddr}])
|
|
|
- response = client.do_action_with_exception(request)
|
|
|
- logging.info(response)
|
|
|
time.sleep(5)
|
|
|
+ weight = i * 20
|
|
|
+ logging.info(f"instance_id: {instance_id}, weight: {weight}")
|
|
|
+ setWeight(slb_id=slb_id, instance_id=instance_id, weight=weight)
|
|
|
|
|
|
|
|
|
def getIpaddr(instance_id):
|