heyudev 2 lat temu
rodzic
commit
7aa580edc3

+ 3 - 2
longvideoapi/server/ess-instance-vlogapi.py

@@ -43,9 +43,9 @@ key_pair_name = "stuuudy"
 #slb_id = "lb-bp1r9duz4k7z0riz9zs3n"
 #slb_id = "lb-bp1r9duz4k7z0riz9zs3n"
 #vlogapi
 #vlogapi
 slb_id_2 = "lb-bp1qk9mkvjtundlzz7owm"
 slb_id_2 = "lb-bp1qk9mkvjtundlzz7owm"
-# slb_id_3 = "lb-bp1akia6vlguiwg4znaq8"
-slb_id_3 = "lb-bp1y63rnrb2e64whryghz"
+slb_id_3 = "lb-bp1akia6vlguiwg4znaq8"
 slb_id_4 = "lb-bp1pj2v06ladvgftgxcp0"
 slb_id_4 = "lb-bp1pj2v06ladvgftgxcp0"
+slb_id_5 = "lb-bp1y63rnrb2e64whryghz"
 
 
 client = AcsClient (AccessKey, AccessSecret, RegionId)
 client = AcsClient (AccessKey, AccessSecret, RegionId)
 
 
@@ -83,6 +83,7 @@ def healthCheck(instance_id):
   addBackendServers(slb_id_2,instance_id)
   addBackendServers(slb_id_2,instance_id)
   addBackendServers(slb_id_3,instance_id)
   addBackendServers(slb_id_3,instance_id)
   addBackendServers(slb_id_4,instance_id)
   addBackendServers(slb_id_4,instance_id)
+  addBackendServers(slb_id_5,instance_id)
 
 
 
 
 
 

+ 139 - 0
longvideoapi/server/longvideoapi_restart.py

@@ -0,0 +1,139 @@
+#!/u:sr/bin/env python
+#coding=utf-8
+#edite  panwang
+import docker
+import sys
+import  requests
+import json
+import queue
+import threading
+from aliyunsdkcore import client
+from aliyunsdkcore.request import CommonRequest
+from aliyunsdkecs.request.v20140526.DescribeInstancesRequest import DescribeInstancesRequest
+from aliyunsdkslb.request.v20140515.DescribeLoadBalancerAttributeRequest import DescribeLoadBalancerAttributeRequest
+from aliyunsdkecs.request.v20140526.DescribeNetworkInterfacesRequest import DescribeNetworkInterfacesRequest
+
+import time
+
+
+AccessKey = 'LTAIuPbTPL3LDDKN'
+AccessSecret = 'ORcNedKwWuwVtcq4IRFtUDZgS0b1le'
+RegionId = 'cn-hangzhou'
+clt = client.AcsClient (AccessKey, AccessSecret, RegionId)
+
+#id_2 = "lb-bp1qk9mkvjtundlzz7owm"
+#id_3 = "lb-bp1by407qxe4y7bkvye27"
+#id_4 = "lb-bp1akia6vlguiwg4znaq8"
+
+
+# slbIds = ["lb-bp1qk9mkvjtundlzz7owm", "lb-bp1by407qxe4y7bkvye27", "lb-bp1akia6vlguiwg4znaq8"]
+slbIds = ["lb-bp1qk9mkvjtundlzz7owm", "lb-bp1by407qxe4y7bkvye27", "lb-bp1akia6vlguiwg4znaq8", "lb-bp1y63rnrb2e64whryghz"]
+#健康检查
+def  checkHealth(ipadd):
+    while  True:
+        health_url = 'http://%s:8080/longvideoapi/test' %(ipadd)
+        header = {"Content-Type":"application/json"}
+        try:
+            health_code = requests.get(health_url).status_code
+        except  Exception  as  e:
+           continue
+        if  health_code == 200:
+            return  False
+
+#服务更新完之后逐步修改服务器的权重值,直接加载100会出现502。权重值每次增加10,每2s修改一次
+def setInstanceWeightProcess(instance_id):
+    for  i in range(1,6):
+        weight = i*20
+        for slbId in slbIds:
+            setWeight(slbId, instance_id, weight)
+        time.sleep(5)
+
+#设置权重 instance_id :服务器id,weight:权重值
+def setWeight(slb_id,instance_id ,weight):
+
+    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 (request)
+    except Exception as e:
+        raise e
+        sys.exit()#容器启动失败立即退出更新
+#获取slb下所有服务器信息
+def  getInstanceId(slb_id):
+    request = DescribeLoadBalancerAttributeRequest()
+    request.set_accept_format('json')
+    request.set_LoadBalancerId(slb_id)
+    try:
+        response = clt.do_action_with_exception(request)
+    except Exception as e:
+        raise e
+        sys.exit()#容器启动失败立即退出更新
+    return json.loads (response)
+
+#获取实例IP地址
+def  getIpadd(instance_id):
+    request = DescribeNetworkInterfacesRequest()
+    request.set_accept_format('json')
+    request.set_InstanceId(instance_id)
+    try:
+        response = clt.do_action_with_exception(request)
+        request_content = json.loads(response)
+        IpAddr  = request_content['NetworkInterfaceSets']['NetworkInterfaceSet'][0]['PrivateIpAddress']
+    except Exception as e:
+        raise e
+        sys.exit()#容器启动失败立即退出更新
+    return  IpAddr
+
+#更新服务
+def  restart(instance_id):
+    time.sleep(10)
+    global success_count
+    apps = 'vlogapi'
+    ipadd = getIpadd(instance_id)
+    print("服务器信息:" + "%s/%s" %(instance_id, ipadd))
+    client = docker.DockerClient(base_url='tcp://%s:2375'  %(ipadd),timeout=60 )
+
+    try:
+            #重启
+        id = client.containers.get(apps)
+        id.restart()
+        checkHealth(ipadd)
+        print("%s :权重修改中......" %(ipadd))
+
+        setInstanceWeightProcess(instance_id)
+        success_count = success_count + 1
+        print("重启进度" + "%s/%s"  %(success_count, total))
+    except Exception as e:
+        raise e
+        sys.exit()#容器启动失败立即退出更新
+
+if __name__ == '__main__':
+
+
+    #更新完成计数
+    success_count = 0
+    threads = []
+    thread_num = 1
+    res = getInstanceId (slbIds[0])
+    #slb下服务器总数
+    total = len(res["BackendServers"]["BackendServer"])
+
+    if res["BackendServers"]["BackendServer"]:
+        for i in range ((len (res["BackendServers"]["BackendServer"]))):
+            instance_id = res["BackendServers"]["BackendServer"][i]["ServerId"]
+
+            for slbId in slbIds:
+                setWeight(slbId, instance_id, 0)
+            restart(instance_id)
+
+
+
+

