zoukankan      html  css  js  c++  java
  • 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
  • 相关阅读:
    Codeforces 754A Lesha and array splitting (搜索)
    浅入分析Linux
    MakeFile基本使用
    Mac 安装YCM
    Homebrew 配置
    虚拟机复制操作CentOS6导致eth0转为eth0以至于网络服务启动失败的解决方案
    Kickstart安装
    Linux编译安装MySQL
    Python源码读后小结
    编译原理小结
  • 原文地址:https://www.cnblogs.com/harrychinese/p/consul_dns.html
Copyright © 2011-2022 走看看