Consul 域名服務


=============================
Web請求的全過程(包含DNS)
=============================
完整過程參考 https://blog.csdn.net/yonggeit/article/details/72857630
DNS 服務器並不承擔 TCP 連接的數據通道, 只是在建立TCP連接之前起作用, 告知目標機器的IP是多少.

 

=============================
consul 域名服務
=============================
標准的 DNS 默認端口為 53, 而 consul 默認的 DNS 端口為 8600.
查詢 DNS 服務時候, 需要指定服務名稱, consul支持多種服務名稱寫法, 常用的是 consul 標准寫法和 RFC2782 寫法.

1. 標准的 consul 服務寫法(最常用):
[tag.]<your_service>.service[.your_datacenter].consul
共包含 5 個部分:
*. 最后的 consul 為命名空間, 可以修改, 缺省為 consul.
*. 在注冊服務的時候, 一個 service 可以包含多個服務 node, 我們可以為每個 node 打上多個的 tag,
比如: 我們有一個 prod_mysql 服務, 第一個 "Node" 為 "mysql-1" , 其"tags" 為 ["master","v1"]; 第二個 "Node" 為 "mysql-2" , 其"tags" 為 ["slave","v1"]

示例:

# 安裝 consul 集群后, 就會有一個 consul.service.consul 服務, 我們可以查詢其 DNS 信息
docker run --rm  azukiapp/dig:latest dig @192.168.1.11 -p 8600 consul.service.consul SRV


2. RFC2782 的寫法是: _<service>._<protocol>.service[.datacenter][.domain] , 知道有這么一種方法就行, 不做過多研究.

 

 

=============================
域名查詢工具 dig
=============================
Linux 和 Windows 都帶有 nslookup 域名查詢工具工具, Linux 已經推薦使用 dig 來代替 nslookup, dig 的全稱為 Domain Information Groper, windows 官方系統並未提供 dig 工具. 我們可以使用 Bind 軟件包 (DNS 服務器) 中的 dig 工具. 下載地址: https://www.isc.org/downloads/bind/, 注意在安裝的向導中, Options 只要選中 "Tool only" 即可, 因為我們不需要使用 Bind 做 DNS 服務器.


下面是 dig 命令行幾種典型寫法:
dig Hostname
dig DomainNameHere
dig @DNS-server-name Hostname
dig @DNS-server-name IPAddress
dig @DNS-server-name Hostname|IPAddress type
dig @DNS-server-name -p53 Hostname|IPAddress type
dig @DNS-server-name -p8600 Hostname|IPAddress type
其中:
1. @DNS-server-name 為域名服務器, 比如可以指定 8.8.8.8 或 ns1.cyberciti.biz, 需要域名服務器前加上@符號
2. Hostname|IPAddress 是要查詢的資源名稱, 比如 www.baidu.com
3. type 參數: 要查詢的類型, 缺省的代表 A record, 其他合法的類型有 ANY, A, AAAA, CNAME, MX, NS ,PTR, SRV, SIG
4. -p 參數, 標准 DNS 默認端口為 53, 如果是非 53 端口, 需要指定端口號

例子:
dig @127.0.0.1 -p8600 redis.service.dc1.consul SRV
consul 默認情況下, consul client 使用本機的 127.0.0.1:8600 對外提供 DNS 查詢服務.

 


=============================
Boot2Docker 下使用 dig
=============================
Boot2Docker 安裝后的 VM 不帶 dig 工具, 可以使用 azukiapp/dig:latest 鏡像.
docker run --rm azukiapp/dig:latest dig @192.168.1.11 -p 8600 consul.service.consul SRV



=============================
consul DNS 服務注冊
=============================
consul 默認情況下, 我們可以通過本機的 consul client 8600 端口查詢 DNS 信息, 通過本機 consul client 8500 http 端口注冊服務.

注冊一個名為 mysql 的 service, 該服務共有兩個地址, 兩個地址的注冊命令如下:

# 注冊一個名為 mysql 的 service, 該服務共有兩個地址, 兩個地址的注冊命令如下: 
curl -X PUT -d '{"Datacenter": "dc1", "Node": "mysql-1","Address": "mysql-1.node.consul","Service": {"Service": "mysql", "tags": ["master","v1"],"Port": 3306}}'  http://192.168.1.11:8500/v1/catalog/register
curl -X PUT -d '{"Datacenter": "dc1", "Node": "mysql-2","Address": "mysql-2.node.consul","Service": {"Service": "mysql", "tags": ["slave","v1"],"Port": 3306}}' http://192.168.1.11:8500/v1/catalog/register


# 查詢這個 mysql service 的 DNS
docker run --rm  azukiapp/dig:latest dig @192.168.1.11 -p 8600 mysql.service.consul SRV

# 查詢 tag 為 v1,且服務名為 mysql.service.consul 的信息
docker run --rm  azukiapp/dig:latest dig @192.168.1.11 -p 8600 v1.mysql.service.consul SRV

# 查詢 tag 為 master,且服務名為 mysql.service.consul 的信息
docker run --rm  azukiapp/dig:latest dig @192.168.1.11 -p 8600 master.mysql.service.consul SRV

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM