supeng hace 4 meses
padre
commit
8fe5ecf26e

+ 1 - 3
gateway/gateway_update.py

@@ -95,13 +95,11 @@ if __name__ == '__main__':
     ecs_client = utils.connect_client(access_key_id=gateway_config.ecs_client_params['access_key_id'],
                                       access_key_secret=gateway_config.ecs_client_params['access_key_secret'],
                                       region_id=gateway_config.ecs_client_params['region_id'])
-    print(f"ecs_client = {ecs_client}")
     # 初始化 ALB 客户端
     alb_client = utils.connect_alb_client(gateway_config.alb_client_params['access_key_id'],
                                           gateway_config.alb_client_params['access_key_secret'],
                                           endpoint=gateway_config.alb_client_params['endpoint']
                                           )
-    print(f"alb_client = {alb_client}")
 
     success_count = 0
     threads = []
@@ -111,8 +109,8 @@ if __name__ == '__main__':
 
     # 获取 ALB 下服务器组的实例 ID
     res = utils.list_server_group_servers(alb_client=alb_client, server_group_id=gateway_config.server_group_id_list[0])
-    print(f"res = {res}")
     total += len(res)
+    print(f"获取 ALB 下服务器组的实例 ID = {res} total = {total}")
     InstanceIDs.extend(res)
     print(InstanceIDs)
 

+ 7 - 7
longvideoapi/longvideoapi_reduce_with_count.py

@@ -34,13 +34,13 @@ def remove_instances(ecs_client, alb_client, instance_ids, port):
     time.sleep(20)
 
     # 2. 从 ALB 服务器组中移除实例
-    for server_group_id in longvideoapi_config.server_group_id_list:
-        try:
-            utils.remove_servers_from_server_group(alb_client=alb_client, server_group_id=server_group_id,
-                                                   instance_ids=instance_ids, port=port)
-            logging.info(f"Successfully removed instances from server group {server_group_id}.")
-        except Exception as e:
-            logging.error(f"Failed to remove instances from server group {server_group_id}: {e}")
+    # for server_group_id in longvideoapi_config.server_group_id_list:
+    try:
+        utils.remove_servers_from_server_group(alb_client=alb_client, server_group_id_list=longvideoapi_config.server_group_id_list,
+                                               instance_ids=instance_ids, port=port)
+        logging.info(f"Successfully removed instance_ids:  {instance_ids} from server group {longvideoapi_config.server_group_id_list}.")
+    except Exception as e:
+        logging.error(f"Failed to remove instance_ids: {instance_ids} from server group {longvideoapi_config.server_group_id_list}: {e}")
 
     logging.info(f"Remove from ALB finished, instances: {instance_ids}")
 

+ 3 - 3
longvideoapi/longvideoapi_scaling_k_count.py

@@ -88,9 +88,9 @@ async def ess_instance(ecs_client, alb_client, ess_count, max_workers, port):
     if len(health_instances) > 0:
         # 所有机器探活成功
         time.sleep(20)
-        for instance_id, ip in health_instances:
-            for server_group_id in longvideoapi_config.server_group_id_list:
-                utils.add_servers_to_server_group(alb_client, server_group_id, instance_id, weight=100, port=port)
+        # for instance_id, ip in health_instances:
+        #     for server_group_id in longvideoapi_config.server_group_id_list:
+        utils.add_servers_to_server_group(alb_client, longvideoapi_config.server_group_id_list, health_instances, weight=100, port=port)
         logging.info(f"ess count: {ess_count}, "
                      f"create count: {len(ess_instance_ids)}, "
                      f"finished count: {len(health_instances)}")

+ 13 - 13
longvideoapi/longvideoapi_update_k.py

