Browse Source

add longvideoapi j区 创建ECS并挂载到指定的CLB

supeng 7 months ago
parent
commit
3bd12def8d
1 changed files with 29 additions and 6 deletions
  1. 29 6
      longvideo_j_create_ecs_instance.py

+ 29 - 6
longvideo_j_create_ecs_instance.py

@@ -48,7 +48,7 @@ def longvideo_health_check(client, instance_id, max_wait_time=None):
             time.sleep(10)
 
 
-async def ess_instance(create_client, slb_client, ess_count, max_workers):
+async def ess_instance(create_client, slb_client, ess_count, max_workers, slb_id_list):
     """
     扩容机器并运行新服务
     :param create_client: 购买机器客户端连接
@@ -85,9 +85,30 @@ async def ess_instance(create_client, slb_client, ess_count, max_workers):
     ]
     await asyncio.wait(tasks)
     logging.info(f"health instances count: {len(health_instances)}, {health_instances}")
-    logging.info(f"ess count: {ess_count}, "
-                 f"create count: {len(ess_instance_ids)}, "
-                 f"health count: {len(health_instances)}")
+    # 5. 挂载流量
+    if len(health_instances) > 0:
+        # 所有机器探活成功
+        time.sleep(20)
+        utils.add_backend_servers_with_slbs(client=slb_client,
+                                            slb_id_list=slb_id_list,
+                                            instances=health_instances)
+        # add_weight_list = [(10, 5), (20, 5), (40, 5), (60, 5), (80, 5), (100, 5)]
+        # health_instance_ids = [instance_id for instance_id, _ in health_instances]
+        # utils.set_instance_weight_process_with_slbs(client=slb_client,
+        #                                             slb_id_list=longvideo_config.slb_id_list,
+        #                                             instance_id_list=health_instance_ids,
+        #                                             weight_list=add_weight_list)
+        # logging.info(f"ess count: {ess_count}, "
+        #              f"create count: {len(ess_instance_ids)}, "
+        #              f"finished count: {len(health_instance_ids)}")
+        logging.info(f"ess count: {ess_count}, "
+                     f"create count: {len(ess_instance_ids)}, "
+                     f"health count: {len(health_instances)}")
+    else:
+        logging.info(f"ess count: {ess_count}, "
+                     f"create count: {len(ess_instance_ids)}, "
+                     f"health count: {len(health_instances)}")
+        sys.exit()
 
 
 def main():
@@ -100,11 +121,13 @@ def main():
                                              region_id=longvideo_config.create_client_params['region_id'])
         # 获取批量创建ECS实例的数量
         ess_instance_count = int(sys.argv[1])
+        slb_instance_ids = sys.argv[2]
+        slb_id_list = slb_instance_ids.split(",")
         # 扩容机器并启动服务
         logging.info(f"ess instances start ...")
-        logging.info(f"ess instance count: {ess_instance_count}")
+        logging.info(f"ess instance count: {ess_instance_count}, slb_id_list:{slb_id_list}")
         asyncio.run(ess_instance(create_client=create_client, slb_client=slb_client,
-                                 ess_count=ess_instance_count, max_workers=2))
+                                 ess_count=ess_instance_count, max_workers=2, slb_id_list=slb_id_list))
         logging.info(f"ess instances end!")
     except Exception as e:
         logging.error(e)