|
@@ -7,6 +7,7 @@ import asyncio
|
|
|
|
|
|
from aliyunsdkcore.client import AcsClient
|
|
|
from aliyunsdkslb.request.v20140515.AddBackendServersRequest import AddBackendServersRequest
|
|
|
+from aliyunsdkslb.request.v20140515.RemoveBackendServersRequest import RemoveBackendServersRequest
|
|
|
from aliyunsdkecs.request.v20140526.RunInstancesRequest import RunInstancesRequest
|
|
|
from aliyunsdkecs.request.v20140526.DescribeInstancesRequest import DescribeInstancesRequest
|
|
|
from aliyunsdkecs.request.v20140526.DescribeNetworkInterfacesRequest import DescribeNetworkInterfacesRequest
|
|
@@ -345,12 +346,35 @@ def add_backend_servers(client, slb_id, instances):
|
|
|
:param instances: 实例列表 [(instance_id, ip), ...]
|
|
|
:return:
|
|
|
"""
|
|
|
- request = AddBackendServersRequest()
|
|
|
+ try:
|
|
|
+ request = AddBackendServersRequest()
|
|
|
+ request.set_accept_format('json')
|
|
|
+ request.set_LoadBalancerId(slb_id)
|
|
|
+ backend_servers = [
|
|
|
+ {"ServerId": instance_id, "Weight": "0", "Type": "ecs", "ServerIp": ip_address}
|
|
|
+ for instance_id, ip_address in instances]
|
|
|
+ request.set_BackendServers(backend_servers)
|
|
|
+ response = client.do_action_with_exception(request)
|
|
|
+ return response
|
|
|
+ except Exception as e:
|
|
|
+ logging.error(e)
|
|
|
+ sys.exit()
|
|
|
+
|
|
|
+
|
|
|
+def remove_backend_servers(client, slb_id, instances):
|
|
|
+ """
|
|
|
+ 服务器从负载均衡移除(一次调用最多可以移除20个后端服务器)
|
|
|
+ :param client:
|
|
|
+ :param slb_id:
|
|
|
+ :param instances: 实例列表 [(instance_id, ip), ...]
|
|
|
+ :return:
|
|
|
+ """
|
|
|
+ request = RemoveBackendServersRequest()
|
|
|
request.set_accept_format('json')
|
|
|
request.set_LoadBalancerId(slb_id)
|
|
|
backend_servers = [
|
|
|
- {"ServerId": instance_id, "Weight": "0", "Type": "ecs", "ServerIp": ip_address}
|
|
|
- for instance_id, ip_address in instances]
|
|
|
+ {"ServerId": instance_id, "Weight": "0", "Type": "ecs"}
|
|
|
+ for instance_id in instances]
|
|
|
request.set_BackendServers(backend_servers)
|
|
|
response = client.do_action_with_exception(request)
|
|
|
return response
|
|
@@ -402,3 +426,27 @@ def add_backend_servers_with_slbs(client, slb_id_list, instances):
|
|
|
except Exception as e:
|
|
|
logging.error(e)
|
|
|
sys.exit()
|
|
|
+
|
|
|
+
|
|
|
+def remove_backend_servers_with_slbs(client, slb_id_list, instances):
|
|
|
+ """
|
|
|
+ 服务器从负载均衡移除(一次调用最多可以移除20个后端服务器)
|
|
|
+ :param client:
|
|
|
+ :param slb_id_list:
|
|
|
+ :param instances: 实例列表 [(instance_id, ip), ...]
|
|
|
+ :return:
|
|
|
+ """
|
|
|
+ try:
|
|
|
+ for slb_id in slb_id_list:
|
|
|
+ request = RemoveBackendServersRequest()
|
|
|
+ request.set_accept_format('json')
|
|
|
+ request.set_LoadBalancerId(slb_id)
|
|
|
+ backend_servers = [
|
|
|
+ {"ServerId": instance_id, "Weight": "0", "Type": "ecs"}
|
|
|
+ for instance_id in instances]
|
|
|
+ request.set_BackendServers(backend_servers)
|
|
|
+ response = client.do_action_with_exception(request)
|
|
|
+ logging.info(f"slb: {slb_id} remove backend servers finished!")
|
|
|
+ except Exception as e:
|
|
|
+ logging.error(e)
|
|
|
+ sys.exit()
|