一 说明
大部分的DNS解析都是一个域名对应一个IP地址,但是通过DNS 轮循技术可以做到一个域名对应多个IP,从而实现最简单且高效的负载 平衡,不过此方案最大的弊端是目标主机不可用时无法被自动剔除,因此做好业务主机的服务可用监控至关重要。本案例通过分析当前域名的解析IP,再结合服务端口探测来实现自动监控,在域名解析中添加、删除IP时,无须对监控脚本进行更改。
二 架构图
三 实现
1 步骤
第一步:实现域名的解析,获取域名所有的A记录解析IP列表。
第二步:对IP列表进行HTTP级别的探测。
2 代码
import dns.resolver
import os
import httplib
# 定义域名IP列表变量
iplist=[]
appdomain="www.imooc.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.ans