|
@@ -408,65 +408,6 @@ def remove_servers_from_server_group(alb_client, server_group_id, instance_id, p
|
|
|
except Exception as e:
|
|
|
logging.error(f"Failed to remove server {instance_id} from server group {server_group_id}: {str(e)}")
|
|
|
|
|
|
-#
|
|
|
-# def set_weight_for_instances_alb(alb_client, server_group_id, instance_id_list, weights):
|
|
|
-# """
|
|
|
-# 设置ALB服务器组中实例的权重
|
|
|
-# :param alb_client: ALB客户端连接
|
|
|
-# :param server_group_id: 服务器组ID
|
|
|
-# :param instance_id_list: 实例ID列表
|
|
|
-# :param weights: 权重列表
|
|
|
-# :return: None
|
|
|
-# """
|
|
|
-# servers = []
|
|
|
-# for instance_id, weight in zip(instance_id_list, weights):
|
|
|
-# server = alb_models.AddServersToServerGroupRequestServers( # todo update
|
|
|
-# port=80, # todo
|
|
|
-# server_id=instance_id,
|
|
|
-# server_type='ecs',
|
|
|
-# weight=weight
|
|
|
-# )
|
|
|
-# servers.append(server)
|
|
|
-#
|
|
|
-# request = alb_models.AddServersToServerGroupRequest(
|
|
|
-# server_group_id=server_group_id,
|
|
|
-# servers=servers
|
|
|
-# )
|
|
|
-#
|
|
|
-# runtime = util_models.RuntimeOptions()
|
|
|
-# try:
|
|
|
-# alb_client.add_servers_to_server_group_with_options(request, runtime)
|
|
|
-# logging.info(f"Successfully set weights for instances in server group {server_group_id}.")
|
|
|
-# except Exception as e:
|
|
|
-# logging.error(f"Failed to set weights for instances: {str(e)}")
|
|
|
-#
|
|
|
-#
|
|
|
-# def set_instance_weight_process_with_alb(alb_client, server_group_id_list, instance_id_list, weight_list):
|
|
|
-# """
|
|
|
-# 修改ALB服务器组中实例的权重值
|
|
|
-# :param alb_client: ALB客户端连接
|
|
|
-# :param server_group_id_list: 服务器组ID列表
|
|
|
-# :param instance_id_list: 实例ID列表
|
|
|
-# :param weight_list: 权重修改列表 type-list [(weight, sleep_time), ...]
|
|
|
-# :return:
|
|
|
-# """
|
|
|
-# for weight, sleep_time in weight_list:
|
|
|
-# logging.info(f"修改权重中: weight = {weight}")
|
|
|
-# for server_group_id in server_group_id_list:
|
|
|
-# flag = True
|
|
|
-# while flag:
|
|
|
-# try:
|
|
|
-# # 使用新的权重设置函数
|
|
|
-# set_weight_for_instances_alb(alb_client, server_group_id, instance_id_list, [weight] * len(instance_id_list))
|
|
|
-# logging.info(f"服务器组: {server_group_id} 权重设置完成!")
|
|
|
-# flag = False
|
|
|
-# except Exception as e:
|
|
|
-# logging.error(f"更新权重失败: {e}, 将重试...")
|
|
|
-# time.sleep(10)
|
|
|
-# continue
|
|
|
-# time.sleep(sleep_time)
|
|
|
-
|
|
|
-
|
|
|
def list_server_group_servers(alb_client, server_group_id):
|
|
|
"""
|
|
|
列出服务器组中的服务器并返回实例ID列表
|
|
@@ -482,15 +423,10 @@ def list_server_group_servers(alb_client, server_group_id):
|
|
|
try:
|
|
|
response = alb_client.list_server_group_servers_with_options(list_server_group_servers_request, runtime)
|
|
|
instance_ids = [server.server_id for server in response.body.servers]
|
|
|
- # if instance_ids:
|
|
|
- # return instance_ids[0]
|
|
|
- # else:
|
|
|
- # return None
|
|
|
return instance_ids
|
|
|
except Exception as error:
|
|
|
- print(error.message)
|
|
|
- print(error.data.get("Recommend"))
|
|
|
- UtilClient.assert_as_string(error.message)
|
|
|
+ print(str(error))
|
|
|
+ UtilClient.assert_as_string(str(error))
|
|
|
return []
|
|
|
|
|
|
|
|
@@ -507,17 +443,42 @@ async def list_server_group_servers_async(alb_client, server_group_id):
|
|
|
runtime = util_models.RuntimeOptions()
|
|
|
|
|
|
try:
|
|
|
- response = await alb_client.list_server_group_servers_with_options_async(list_server_group_servers_request,
|
|
|
- runtime)
|
|
|
+ response = await alb_client.list_server_group_servers_with_options_async(list_server_group_servers_request, runtime)
|
|
|
instance_ids = [server.server_id for server in response.body.servers]
|
|
|
return instance_ids
|
|
|
except Exception as error:
|
|
|
- print(error.message)
|
|
|
- print(error.data.get("Recommend"))
|
|
|
- UtilClient.assert_as_string(error.message)
|
|
|
+ print(str(error))
|
|
|
+ UtilClient.assert_as_string(str(error))
|
|
|
return []
|
|
|
|
|
|
|
|
|
+def update_server_group_server_weight(alb_client, server_group_id, instance_id, weight, port):
|
|
|
+ """
|
|
|
+ 更新特定服务器在服务器组中的权重
|
|
|
+ :param alb_client: ALB客户端
|
|
|
+ :param server_group_id: 服务器组ID
|
|
|
+ :param instance_id: 实例ID
|
|
|
+ :param weight: 权重值
|
|
|
+ :param port: 后端服务器使用的端口
|
|
|
+ """
|
|
|
+ server = alb_20200616_models.UpdateServerGroupServersAttributeRequestServers(
|
|
|
+ server_type='Ecs',
|
|
|
+ server_id=instance_id,
|
|
|
+ weight=weight,
|
|
|
+ port=port
|
|
|
+ )
|
|
|
+ request = alb_20200616_models.UpdateServerGroupServersAttributeRequest(
|
|
|
+ servers=[server],
|
|
|
+ server_group_id=server_group_id
|
|
|
+ )
|
|
|
+ runtime = util_models.RuntimeOptions()
|
|
|
+ try:
|
|
|
+ alb_client.update_server_group_servers_attribute_with_options(request, runtime)
|
|
|
+ print(f"Successfully updated server {instance_id} in group {server_group_id} to weight {weight}.")
|
|
|
+ except Exception as error:
|
|
|
+ print(str(error))
|
|
|
+ UtilClient.assert_as_string(str(error))
|
|
|
+
|
|
|
def update_server_group_servers_attribute(alb_client, server_group_id_list, instance_id_list, weight_list, port):
|
|
|
"""
|
|
|
更新服务器组中的服务器权重
|
|
@@ -530,27 +491,39 @@ def update_server_group_servers_attribute(alb_client, server_group_id_list, inst
|
|
|
for server_group_id in server_group_id_list:
|
|
|
for instance_id in instance_id_list:
|
|
|
for weight, sleep_time in weight_list:
|
|
|
- server = alb_20200616_models.UpdateServerGroupServersAttributeRequestServers(
|
|
|
- server_type='Ecs',
|
|
|
- server_id=instance_id,
|
|
|
- weight=weight,
|
|
|
- port=port
|
|
|
- )
|
|
|
- request = alb_20200616_models.UpdateServerGroupServersAttributeRequest(
|
|
|
- servers=[server],
|
|
|
- server_group_id=server_group_id
|
|
|
- )
|
|
|
- runtime = util_models.RuntimeOptions()
|
|
|
- try:
|
|
|
- alb_client.update_server_group_servers_attribute_with_options(request, runtime)
|
|
|
- print(f"Successfully updated server {instance_id} in group {server_group_id} to weight {weight}.")
|
|
|
- except Exception as error:
|
|
|
- print(error.message)
|
|
|
- print(error.data.get("Recommend"))
|
|
|
- UtilClient.assert_as_string(error.message)
|
|
|
+ update_server_group_server_weight(alb_client, server_group_id, instance_id, weight, port)
|
|
|
time.sleep(sleep_time)
|
|
|
|
|
|
|
|
|
+
|
|
|
+
|
|
|
+async def update_server_group_server_weight_async(alb_client, server_group_id, instance_id, weight, port):
|
|
|
+ """
|
|
|
+ 异步更新特定服务器在服务器组中的权重
|
|
|
+ :param alb_client: ALB客户端
|
|
|
+ :param server_group_id: 服务器组ID
|
|
|
+ :param instance_id: 实例ID
|
|
|
+ :param weight: 权重值
|
|
|
+ :param port: 后端服务器使用的端口
|
|
|
+ """
|
|
|
+ server = alb_20200616_models.UpdateServerGroupServersAttributeRequestServers(
|
|
|
+ server_type='Ecs',
|
|
|
+ server_id=instance_id,
|
|
|
+ weight=weight,
|
|
|
+ port=port
|
|
|
+ )
|
|
|
+ request = alb_20200616_models.UpdateServerGroupServersAttributeRequest(
|
|
|
+ servers=[server],
|
|
|
+ server_group_id=server_group_id
|
|
|
+ )
|
|
|
+ runtime = util_models.RuntimeOptions()
|
|
|
+ try:
|
|
|
+ await alb_client.update_server_group_servers_attribute_with_options_async(request, runtime)
|
|
|
+ print(f"Successfully updated server {instance_id} in group {server_group_id} to weight {weight} asynchronously.")
|
|
|
+ except Exception as error:
|
|
|
+ print(str(error))
|
|
|
+ UtilClient.assert_as_string(str(error))
|
|
|
+
|
|
|
async def update_server_group_servers_attribute_async(alb_client, server_group_id_list, instance_ids, weight_list, port):
|
|
|
"""
|
|
|
异步更新服务器组中的服务器属性
|
|
@@ -559,25 +532,10 @@ async def update_server_group_servers_attribute_async(alb_client, server_group_i
|
|
|
:param instance_ids: 实例ID列表
|
|
|
:param weight_list: 权重修改列表 type-list [(weight, sleep_time), ...]
|
|
|
"""
|
|
|
+ tasks = []
|
|
|
for server_group_id in server_group_id_list:
|
|
|
for instance_id in instance_ids:
|
|
|
for weight, sleep_time in weight_list:
|
|
|
- server = alb_20200616_models.UpdateServerGroupServersAttributeRequestServers(
|
|
|
- server_type='Ecs',
|
|
|
- server_id=instance_id,
|
|
|
- weight=weight,
|
|
|
- port=port
|
|
|
- )
|
|
|
- request = alb_20200616_models.UpdateServerGroupServersAttributeRequest(
|
|
|
- servers=[server],
|
|
|
- server_group_id=server_group_id
|
|
|
- )
|
|
|
- runtime = util_models.RuntimeOptions()
|
|
|
- try:
|
|
|
- await alb_client.update_server_group_servers_attribute_with_options_async(request, runtime)
|
|
|
- print(f"Successfully updated server {instance_id} in group {server_group_id} to weight {weight} asynchronously.")
|
|
|
- except Exception as error:
|
|
|
- print(error.message)
|
|
|
- print(error.data.get("Recommend"))
|
|
|
- UtilClient.assert_as_string(error.message)
|
|
|
- await asyncio.sleep(sleep_time)
|
|
|
+ tasks.append(update_server_group_server_weight_async(alb_client, server_group_id, instance_id, weight, port))
|
|
|
+ await asyncio.sleep(sleep_time)
|
|
|
+ await asyncio.gather(*tasks)
|