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 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 域名服务的更多相关文章
- .net core学习笔记,组件篇:服务的注册与发现(Consul)初篇
1.什么是服务注册中心? 在学习服务注册与发现时,我们要先搞明白到底什么是服务注册与发现. 在这里我举一个生活中非常普遍的例子——网购来简单说明,网购在我们日常生活中已经是非常普遍了,其实网购中的(商 ...
- Consul 服务注册与服务发现
上一篇:Mac OS.Ubuntu 安装及使用 Consul 1. 服务注册 对 Consul 进行服务注册之前,需要先部署一个服务站点,我们可以使用 ASP.NET Core 创建 Web 应用程序 ...
- Mac OS、Ubuntu 安装及使用 Consul
Consul 概念(摘录): Consul 是 HashiCorp 公司推出的开源工具,用于实现分布式系统的服务发现与配置.与其他分布式服务注册与发现的方案,比如 Airbnb 的 SmartStac ...
- 使用C# 和Consul进行分布式系统协调
随着大数据时代的到来,分布式是解决大数据问题的一个主要手段,随着越来越多的分布式的服务,如何在分布式的系统中对这些服务做协调变成了一个很棘手的问题.今天我们就来看看如何使用C# ,利用开源对分布式服务 ...
- 分布式服务注册和发现consul 简要介绍
Consul是HashiCorp公司推出的开源工具,用于实现分布式系统的服务发现与配置.与其他分布式服务注册与发现的方案,Consul的方案更"一站式",内置了服务注册与发现框 架 ...
- 第二章 consul的安装和启动
安装环境: mac:64bit(查看mac位数:打开终端-->"uname -a") consul_0.6.4_darwin_amd64.zip和consul_0.6.4_w ...
- 应用.Net+Consul维护RabbitMq的高可用性
懒人学习的过程就是工作中老大让干啥让做啥就研究研究啥,国庆放假回来的周末老大通过钉钉给我布置了个任务, RabbitMQ高可用解决方案,我想说钉钉太坑了: 这是国庆过后9号周日晚上下班给的任务,我周一 ...
- Consul的一个更新:服务端节点故障后重连
研究了一段时间Consul,想写个攻略来着,但太赖了而且表达能力非正常人...今天发现HashiCorp果然接纳大众意见改了点东西.. 场景是: 假如Consul集群内有三个Server Node 时 ...
- 搭建consul 集群
1. 准备工作 a) 启动三台虚拟机 s1:10.1.7.141 s2:10.1.7.139 s3:10.1.7.138 b) 每台机器上在 /home新建文件夹 mkdir ...
随机推荐
- AXURE 8弄一个轮播图的步骤
这个图是网上找到,7.0可以使用. 如果是8.0.没有找到"动态面板"这个地方,如下图所示
- 【php】 php获取文件路径中的文件名和文件后缀方法
获取文件名 $file = realpath(__DIR__.'/images/common/../addBtn.png'); 方法一 $file = realpath(__DIR__.'/image ...
- hdu 3374 String Problem(kmp+最小表示法)
Problem Description Give you a string with length N, you can generate N strings by left shifts. For ...
- js 判断字符串中是否包含某个字符串
String对象的方法 方法一: indexOf() (推荐) var str = "123"; console.log(str.indexOf("3") ...
- Macbook外接显示器模糊解决方法
解决方法(此方法经本人测试失败) 下载这个http://www.elias.cn/uploads/Mac/patch-edid.zip.如果链接失效可以使用https://gist.github.co ...
- [Splay][学习笔记]
胡扯 因为先学习的treap,而splay与treap中有许多共性,所以会有很多地方不会讲的很细致.关于treap和平衡树可以参考这篇博客 关于splay splay,又叫伸展树,是一种二叉排序树,它 ...
- 《Java程序设计》 第一周学习总结
20175313 <Java程序设计>第一周学习总结 教材学习内容总结 了解Java的四个特点 学习JDK的安装以及系统环境变量的设置 掌握Java源文件命名.编译.运行 熟悉git的常用 ...
- python异步编程之asyncio(百万并发)
前言:python由于GIL(全局锁)的存在,不能发挥多核的优势,其性能一直饱受诟病.然而在IO密集型的网络编程里,异步处理比同步处理能提升成百上千倍的效率,弥补了python性能方面的短板,如最 ...
- PV、UV、UIP、VV、CPC、CPM、RPM、CTR解释
PV.UV.UIP.VV.CPC.CPM.RPM.CTR 具体解释 PV:Page View,页面访问量,也就是曝光量. UV:Unique Visitor,独立访客数,同一个访问多次访问也只算1个访 ...
- 使用property为类中的数据添加行为
对于面向对象编程特别重要的是,关注行为和数据的分离. 在这之前,先来讨论一些“坏”的面向对象理论,这些都告诉我们绝不要直接访问属性(如Java): class Color: def __init__( ...