实践:DNS域名轮循业务监控

大部分的DNS解析都是一个域名对应一个IP地址,但是通过DNS轮循技术可以做到一个域名对应多个IP,从而实现最简单且高效的负载平衡,不过此方案最大的弊端是目标主机不可用时无法被自动剔除.

[root@bogon dns]# cat SJ.py

!/usr/bin/python

import dns.resolver
import os
import httplib

iplist=[]

appdomain=raw_input("please input Monitoring of the domain name:")

def get_iplist(domain=""):
try:
A = dns.resolver.query(domain, 'A')
except Exception,e:
print "dns resolver error:"+str(e)
return
for i in A.response.answer:
for j in i.items:
iplist.append(j.address)
return True

def checkip(ip):
checkurl=ip+":80"
getcontent=""
httplib.socket.setdefaulttimeout(5)
conn=httplib.HTTPConnection(checkurl)

try:  
    conn.request("GET", "/",headers = {"Host": appdomain})    
                                                              
    r=conn.getresponse()  
    getcontent =r.read(15)  
finally:  
    if getcontent=="<!doctype html>":    
                                       
        print ip+" [OK]"  
    else:  
        print ip+" [Error]"    

if name=="main":
if get_iplist(appdomain) and len(iplist)>0:
for ip in iplist:
checkip(ip)
else:
print "dns resolver error."

测试:

输入你自己的域名,随便输入一个会报错

[root@bogon dns]# python SJ.py
please input Monitoring of the domain name:www.51auto.com
203.80.144.183 [Error]
[root@bogon dns]#

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,923评论 18 139
  • NAME dnsmasq - A lightweight DHCP and caching DNS server....
    ximitc阅读 2,929评论 0 0
  • DNS(Domain Name System,域名系统),因特网上作为域名和IP地址相互映射的一个分布式数据库,能...
    一直在努力hard阅读 4,691评论 3 19
  • 1. 概述 在网络环境中一般用户只需要在浏览器中输入url如www.sunny.com就可以到对应服务器获取相应的...
    ghbsunny阅读 2,967评论 0 7
  • 14.1 引言 域名系统(DNS)是一种用于TCP/IP应用程序的分布式数据库,它提供主机名字和IP地址之间的转换...
    张芳涛阅读 1,924评论 0 8