+ 5 - 2
longvideoapi/server/longvideoapi_update.py

@@ -26,9 +26,10 @@ clt = client.AcsClient (AccessKey, AccessSecret, RegionId)
 #id_2 = 'lb-bp1lktzqe3mksoj8whjdf'
 #id_2 = 'lb-bp1lktzqe3mksoj8whjdf'
 id_2 = 'lb-bp1qk9mkvjtundlzz7owm'
 id_2 = 'lb-bp1qk9mkvjtundlzz7owm'
 # id_3 = 'lb-bp1by407qxe4y7bkvye27'
 # id_3 = 'lb-bp1by407qxe4y7bkvye27'
-# id_4 = 'lb-bp1akia6vlguiwg4znaq8'
-id_4 = 'lb-bp1y63rnrb2e64whryghz'
+id_4 = 'lb-bp1akia6vlguiwg4znaq8'
 id_5 = 'lb-bp1pj2v06ladvgftgxcp0'
 id_5 = 'lb-bp1pj2v06ladvgftgxcp0'
+id_6 = 'lb-bp1y63rnrb2e64whryghz'
+
 class MyThread (threading.Thread):
 class MyThread (threading.Thread):
     def __init__(self, func):
     def __init__(self, func):
         threading.Thread.__init__ (self)
         threading.Thread.__init__ (self)
@@ -58,6 +59,7 @@ def setInstanceWeightProcess(instance_id):
         # setWeight(id_3,instance_id,weight)
         # setWeight(id_3,instance_id,weight)
         setWeight(id_4,instance_id,weight)
         setWeight(id_4,instance_id,weight)
         setWeight(id_5,instance_id,weight)
         setWeight(id_5,instance_id,weight)
+        setWeight(id_6,instance_id,weight)
         time.sleep(5)
         time.sleep(5)
 
 
 #设置权重 instance_id :服务器id,weight:权重值
 #设置权重 instance_id :服务器id,weight:权重值
@@ -169,6 +171,7 @@ if __name__ == '__main__':
             # setWeight (id_3,instance_id, 0)
             # setWeight (id_3,instance_id, 0)
             setWeight (id_4,instance_id, 0)
             setWeight (id_4,instance_id, 0)
             setWeight (id_5,instance_id, 0)
             setWeight (id_5,instance_id, 0)
+            setWeight (id_6,instance_id, 0)
 
 
             q2.put(instance_id)
             q2.put(instance_id)
         for i in range (thread_num ):
         for i in range (thread_num ):