@@ -82,10 +82,10 @@ async def ess_instance(ecs_client, alb_client, ess_count, max_workers, version,
         # 所有机器探活成功
         time.sleep(20)
         health_instance_ids = [instance_id for instance_id, _ in health_instances]
-        for server_group_id in longvideoapi_config.server_group_id_list:
-            for instance_id in health_instance_ids:
-                utils.add_servers_to_server_group(alb_client, server_group_id, instance_id, weight=0, port=port)
-                logging.info(f"Successfully added instance {instance_id} to server group {server_group_id}.")
+        # for server_group_id in longvideoapi_config.server_group_id_list:
+            # for instance_id in health_instance_ids:
+        utils.add_servers_to_server_group(alb_client, longvideoapi_config.server_group_id_list, health_instance_ids, weight=0, port=port)
+        logging.info(f"Successfully added health_instance_ids {health_instance_ids} to server groups {longvideoapi_config.server_group_id_list}.")
 
         add_weight_list = [(10, 5), (20, 5), (40, 5), (60, 5), (80, 5), (100, 5)]
         utils.update_server_group_servers_attribute(alb_client,
@@ -168,8 +168,8 @@ async def update_instance(ecs_client, alb_client, instance_ids, max_workers, ver
     :param port: 后端服务器使用的端口
     :return:
     """
-    media_index = len(instance_ids)//2
-    instance_ids_group = [instance_ids[:media_index], instance_ids[media_index:]]
+    sub_index = len(instance_ids)//2
+    instance_ids_group = [instance_ids[:sub_index], instance_ids[sub_index:]]
     update_finished_count = 0
     for instance_id_list in instance_ids_group:
         logging.info(f"update instances: {instance_id_list}")
@@ -259,13 +259,13 @@ def remove_instances(ecs_client, alb_client, instance_ids, port):
 
     time.sleep(10)
     # 2.移除alb
-    for server_group_id in longvideoapi_config.server_group_id_list:
-        try:
-            utils.remove_servers_from_server_group(alb_client=alb_client, server_group_id=server_group_id,
-                                                   instance_ids=instance_ids, port=port)
-            logging.info(f"Successfully removed instances from server group {server_group_id}.")
-        except Exception as e:
-            logging.error(f"Failed to remove instances from server group {server_group_id}: {e}")
+    # for server_group_id in longvideoapi_config.server_group_id_list:
+    try:
+        utils.remove_servers_from_server_group(alb_client=alb_client, server_group_id_list=longvideoapi_config.server_group_id_list,
+                                               instance_ids=instance_ids, port=port)
+        logging.info(f"Successfully removed instances: {instance_ids} from server group {longvideoapi_config.server_group_id_list}.")
+    except Exception as e:
+        logging.error(f"Failed to remove instances: {instance_ids} from server group {longvideoapi_config.server_group_id_list}: {e}")
 
     logging.info(f"Remove from ALB finished, instances: {instance_ids}")
 

+ 68 - 50
longvideoapi/utils.py

@@ -351,58 +351,72 @@ def send_file_to_ecs(ecs_client, instance_id_list, target_dir, name, content):
 
 
 
-def add_servers_to_server_group(alb_client, server_group_id, instance_id, weight, port):
+def add_servers_to_server_group(alb_client, server_group_ids, instance_ids, weight, port):
     """
     添加服务器到ALB服务器组
     :param alb_client: ALB客户端连接
-    :param server_group_id: 服务器组ID
-    :param instance_id: 实例ID
+    :param server_group_ids: 服务器组ID
+    :param instance_ids: 实例ID
     :param weight: 权重
     :param port: 后端服务器使用的端口
     """
-    server = alb_models.AddServersToServerGroupRequestServers(
-        server_id=instance_id,
-        server_type='ecs',
-        weight=weight,
-        port=port
-    )
-    request = alb_models.AddServersToServerGroupRequest(
-        server_group_id=server_group_id,
-        servers=[server]
-    )
-    runtime = util_models.RuntimeOptions()
-    try:
-        alb_client.add_servers_to_server_group_with_options(request, runtime)
-        logging.info(f"Successfully added server {instance_id} to server group {server_group_id} with weight {weight}.")
-    except Exception as e:
-        logging.error(f"Failed to add server {instance_id} to server group {server_group_id}: {str(e)}")
+    servers = []
+    for i in range(len(instance_ids)):
+        server = alb_models.AddServersToServerGroupRequestServers(
+            server_id=instance_ids[i],
+            server_type='ecs',
+            weight=weight,
+            port=port
+        )
+        servers.append(server)
 
+    # server = alb_models.AddServersToServerGroupRequestServers(
+    #     server_id=instance_id,
+    #     server_type='ecs',
+    #     weight=weight,
+    #     port=port
+    # )
+    for server_group_id in server_group_ids:
+        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 added servers {servers} to server group {server_group_id} with weight {weight}.")
+        except Exception as e:
+            logging.error(f"Failed to add servers {servers} to server group {server_group_id}: {str(e)}")
 
 
-def remove_servers_from_server_group(alb_client, server_group_id, instance_ids, port):
+
+def remove_servers_from_server_group(alb_client, server_group_id_list, instance_ids, port):
     """
     从ALB服务器组中移除服务器
     :param alb_client: ALB客户端连接
-    :param server_group_id: 服务器组ID
-    :param instance_ids: 实例ID
+    :param server_group_id_list: 服务器组ID list
+    :param instance_ids: 实例ID list
     :param port: 后端服务器使用的端口
     """
+    servers = []
     for instance_id in instance_ids:
         server = alb_models.RemoveServersFromServerGroupRequestServers(
             port=port,
             server_id=instance_id,
             server_type='ecs'
         )
+        servers.append(server)
+    for server_group_id in server_group_id_list:
         request = alb_models.RemoveServersFromServerGroupRequest(
             server_group_id=server_group_id,
-            servers=[server]
+            servers=servers
         )
         runtime = util_models.RuntimeOptions()
         try:
             alb_client.remove_servers_from_server_group_with_options(request, runtime)
-            logging.info(f"Successfully removed server {instance_id} from server group {server_group_id}.")
+            logging.info(f"Successfully removed servers {servers} from server group {server_group_id}.")
         except Exception as e:
-            logging.error(f"Failed to remove server {instance_id} from server group {server_group_id}: {str(e)}")
+            logging.error(f"Failed to remove servers {servers} from server group {server_group_id}: {str(e)}")
 
 
 
@@ -451,32 +465,36 @@ async def list_server_group_servers_async(alb_client, server_group_id):
         return []
 
 
-def update_server_group_server_weight(alb_client, server_group_id, instance_id, weight, port):
+def update_server_group_server_weight(alb_client, server_group_id_list, instance_id_list, weight, port):
     """
     更指定服务器在服务器组中的权重
     :param alb_client: ALB客户端
-    :param server_group_id: 服务器组ID
-    :param instance_id: 实例ID
+    :param server_group_id_list: 服务器组ID list
+    :param instance_id_list: 实例ID list
     :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)
-        logging.info(f"Successfully updated server {instance_id} in group {server_group_id} to weight {weight}.")
-    except Exception as e:
-        logging.error(e)
-        sys.exit()
+    servers = []
+    for i in range(len(instance_id_list)):
+        server = alb_20200616_models.UpdateServerGroupServersAttributeRequestServers(
+            server_type='Ecs',
+            server_id=instance_id_list[i],
+            weight=weight,
+            port=port
+        )
+        servers.append(server)
+    for server_group_id in server_group_id_list:
+        request = alb_20200616_models.UpdateServerGroupServersAttributeRequest(
+            servers=servers,
+            server_group_id=server_group_id
+        )
+        runtime = util_models.RuntimeOptions()
+        try:
+            alb_client.update_server_group_servers_attribute_with_options(request, runtime)
+            logging.info(f"Successfully updated servers {servers} in group {server_group_id} to weight {weight}.")
+        except Exception as e:
+            logging.error(e)
+            sys.exit()
 
 def update_server_group_servers_attribute(alb_client, server_group_id_list, instance_id_list, weight_list, port):
     """
@@ -487,11 +505,11 @@ def update_server_group_servers_attribute(alb_client, server_group_id_list, inst
     :param weight_list: 权重修改列表 type-list [(weight, sleep_time), ...]
     :param port: 后端服务器使用的端口
     """
-    for server_group_id in server_group_id_list:
-        for instance_id in instance_id_list:
-            for weight, sleep_time in weight_list:
-                update_server_group_server_weight(alb_client, server_group_id, instance_id, weight, port)
-                time.sleep(sleep_time)
+    # for server_group_id in server_group_id_list:
+    #     for instance_id in instance_id_list:
+    for weight, sleep_time in weight_list:
+        update_server_group_server_weight(alb_client, server_group_id_list, instance_id_list, weight, port)
+    time.sleep(sleep_time)