123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138 |
- #!/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("服务器未挂载,请尽快查看具体情况")
|