• DNS域名轮询业务监控 摩天居士


      大部分的DNS解析都是一个域名对应一个IP地址,但是通过DNS轮询技术可以做到一个域名对应多个IP,从而实现最简单高效的负载均衡,不过此方案最大的弊端是目标主机不可用时无法被自动剔除,因此做好业务主机的服务可用性监控至关重要。本示例通过分析当前域名的解析IP,在结合服务端口探测来实现自动监控,在域名解析中添加、删除IP时,无需对监控脚本进行修改,实现架构如下所示:

     步骤:

      1、实现域名解析,获取域名所有的A记录解析IP列表;

      2、对IP列表进行HTTP级别的探测

     1 #!/usr/bin/evn python
     2 # --*-- coding: utf-8 --*--
     3 # Auther : Liu WeiDong
     4 
     5 import dns.resolver
     6 import http.client
     7 
     8 iplist = []    #定义域名IP列表变量
     9 appdomain = "www.baidu.com"     #定义业务域名
    10 
    11 def get_iplist(domain):         #域名解析函数,解析成功IP将追加到iplist中
    12     try:
    13         A = dns.resolver.resolve(appdomain,'A')   #解析A记录类型
    14     except Exception as e:
    15         print('dos resolve error:'+str(e))
    16     for i in A:
    17         iplist.append(i)     # 追加到iplist列表中
    18     return True
    19 
    20 def checkip(ip):
    21     checkurl = str(ip)
    22     getcontent = "200"
    23     conn = http.client.HTTPConnection(checkurl, 80) #初始化一个http链接
    24     try:
    25         conn.request("GET","/")    #指定request请求的方法和请求的链接地址
    26         res = conn.getresponse()   #得到返回的http response
    27     finally:
    28         if getcontent == res.status:     #获取请求的状态码
    29             print(str(ip) + " " + res.reason)
    30         else:
    31             print(str(ip) + " " + str(res.reason))
    32 
    33 if __name__ == "__main__":
    34     if get_iplist(appdomain) and len(iplist) > 0:
    35         for ip in iplist:
    36             checkip(ip)
    37     else:
    38         print("dns resolver error....")
  • 相关阅读:
    java nb
    hdu5293(2015多校1)--Tree chain problem(树状dp)
    点击交互的四种处理
    Java实现二维码技术探讨。
    折腾开源WRT的AC无线路由之路-1
    C语言及程序设计[套餐]课程主页
    09_Android中ContentProvider和Sqllite混合操作,一个项目调用另外一个项目的ContentProvider
    C语言打印字母金字塔(第一行是A 第二行是ABA ……)
    成员函数的const究竟修饰的是谁
    linux pdb调试总结
  • 原文地址:https://www.cnblogs.com/weidongliu/p/16434073.html
Copyright © 2020-2023  润新知