跨region的智能DNS解决方案(二)-运维

简介: 项目背景:考虑到高可靠等诸多问题,在公有云或私有云上可能有两地三中心等多种架构模式。需求在不同地区的实例节点如何通过相同域名解析到本地的A记录或者云产品的CNAME,并实现高可靠。本文通过named服务实现上述功能。

对named进行CRUD操作

上文介绍了如何完整的安装named服务,如果有安装不明白的地方请参考:跨region的智能DNS解决方案(一)
本章将对之前部署完毕的named服务进行域名记录的CRUD操作。

通过shell脚本来进行CRUD

通过bash命令或者shell脚本来进行CRUD操作的核心命令为nsupdate
构造命令如下:

nsupdate [ -d ] [ [ -y keyname:secret ] [ -k keyfile ] ] [ -v ]
[ filename ]
-d 调试模式.
-k 从keyfile文件中读取密钥信息.
-y keyname是密钥的名称,secret是以base64编码的密钥.
-v 使用TCP协议进行nsupdate.默认是使用UDP协议.
依照上文所部署的情况,key文件所在路径为/etc/named/keys/keys
执行命令为:
cat >> hangzhou.sre.so-zhangjiakou << EOF
server 10.1.0.100
update add hangzhou.sre.so. 1 A 10.3.3.3
send
quit
EOF
cat >> hangzhou.sre.so-hangzhou << EOF
server 10.1.0.100
update add hangzhou.sre.so. 1 A 10.4.3.3
send
quit
EOF
#指定张家口的key将域名添加到张家口的view上
nsupdate -k /etc/named/keys/keys/Kkey_sreso_zhangjiakou-cloud.+157+34623.key hangzhou.sre.so-zhangjiakou
#指定杭州的key将域名添加到杭州的view上
nsupdate -k /etc/named/keys/keys/Kkey_sreso_hangzhou-cloud.+157+57601.key hangzhou.sre.so-hangzhou

通过python来进行CRUD

dnspython是Python实现的一个DNS工具包,它支持几乎所有的记录类型,可以用于查询、传输并动态更新ZONE信息,同时支持TSIG(事务签名)验证消息和EDNS0(扩展DNS)。在系统管理方面,我们可以利用其查询功能来实现DNS服务监控以及解析结果的校验,可以代替nslookup及dig等工具,轻松做到与现有平台的整合。

pip install dnspython 

具体使用请参考github

# 添加transfer.key内容 key名称key内容


import sys
import dns.update
import dns.query
import dns.resolver
import dns.tsigkeyring

keyring = dns.tsigkeyring.from_text({
    'key_sreso_hangzhou-cloud': 'mu+qLSESeR4AHbFdEiUs73xx1ODWeb9WzhfcNPSO0r/8OqTTNrnahHpe/4peySKMbhnJCnqsZxAzPjiVOPNHlg=='
#    'key_sreso_default': 'rkUWa/RQB+Rnil5kWvP/vBMEmEETx3NPmuuxSWbWLHsCp+fI93HqMdpqIm/zSKcvNsts1NYsnzulNW7nqyIVtg=='
#     'key_sreso_zhangjiakou-cloud': 'mspmOPCmYFQuDWJYoauzIT8rPXCP+RTUHW0sDwM++IzLt/syidjSrQ5SjsOqeO+LJNGKhR3g+hO7FDzN04b2gQ=='
    })

# 实例化一个DNS对象
update = dns.update.Update('sre.so.', keyring=keyring)
update.replace('aliyun', 1, 'A', sys.argv[1])

response = dns.query.tcp(update, '10.1.0.100', timeout=10)

源码解析:
replace方法传参第一个必须是name(也就是域名)后面依次可以为
记录值
ttl+记录值
ttl+记录类型+记录值

如何检测DNS

通过dig命令加指定key的方式可以返回对应的记录结果。
也可以通过dig axfr 加指定key的方式可以返回根域所有记录结果。

dig命令详解

dig(选项)(参数)

选项

@<服务器地址>:指定进行域名解析的域名服务器;
-b:当主机具有多个IP地址,指定使用本机的哪个IP地址向域名服务器发送域名查询请求;
-f<文件名称>:指定dig以批处理的方式运行,指定的文件中保存着需要批处理查询的DNS任务信息;
-P:指定域名服务器所使用端口号;
-t<类型>:指定要查询的DNS数据类型;
-x:执行逆向域名查询;
-4:使用IPv4;
-6:使用IPv6;
-h:显示指令帮助信息。

参数

1 主机:指定要查询域名主机;
2 查询类型:指定DNS查询的类型;
3 查询类:指定查询DNS的class;
4 查询选项:指定查询选项。

dig -k /etc/named/keys/keys/Kkey_sreso_hangzhou-cloud.+157+57601.key mvp.sre.so @10.1.0.100
; <<>> DiG 9.9.4-RedHat-9.9.4-61.el7 <<>> -k /etc/named/keys/keys/Kkey_sreso_hangzhou-cloud.+157+57601.key mvp.sre.so @10.1.0.100
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 54843
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 2

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;mvp.sre.so.            IN    A

;; ANSWER SECTION:
luolmvpi.sre.so.        1    IN    A    1.1.3.41

;; TSIG PSEUDOSECTION:
key_sreso_hangzhou-cloud. 0    ANY    TSIG    hmac-md5.sig-alg.reg.int. 1568890339 300 16 p9ctS8CcZcbzwUA+q1UOoA== 54843 NOERROR 0

