关于Consul

  Consul是一个提供服务注册与发现,健康监测,Key/Value存储以及多数据中心存储的分布式框架。官网地址是https://www.consul.io/,公司初步应用后我们老大觉得这东西有点意思,随即有了翻译文档的想法,由于精力有限工作繁忙,急需志同道合的道友一起来翻译下,毕竟好东西还是需要大家一起推广的,翻译链接是:http://consul.la/,本文主要留下一点DNS转发的简单应用。

优势

  基于Consul提供的DNS查询接口可以把注册在Consul内部的服务可以以如:服务名.service.consul的方式获取该服务的ip地址,相比较于53端口的系统级高权限的DNS查询服务,Consul可以通过健康监测动态的提供可用服务的DNS查询,同时基于多数据中心存储的分布式特性,Consul提供的DNS服务也更易于管理。

准备

下载

  在Consul官网https://www.consul.io/downloads.html可以下载对应操作系统的Consul,Consul同时提供一个管理界面Web UI。

简单配置

Consul启动时的配置参数可以通过命令行传递也可以通过读取配置文件夹的方式完成(-config-file),现在准备一个Server端单机版自身为leader的实例配置方式:

    {
"datacenter": "dc_yu",
"data_dir": "./consul-data",
     "ui_dir": "./consului",
"log_level": "TRACE",
"server": true,
"bootstrap": true,
"node_name":"server_1",
"bind_addr":"127.0.0.1"
}

consul识别的配置文件需以.json后缀,以读取配置文件加载配置信息的方式会加载指向文件夹下的所有.json文件,并以文件名首字母排序进行加载。

启动

consul启动方式和配置方式在不同操作系统中一致:

配置一个服务

这里应该dotnet core快速生成个web服务

 随后将服务注册到Consul中,并设置健康监测,这里可以通过配置文件进行服务注册,将文件放到-config-file指向的文件夹目录下:

    {
"services": [{
"id":"dotnetcoresample",
"name":"dotnetcoresample",
"tags":["dotnetcoresample"],
"address": "10.1.18.58",
"port": 5000,
"checks": [
{
"http": "http://10.1.18.58:5000/",
"interval": "10s"
}
]
}]
}

然后consul需要重新加载一下,通过命令行consul reload完成。然后可以通过Consul提供的Web页面查看一下

在浏览器中转到http://127.0.0.1:8500/即可

应用

Consul通过8600端口提供DNS服务,这里可以先体验一下,这也是官方提供的方式:

接下来就可以通过一些工具为所欲为的配置应用本地的域名了,Linux操作系统中可以应用DNSmasq,iptables等,这些在官方文档有demo:https://www.consul.io/docs/guides/forwarding.html

在windows操作系统中接下来用的是一个应用C#开发的开源DNS工具DNSAgent:https://github.com/stackia/DNSAgent

DNSAgent配置

  下载编译好的包或者clone代码自己编译随意,编译后的目录是

  通过简单配置两个cfg后缀的文件即可,这里主要配置rules.cfg即可,添加一个配置项,将DNS查询指向Consul的DNS查询接口:

    [
{
"Pattern": "^(.*\\.)?consul$",
"NameServer": "127.0.0.1:8600",
"QueryTimeout": 30,
"CompressionMutation": false
}
]

  配置局域网DNS服务器地址:

  运行DNSAgent.exe或者直接注册到windows服务中即可。

  然后测试一下成果:

  

  接下来把注册到consul中的业务服务停止下然后在观察下:

结束

通过Consul提供的DNS服务应用场景还是挺多的,这个就可以为所欲为了- -

  

  

