#!/usr/bin/python # coding: utf-8 import sys from aliyunsdkcore import client from aliyunsdkcore.client import AcsClient from aliyunsdkcore.request import CommonRequest from aliyunsdkecs.request.v20140526.DescribeInstancesRequest import DescribeInstancesRequest from aliyunsdkslb.request.v20140515.DescribeLoadBalancerAttributeRequest import DescribeLoadBalancerAttributeRequest import json import socket import time AccessKey = 'LTAIuPbTPL3LDDKN' AccessSecret = 'ORcNedKwWuwVtcq4IRFtUDZgS0b1le' RegionId = 'cn-hangzhou' # 压力测试环境 SlbId #SlbId = 'lb-bp12usgpoh04qsa6pw42r' #longvideoapi-online SlbId SlbId = 'lb-bp1d6hp2ctotgt870miav' clt = client.AcsClient (AccessKey, AccessSecret, RegionId) Host = socket.gethostname () exit = -1 def setServerWeight(BackendServers): 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', SlbId) # print BackendServers response = clt.do_action (request) return json.loads (response) def get_host_ip(): """ 查询本机ip地址 :return: ip """ try: s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) s.connect(('8.8.8.8', 80)) ip = s.getsockname()[0] #ip = "192.168.201.80" finally: s.close() return ip def query_slb(instance_id): global exit request = DescribeLoadBalancerAttributeRequest () request.set_accept_format ('json') request.set_LoadBalancerId (SlbId) times = 0 while times < 300: try: response = clt.do_action_with_exception (request) res_result = json.loads(response) if res_result["BackendServers"]["BackendServer"]: for i in range(len(res_result["BackendServers"]["BackendServer"])): slb_instance_id = res_result["BackendServers"]["BackendServer"][i]["ServerId"] if instance_id == slb_instance_id : print("服务器已经挂载") exit = 1 if exit == 1: break time.sleep(2) times += 1 except Exception as e: print(e) print("负载均衡信息获取失败") return res_result if __name__ == "__main__": ip = get_host_ip() ##获取instarnceid ip_add = [] ip_add.append(ip) request = DescribeInstancesRequest () request.set_PrivateIpAddresses (ip_add) response = clt.do_action_with_exception (request) #print(response) result = json.loads(response) instance_id = result["Instances"]["Instance"][0]["InstanceId"] print(instance_id) back_servers = [{"ServerId": '', "Weight": ''}] back_servers[0]["ServerId"] = instance_id query_slb (instance_id) print(exit) if exit == 1 : weight = 20 while weight <= 100: back_servers[0]["Weight"] = weight print(back_servers) try: res_slb = setServerWeight ( back_servers) request = DescribeLoadBalancerAttributeRequest () request.set_accept_format ('json') request.set_LoadBalancerId (SlbId) response = clt.do_action_with_exception (request) res_result = json.loads (response) if res_result["BackendServers"]["BackendServer"]: for i in range (len (res_result["BackendServers"]["BackendServer"])): slb_instance_id = res_result["BackendServers"]["BackendServer"][i]["ServerId"] if instance_id == slb_instance_id: weight_now = res_result["BackendServers"]["BackendServer"][i]["Weight"] print (weight_now) if weight == weight_now : print("权重修改成功") else: print("权重修改失败,重试.......") res_slb = setServerWeight (back_servers) print(res_slb["BackendServers"]["BackendServer"]) except: print("负载均衡权重修改失败") weight += 20 time.sleep(10) else: print("服务器未挂载,请尽快查看具体情况")