consul通過DNS協議查找服務

consul通過DNS協議查找服務

1、centos默認沒有dig命令,dig命令屬於bind-utils工具包,安裝這個包之後就可以使用dig命令了。

yum -y install bind-utils

2、使用DNS API來獲取A記錄ip地址

對於DNS API,服務的DNS名稱是 NAME.service.consul 。默認所有的DNS名稱都是在 consul 名稱空間下,當然這個是可配置的service 子域名告訴Consul我們正在查詢服務,並且 NAME 就是要查詢的服務的名稱。

對於我們註冊的minio服務,對應的查詢設置就是 minio.service.consul:

[root@nginx ~]# dig @127.0.0.1 -p 8600 minio.service.consul

; <<>> DiG 9.11.4-P2-RedHat-9.11.4-9.P2.el7 <<>> @127.0.0.1 -p 8600 minio.service.consul
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 15982
;; flags: qr aa rd; QUERY: 1, ANSWER: 4, AUTHORITY: 0, ADDITIONAL: 5
;; WARNING: recursion requested but not available

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;minio.service.consul.          IN      A

;; ANSWER SECTION:
minio.service.consul.   0       IN      A       172.16.10.228
minio.service.consul.   0       IN      A       172.16.10.227
minio.service.consul.   0       IN      A       172.16.10.229
minio.service.consul.   0       IN      A       172.16.10.226

;; ADDITIONAL SECTION:
minio.service.consul.   0       IN      TXT     "consul-network-segment="
minio.service.consul.   0       IN      TXT     "consul-network-segment="
minio.service.consul.   0       IN      TXT     "consul-network-segment="
minio.service.consul.   0       IN      TXT     "consul-network-segment="

;; Query time: 5 msec
;; SERVER: 127.0.0.1#8600(127.0.0.1)
;; WHEN: 四 3月 26 10:52:16 CST 2020
;; MSG SIZE  rcvd: 257

可以看到,4個帶了節點的IP地址的 A 記錄被返回了,它就是可用的服務。 A 記錄只能包含IP地址。

3、使用DNS API來獲取完整的地址/端口的 SRV 記錄:

[root@nginx ~]# dig @127.0.0.1 -p 8600 minio.service.consul SRV

; <<>> DiG 9.11.4-P2-RedHat-9.11.4-9.P2.el7 <<>> @127.0.0.1 -p 8600 minio.service.consul SRV
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 48403
;; flags: qr aa rd; QUERY: 1, ANSWER: 4, AUTHORITY: 0, ADDITIONAL: 9
;; WARNING: recursion requested but not available

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;minio.service.consul.          IN      SRV

;; ANSWER SECTION:
minio.service.consul.   0       IN      SRV     1 1 9000 minio-2.node.shenzhen.consul.
minio.service.consul.   0       IN      SRV     1 1 9000 minio-1.node.shenzhen.consul.
minio.service.consul.   0       IN      SRV     1 1 9000 minio-4.node.shenzhen.consul.
minio.service.consul.   0       IN      SRV     1 1 9000 minio-3.node.shenzhen.consul.

;; ADDITIONAL SECTION:
minio-2.node.shenzhen.consul. 0 IN      A       172.16.10.227
minio-2.node.shenzhen.consul. 0 IN      TXT     "consul-network-segment="
minio-1.node.shenzhen.consul. 0 IN      A       172.16.10.226
minio-1.node.shenzhen.consul. 0 IN      TXT     "consul-network-segment="
minio-4.node.shenzhen.consul. 0 IN      A       172.16.10.229
minio-4.node.shenzhen.consul. 0 IN      TXT     "consul-network-segment="
minio-3.node.shenzhen.consul. 0 IN      A       172.16.10.228
minio-3.node.shenzhen.consul. 0 IN      TXT     "consul-network-segment="

;; Query time: 1 msec
;; SERVER: 127.0.0.1#8600(127.0.0.1)
;; WHEN: 四 3月 26 10:53:03 CST 2020
;; MSG SIZE  rcvd: 449

SRV 記錄顯示了minio服務證運行在節點 minio-*.node.shenzhen.consul 的9000端口上。額外的部分和 A 記錄返回的內容一樣。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章