dns_weight.py 2.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. # -*- coding: utf-8 -*-
  2. import os
  3. import sys
  4. import json
  5. from typing import List
  6. from http.client import responses
  7. from alibabacloud_alidns20150109.client import Client as Alidns20150109Client
  8. from alibabacloud_tea_openapi import models as open_api_models
  9. from alibabacloud_alidns20150109 import models as alidns_20150109_models
  10. from alibabacloud_tea_util import models as util_models
  11. from alibabacloud_tea_util.client import Client as UtilClient
  12. from alibabacloud_cms20190101.client import Client as Cms20190101Client
  13. from alibabacloud_tea_openapi import models as open_api_models
  14. from alibabacloud_cms20190101 import models as cms_20190101_models
  15. from alibabacloud_tea_util import models as util_models
  16. from alibabacloud_tea_util.client import Client as UtilClient
  17. import conf
  18. import utils
  19. def main():
  20. try:
  21. # 云监控客户端
  22. metrics_client = utils.client(access_key_id=conf.metrics_client['access_key_secret'],
  23. access_key_secret=conf.metrics_client['access_key_secret'],
  24. endpoint=conf.metrics_client['endpoint']
  25. )
  26. # DNS客户端
  27. dns_client = utils.client(access_key_id=conf.dns_client['access_key_secret'],
  28. access_key_secret=conf.dns_client['access_key_secret'],
  29. endpoint=conf.dns_client['endpoint']
  30. )
  31. # 获取共享带宽流量 metric_name 入网流量
  32. bandwidth = utils.DescribeMetricList(metrics_client=metrics_client,
  33. namespace=conf.namespace,
  34. metric_name=conf.metric_name,
  35. period=conf.period,
  36. dimensions=conf.dimensions,
  37. start_time=conf.start_time,
  38. end_time=conf.end_time)
  39. # 获取所有dns解析RecordId
  40. # {'Value': '', 'RecordId': ''}
  41. record_list = utils.DescribeDomainRecords(dns_client=dns_client,
  42. lang=conf.lang,
  43. domain_name=conf.domain_name)
  44. # 获取backup_alb RecordId
  45. matched_record_ids = [
  46. record['RecordId']
  47. for record in record_list
  48. if record['Value'] in conf.backup_alb_ip_list
  49. ]
  50. # 计算权重比
  51. backup_weight = utils.update_dns_weights(bandwidth)
  52. for record in matched_record_ids:
  53. # 修改backup权重
  54. utils.update_dnsslbweight(dns_client=dns_client,
  55. lang=conf.lang,
  56. record=record,
  57. backup_weight=backup_weight)
  58. except Exception as e:
  59. exit(e)
  60. if __name__ == '__main__':
  61. main()