应用场景:

目前DNS支持一个域名对应多个IP的解析,优势是可以起到负载均衡的作用,最大的问题是目标主机不可用时无法自动剔除,因此必须在自己的业务端写好监控与发现,怎么样来做这样的监控,以python为例,使用的是dnspython模块,通过dnspython模块解析出域名的A记录 IP地址,然后使用http 80端口探测该IP是否正常

1 安装

pip dnspython

2 代码展示:

#!/usr/bin/env python
#_*_coding:utf-8 _*_
#__author__:Davidlua import dns.resolver
import os
import httplib iplist = [] #定义域名IP列表变量
appdomain = "www.baidu.com" #定义目标域名 def get_iplist(domain=""):
"""域名解析函数,解析成功IP追加到iplist"""
try:
A = dns.resolver.query(domain,'A') #解析A记录
except Exception,e:
print "dns resolver error:" +str(e)
return
for i in A.response.answer: #使用responese.answer方法
for j in i.items:
iplist.append(j) #追加到iplist
return True def checkip(ip):
oip = ('%s') % ip #将解析的Ip转为字符串格式,以便跟:80端口合并
checkurl = oip+":80"
getcontent = ""
httplib.socket.setdefaulttimeout(5) #定义http链接超时时间
conn=httplib.HTTPConnection(checkurl) #创建http链接对象 try:
conn.request('GET',"/",headers={"Host":appdomain}) #发起url请求,添加host主机
r = conn.getresponse()
getcontent = r.read(15) #只获取url页面的15个字符,用来做可用性校验
finally:
if getcontent == "<!DOCTYPE html>": #监控url页面的类型要先查清楚,在做对比,这里<!DOCTYPE html>要大写,也可以对比http状态码
print oip+" [ok]"
else:
print oip+" [error]" #这里可以放置告警程序,比如发短信,邮件等 if __name__ == "__main__":
if get_iplist(appdomain) and len(iplist) > 0: #域名解析正确,且不少于1个IP
for ip in iplist:
checkip(ip)
else:
print "dns resolver error."

3 结果展示

C:\Python27\python.exe D:/python/github/miniwanmonitor/domen.py
www.a.shifen.com. [ok]
14.215.177.38 [ok]
14.215.177.39 [ok]
dns resolver error.

Process finished with exit code 0

python DNS域名轮询业务监控的更多相关文章

  1. python 定时器,轮询定时器

    首先想要实现的效果是:每隔1段时间,就去调用1个接口确认结果,直到接口返回的结果为true,停止调用 所以这里会用到python的定时器 先来了解最简单的定时器: python 定时器默认定时器只执行 ...

  2. linux实现DNS轮询实现负载平衡

    DNS 轮询机制会受到多方面的影响,如:A记录的TTL时间长短的影响:别的 DNS 服务器 Cache 的影响:windows 客户端也有一个DNS Cache.这些都会影响 DNS 轮询的效果.因此 ...

  3. 用fiddler测试ip轮询

    测试业务: 服务端根据域名配置了三台服务器ip,测试ip轮询的逻辑 测试方法: 使用fiddler配置hosts即可 1.1.1.1 第一台ip 1.1.1.1 第二台ip 1.1.1.1 第三台ip ...

  4. Nginx反向代理+DNS轮询+IIS7.5 千万PV 百万IP 双线 网站架构案例

    原文地址:http://www.jb51.net/article/31844.htm Nginx  ("engine x") 是一个高性能的 HTTP 和反向代理服务器,也是一个 ...

  5. Linux-LVS为何不能完全替代DNS轮询

    转自:链接 上一篇文章“一分钟了解负载均衡的一切”引起了不少同学的关注,评论中大家争论的比较多的一个技术点是接入层负载均衡技术,部分同学持这样的观点: 1)nginx前端加入lvs和keepalive ...

  6. 系统架构之负载均衡【F5\nginx\LVS\DNS轮询\】

    在做系统架构规划的时候,负载均衡,HA(高可用性集群,是保证业务连续性的有效解决方案,一般有两个或两个以上的节点,且分为活动节点及备用节点,当活动节点出现故障的时候,由备用节点接管)都是经常需要考虑的 ...

  7. 【58沈剑架构系列】lvs为何不能完全替代DNS轮询

    上一篇文章“一分钟了解负载均衡的一切”引起了不少同学的关注,评论中大家争论的比较多的一个技术点是接入层负载均衡技术,部分同学持这样的观点: 1)nginx前端加入lvs和keepalived可以替代“ ...

  8. 【转载】lvs为何不能完全替代DNS轮询

    上一篇文章"一分钟了解负载均衡的一切"引起了不少同学的关注,评论中大家争论的比较多的一个技术点是接入层负载均衡技术,部分同学持这样的观点: 1)nginx前端加入lvs和keepa ...

  9. lvs为何不能完全替代DNS轮询--转

    原文地址:http://mp.weixin.qq.com/s?__biz=MjM5ODYxMDA5OQ==&mid=2651959595&idx=1&sn=5f0633afd2 ...

随机推荐

  1. js中的typeof和instanceof和===

    typeof: 用于判断number/string/boolean/underfined类型/function 不能判断:null和object ,不能区分object和Array instanceo ...

  2. 在web工程中设置首页的页面

    有些时候删除了系统自带的index.jsp删除后会出现如下图错误 解决办法,新创建一个以你自己命名的jsp文件,然后在对该web工程的WEB-INF 目录下的web.xml进行添加加上下面的注释所带的 ...

  3. 计蒜客 数字解码 dp

    思路:dp(i)表示前i个字符的解码方案种数.进行状态转移时需要仔细思考,分情况讨论: 设第i个字符和第i-1个字符组成的数为x. 1.如果x根本不可能出现说明不是合理的编码,直接使dp(i)为0,例 ...

  4. Tcpdump安装使用

    本来想安装wireshark yum install wireshark  命令行下使用,包含抓包的基本功能 yum install wireshark-gnome  提供wireshark(UI)工 ...

  5. ubuntu配置

    首先就是Ubuntu的更新源问题,需要更改,否则更新不了. 其次就是Securecrt的远程登陆问题,windows主机和ubuntu虚拟机如果能通信,要求在同一网段上,而ubuntu是动态加载,需要 ...

  6. Linux(二)命令

    Linux命令一.命令基本格式 命令行头部显示字符意义 [root@localhost ~] # root 用户名 localhost 主机名 ~ 当前目录 ~表示home目录 # 用户权限,#表示超 ...

  7. FusionCharts封装-Category

    Categories.java: /** * @Title:Categories.java * @Package:com.fusionchart.model * @Description:Fusion ...

  8. 安装Apache提示APR not found的解决办法

    不知道为什么在安装apache2.2.22版本的时候没有任何问题,直接使用命令 ./configure --prefix=/home/www/www_test/software/apache-2.2. ...

  9. 【linux】php安装 出现Sorry, I cannot run apxs. ***错误解决方法

    首先, 通过错误提示, 我们得知"I cannot run apxs". 我一直以为是apxs安装有问题, 但找了很久仍未得到合理的解释和解决方法. 于是我直接运行"/u ...

  10. HighCharts中的Ajax请求的2D折线图

    HighCharts中的Ajax请求的2D折线图 设计源码: <!DOCTYPE html> <html> <head> <meta charset=&quo ...