服务发现与健康监测框架Consul-DNS转发的应用的更多相关文章

  1. Consul-template的简单应用:配置中心,服务发现与健康监测

    简介 Consul-template是Consul的一个方扩展工具,通过监听Consul中的数据可以动态修改一些配置文件,大家比较热衷于应用在Nginx,HAProxy上动态配置健康状态下的客户端反向 ...

  2. 微服务中的健康监测以及其在ASP.NET Core服务中实现运行状况检查

    1 .什么是健康检查? 健康检查几乎就是名称暗示的.它是一种检查您的应用程序是否健康的方法.随着越来越多的应用程序转向微服务式架构,健康检查变得尤其重要(Health Check).虽然微服务架构有很 ...

  3. 服务发现Eureka、zookeeper、consul

    Spring Cloud为开发人员提供了工具,以快速构建分布式系统中的某些常见模式(例如,配置管理,服务发现,断路器,智能路由,微代理,控制总线,一次性令牌,全局锁,领导选举,分布式会话,群集状态). ...

  4. 服务发现 ap cp 强一致性 最终一致性 dns vip ip

    为什么基于域名 08 | 服务发现:到底是要CP还是AP? https://time.geekbang.org/column/article/208171 为什么需要服务发现?先举个例子,假如你要给一 ...

  5. consul dns 转发配置

    测试使用dnsmasq.  优势:可以方便的进行应该编码,进行动态域名解析,容错处理.   因为consul 默认的dns 为127.0.0.1 8600  所以配置如下:  文件目录: /etc/d ...

  6. 服务发现 - consul 的介绍、部署和使用

    什么是服务发现 相关源码: spring cloud demo 微服务的框架体系中,服务发现是不能不提的一个模块.我相信了解或者熟悉微服务的童鞋应该都知道它的重要性.这里我只是简单的提一下,毕竟这不是 ...

  7. 服务发现之consul的介绍、部署和使用

    什么是服务发现 微服务的框架体系中,服务发现是不能不提的一个模块.我相信了解或者熟悉微服务的童鞋应该都知道它的重要性.这里我只是简单的提一下,毕竟这不是我们的重点.我们看下面的一幅图片:     图中 ...

  8. 服务发现 - consul 的介绍、部署和使用(转)

    什么是服务发现 相关源码: spring cloud demo 微服务的框架体系中,服务发现是不能不提的一个模块.我相信了解或者熟悉微服务的童鞋应该都知道它的重要性.这里我只是简单的提一下,毕竟这不是 ...

  9. 服务发现之 Etcd VS Consul

    抄自这里 *********************************************************************************************** ...

随机推荐

  1. “老坛泡新菜”:SOD MVVM框架,让WinForms焕发新春

    火热的MVVM框架 最近几年最热门的技术之一就是前端技术了,各种前端框架,前端标准和前端设计风格层出不穷,而在众多前端框架中具有MVC,MVVM功能的框架成为耀眼新星,比如GitHub关注度很高的Vu ...

  2. Android Socket连接PC出错问题及解决

    最近测试问题:Android 通过Socket链接电脑,ip和端口都是正确的,也在同一网段,可android端就是报异常如下: 解决办法:测试电脑的防火墙可能开着,在控制面板把防火墙打开即可.

  3. Git时间(第一次写,这个怎么玩啊)

    1.安装 Liunx直接打开shell界面,输入:sudo apt-get install git-core ,按下回车之后输入密码即可完成安装: Windows系统在https://git-for- ...

  4. C#迪杰斯特拉算法

    C#迪杰斯特拉算法 网上有许多版本的,自己还是写一个理解点 Dijkstra.cs public class Dijkstra { private List<Node> _nodes; p ...

  5. 技术笔记:XMPP之openfire+spark+smack

    在即时通信这个领域目前只找到一个XMPP协议,在其协议基础上还是有许多成熟的产品,而且是开源的.所以还是想在这个领域多多了解一下. XMPP协议:具体的概念我就不写了,毕竟这东西网上到处是.简单的说就 ...

  6. Mono 3.2.3 TCP吞吐性能测试报告

    在前几天简单地测试了一下Mono 3.2.3 TCP处理的稳定性,有同学问Mono 3.2.3的TCP处理性有怎样,以下是针对Mono 3.2.3TCP在吞吐方面的性能测试.主要测试分两种场分别是连接 ...

  7. APP漏洞扫描用地址空间随机化

    APP漏洞扫描用地址空间随机化 前言 我们在前文<APP漏洞扫描器之本地拒绝服务检测详解>了解到阿里聚安全漏洞扫描器有一项静态分析加动态模糊测试的方法来检测的功能,并详细的介绍了它在针对本 ...

  8. 使用Masstransit开发基于消息传递的分布式应用

    Masstransit作为.Net平台下的一款优秀的开源产品却没有得到应有的关注,这段时间有机会阅读了Masstransit的源码,我觉得我有必要普及一下这个框架的使用. 值得一提的是Masstran ...

  9. Floyd-Warshall 全源最短路径算法

    Floyd-Warshall 算法采用动态规划方案来解决在一个有向图 G = (V, E) 上每对顶点间的最短路径问题,即全源最短路径问题(All-Pairs Shortest Paths Probl ...

  10. 搞了我一下午竟然是web.config少写了一个点

    Safari手机版居然有个这么愚蠢的bug,浪费了我整个下午,使尽浑身解数,国内国外网站搜索解决方案,每一行代码读了又想想了又读如此不知道多少遍,想破脑袋也想不通到底哪里出了问题,结果竟然是web.c ...