在上一节部署完成后,dig是使用的默认DNS进行解析的,这里详细说明下具体的部署:
首先需要达到的目标是,当解析consul名字时,通过consul提供的DNS进行解析,其它域名都通过DNS服务器提供解析。这样在使用consul时就可以当作一个域名正常使用,不需要手动指向哪个DNS服务进行解析。
举例:
解析可用的mysql服务列表:dig mysql.service.test.com 可直接 使用mysql -h mysql.service.test.com -uxxx -pxxx -P3306
解析其它非consul 域名:dig www.baidu.com, 或者 ping dba.inner-net.com
如上两种方式都可以正常解析。
实现方案:使用dnsmasq,进行域名解析路由
DNSmasq:
DNSmasq是一个小巧且方便地用于配置DNS和DHCP的工具,适用于小型网络,它提供了DNS功能和可选择的DHCP功能。它服务那些只在本地适用的域名,这些域名是不会在全球的DNS服务器中出现的。DHCP服务器和DNS服务器结合,并且允许DHCP分配的地址能在DNS中正常解析,而这些DHCP分配的地址和相关命令可以配置到每台主机中,也可以配置到一台核心设备中(比如路由器),DNSmasq支持静态和动态两种DHCP配置方式。
DNSmasq的解析流程:
dnsmasq先去解析hosts文件, 再去解析/etc/dnsmasq.d/下的*.conf文件,并且这些文件的优先级要高于dnsmasq.conf,我们自定义的resolv.dnsmasq.conf中的DNS也被称为上游DNS,这是最后去查询解析的;
如果不想用hosts文件做解析,我们可以在/etc/dnsmasq.conf中加入no-hosts这条语句,这样的话就直接查询上游DNS了,如果我们不想做上游查询,就是不想做正常的解析,我们可以加入no-reslov这条语句。
实现步骤:
1、yum install dnsmasq -y
2、dnsmasq配置
[root@cslg-10-200-131-6 ~]# cat /etc/dnsmasq.d/resolv.conf
server=/test.com/10.200.131.3#8600
server=/test.com/10.200.131.4#8600
server=/tset.com/10.200.131.5#8600
server=8.8.8.8
server=114.144.144.144
意思是test.com域名通过consul的DNS进行解析,其它都是通过默认DNS进行解析
3、启动dnsmasq服务,systemctl start dnsmasq
4、/etc/resolv.conf配置成nameserver 127.0.0.1
配置完成后,可方便进行域名解析了:
[root@cslg-10-200-131-6 ~]# dig consulagent.node.test.com
; <<>> DiG 9.9.4-RedHat-9.9.4-73.el7_6 <<>> consulagent.node.test.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 14767
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 2
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;consulagent.node.test.com. IN A
;; ANSWER SECTION:
consulagent.node.test.com. 0 IN A 10.200.131.6
;; ADDITIONAL SECTION:
consulagent.node.test.com. 0 IN TXT "consul-network-segment="
;; Query time: 2 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Wed May 22 11:32:56 CST 2019
;; MSG SIZE rcvd: 106
文章最后更新时间:
2019年05月22日 16:14:56