;; Query time: 0 msec
;; SERVER: 10.1.0.100#53(10.1.0.100)
;; WHEN: Thu Sep 19 18:52:19 CST 2019
;; MSG SIZE  rcvd: 151

dig axfr -k /etc/named/keys/keys/Kkey_sreso_hangzhou-cloud.+157+57601.key sre.so @10.1.0.100
;; global options: +cmd
sre.so.            600    IN    SOA    sre.so. root.sre.so. 2019012811 28800 14400 3600000 86400
sre.so.            600    IN    NS    ns1.sre.so.
mvp.sre.so.        1    IN    A    1.1.3.41
ns1.sre.so.        600    IN    A    10.1.0.100
mvp.sre.so.sre.so.    1    IN    A    1.1.3.41
pytho11n.sre.so.sre.so.    300    IN    A    1.1.1.1
pytho11nasfa.sre.so.sre.so. 1    IN    A    1.1.1.1
python.sre.so.sre.so.    300    IN    A    1.1.1.1
wangmvp.sre.so.sre.so. 1    IN    A    1.1.1.4
sre.so.            600    IN    SOA    sre.so. root.sre.so. 2019012811 28800 14400 3600000 86400
key_sreso_hangzhou-cloud. 0    ANY    TSIG    hmac-md5.sig-alg.reg.int. 1568891019 300 16 +gfZ2D9TorSB+2m4mQ3DaQ== 7853 NOERROR 0
;; Query time: 0 msec
;; SERVER: 10.1.0.100#53(10.1.0.100)
;; WHEN: Thu Sep 19 19:03:39 CST 2019
;; XFR size: 10 records (messages 1, bytes 394)

Q&A

  • 日志返回deny 请检查key的权限是否为600
  • dig axfr 不能正常返回,请确认所在服务器是否在view的acl范围内
相关文章
|
2月前
|
运维 监控 关系型数据库
AI 时代的 MySQL 数据库运维解决方案
本文探讨了大模型与MySQL数据库运维结合所带来的变革,介绍了构建结构化运维知识库、选择合适的大模型、设计Prompt调用策略、开发MCP Server以及建立监控优化闭环等关键步骤。通过将自然语言处理能力与数据库运维相结合,实现了故障智能诊断、SQL自动优化等功能,显著提升了MySQL运维效率和准确性。
300 18
|
2月前
|
运维 算法 机器人
阿里云AnalyticDB具身智能方案:破解机器人仿真数据、算力与运维之困
本文将介绍阿里云瑶池旗下的云原生数据仓库AnalyticDB MySQL推出的全托管云上仿真解决方案,方案采用云原生架构,为开发者提供从开发环境、仿真计算到数据管理的全链路支持。
|
2月前
|
SQL 运维 自然语言处理
Dataphin智能化重磅升级!编码难题一扫光,开发运维更高效!
Dataphin重磅推出三大核心智能化能力:智能代码助手提升SQL开发效率;智能运维助手实现移动化任务管理;智能分析通过自然语言生成SQL,助力数据价值释放。未来将持续开放智能ETL、安全助手等能力,助力企业构建高效、稳定的数据资产体系。
300 0
|
23天前
|
人工智能 运维 监控
智能运维与数据治理:基于 Apache Doris 的 Data Agent 解决方案
本文基于 Apache Doris 数据运维治理 Agent 展开讨论,如何让 AI 成为 Doris 数据运维工程师和数据治理专家的智能助手,并在某些场景下实现对人工操作的全面替代。这种变革不仅仅是技术层面的进步,更是数据运维治理思维方式的根本性转变:从“被动响应”到“主动预防”,从“人工判断”到“智能决策”,从“孤立处理”到“协同治理”。
154 11
智能运维与数据治理:基于 Apache Doris 的 Data Agent 解决方案
|
29天前
|
运维 Dubbo Cloud Native
Dubbo 云原生重构出击:更快部署、更强控制台、更智能运维
Apache Dubbo 最新升级支持云原生,提供一键部署微服务集群与全新可视化控制台,提升全生命周期管理体验,助力企业高效构建云原生应用。
196 25
|
1月前
|
机器学习/深度学习 人工智能 运维
DevOps 不香了?可能是你还没用上“智能运维”!
DevOps 不香了?可能是你还没用上“智能运维”!
88 0
|
2月前
|
运维 Prometheus 监控
“服务器又宕了?”别急,智能运维教你如何未卜先知!
“服务器又宕了?”别急,智能运维教你如何未卜先知!
100 0
|
2月前
|
机器学习/深度学习 运维 监控
智能运维Agent:自动化运维的新范式
在数字化转型浪潮中,智能运维Agent正重塑运维模式。它融合人工智能与自动化技术,实现从被动响应到主动预防的转变。本文详解其四大核心功能:系统监控、故障诊断、容量规划与安全响应,探讨如何构建高效、可靠的自动化运维体系,助力企业实现7×24小时无人值守运维,推动运维效率与智能化水平全面提升。
414 0
|
4月前
|
数据采集 机器学习/深度学习 人工智能
运维人的“福音”?AI 驱动的自动化网络监控到底香不香!
运维人的“福音”?AI 驱动的自动化网络监控到底香不香!
314 0

相关产品

  • 云解析DNS
  • 推荐镜像

    更多
  • DNS