=============================
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 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 mysql.service.consul SRV # 查询 tag 为 v1,且服务名为 mysql.service.consul 的信息
docker run --rm azukiapp/dig:latest dig @192.168.1.11 -p v1.mysql.service.consul SRV # 查询 tag 为 master,且服务名为 mysql.service.consul 的信息
docker run --rm azukiapp/dig:latest dig @192.168.1.11 -p master.mysql.service.consul SRV

Consul 域名服务的更多相关文章

  1. .net core学习笔记,组件篇:服务的注册与发现(Consul)初篇

    1.什么是服务注册中心? 在学习服务注册与发现时,我们要先搞明白到底什么是服务注册与发现. 在这里我举一个生活中非常普遍的例子——网购来简单说明,网购在我们日常生活中已经是非常普遍了,其实网购中的(商 ...

  2. Consul 服务注册与服务发现

    上一篇:Mac OS.Ubuntu 安装及使用 Consul 1. 服务注册 对 Consul 进行服务注册之前,需要先部署一个服务站点,我们可以使用 ASP.NET Core 创建 Web 应用程序 ...

  3. Mac OS、Ubuntu 安装及使用 Consul

    Consul 概念(摘录): Consul 是 HashiCorp 公司推出的开源工具,用于实现分布式系统的服务发现与配置.与其他分布式服务注册与发现的方案,比如 Airbnb 的 SmartStac ...

  4. 使用C# 和Consul进行分布式系统协调

    随着大数据时代的到来,分布式是解决大数据问题的一个主要手段,随着越来越多的分布式的服务,如何在分布式的系统中对这些服务做协调变成了一个很棘手的问题.今天我们就来看看如何使用C# ,利用开源对分布式服务 ...

  5. 分布式服务注册和发现consul 简要介绍

    Consul是HashiCorp公司推出的开源工具,用于实现分布式系统的服务发现与配置.与其他分布式服务注册与发现的方案,Consul的方案更"一站式",内置了服务注册与发现框 架 ...

  6. 第二章 consul的安装和启动

    安装环境: mac:64bit(查看mac位数:打开终端-->"uname -a") consul_0.6.4_darwin_amd64.zip和consul_0.6.4_w ...

  7. 应用.Net+Consul维护RabbitMq的高可用性

    懒人学习的过程就是工作中老大让干啥让做啥就研究研究啥,国庆放假回来的周末老大通过钉钉给我布置了个任务, RabbitMQ高可用解决方案,我想说钉钉太坑了: 这是国庆过后9号周日晚上下班给的任务,我周一 ...

  8. Consul的一个更新:服务端节点故障后重连

    研究了一段时间Consul,想写个攻略来着,但太赖了而且表达能力非正常人...今天发现HashiCorp果然接纳大众意见改了点东西.. 场景是: 假如Consul集群内有三个Server Node 时 ...

  9. 搭建consul 集群

    1.   准备工作 a)      启动三台虚拟机 s1:10.1.7.141 s2:10.1.7.139 s3:10.1.7.138 b)      每台机器上在 /home新建文件夹 mkdir ...

随机推荐

  1. 【agc013d】Piling Up(动态规划)

    [agc013d]Piling Up(动态规划) 题面 atcoder 洛谷 有\(n\)个球,颜色为黑白中的一种,初始时颜色任意. 进行\(m\)次操作,每次操作都是先拿出一个求,再放进黑白各一个, ...

  2. HGOI 20190407 Typing Competition Round #1 出题记

    /* ljc20020730出的HGOI20190407的模拟赛. 考试结果比预期难的不少,可能是由于本来计划5h的比赛打了4h吧. 就当普及组模拟赛好了... 难度大概4紫吧(弱省省选难度) 出境 ...

  3. 「NOI2015」寿司晚宴 解题报告

    「NOI2015」寿司晚宴 这个题思路其实挺自然的,但是我太傻了...最开始想着钦定一些,结果发现假了.. 首先一个比较套路的事情是状压前8个质数,后面的只会在一个数出现一次的再想办法就好. 然后发现 ...

  4. 「JLOI2015」管道连接 解题报告

    「JLOI2015」管道连接 先按照斯坦纳树求一个 然后合并成斯坦纳森林 直接枚举树的集合再dp一下就好了 Code: #include <cstdio> #include <cct ...

  5. Ubuntu18.04搜狗输入法最新版本2.2.0.0108经常乱码的解决方案

    图示 解决 旧版 可以安装旧版(我只在新版sogoupinyin_2.2.0.0108_amd64才遇到这个问题) 旧版安装指南:http://www.cnblogs.com/dunitian/p/6 ...

  6. Codeforces Round #508 (Div. 2) C D

    C: C - Gambling 给你两个数列  每一回合A可以选择从第一个序列里面选一个数或者清除第二个序列里面选一个数 同理B能从第二序列里面选数或者清除第一个序列里面一个数 然后 求A所选的数之和 ...

  7. 编写高质量代码:改善Java程序的151个建议 --[52~64]

    编写高质量代码:改善Java程序的151个建议 --[52~64] 推荐使用String直接量赋值 Java为了避免在一个系统中大量产生String对象(为什么会大量产生,因为String字符串是程序 ...

  8. Java Number & Math 类

    // java.lang.Math 常用 // xxxValue() 方法用于将 Number 对象转换为 xxx 数据类型的值并返回. System.out.println(((Integer) 5 ...

  9. CF528D Fuzzy Search

    题意:给定k,只含有ACGT的字符串S和T,求T在S中出现了多少次. 字符匹配:如果S的[i - k, i + k]中有字符x,那么第i位可以匹配x. 解: 首先预处理:f[i][j]表示S的第i位能 ...

  10. luogu3731 新型城市化

    题目链接 思路 这道题对于题意的转化很关键. 题目要求的是添上一条边,使得图中最大团的大小变大.给出的边是原图的补集,这就给我们了提示. 因为题目中说,原图中最多有两个团.所以给出的边一定形成了一个二 ...