服务发现与健康监测框架Consul-DNS转发的应用
关于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转发的应用的更多相关文章
- Consul-template的简单应用:配置中心,服务发现与健康监测
简介 Consul-template是Consul的一个方扩展工具,通过监听Consul中的数据可以动态修改一些配置文件,大家比较热衷于应用在Nginx,HAProxy上动态配置健康状态下的客户端反向 ...
- 微服务中的健康监测以及其在ASP.NET Core服务中实现运行状况检查
1 .什么是健康检查? 健康检查几乎就是名称暗示的.它是一种检查您的应用程序是否健康的方法.随着越来越多的应用程序转向微服务式架构,健康检查变得尤其重要(Health Check).虽然微服务架构有很 ...
- 服务发现Eureka、zookeeper、consul
Spring Cloud为开发人员提供了工具,以快速构建分布式系统中的某些常见模式(例如,配置管理,服务发现,断路器,智能路由,微代理,控制总线,一次性令牌,全局锁,领导选举,分布式会话,群集状态). ...
- 服务发现 ap cp 强一致性 最终一致性 dns vip ip
为什么基于域名 08 | 服务发现:到底是要CP还是AP? https://time.geekbang.org/column/article/208171 为什么需要服务发现?先举个例子,假如你要给一 ...
- consul dns 转发配置
测试使用dnsmasq. 优势:可以方便的进行应该编码,进行动态域名解析,容错处理. 因为consul 默认的dns 为127.0.0.1 8600 所以配置如下: 文件目录: /etc/d ...
- 服务发现 - consul 的介绍、部署和使用
什么是服务发现 相关源码: spring cloud demo 微服务的框架体系中,服务发现是不能不提的一个模块.我相信了解或者熟悉微服务的童鞋应该都知道它的重要性.这里我只是简单的提一下,毕竟这不是 ...
- 服务发现之consul的介绍、部署和使用
什么是服务发现 微服务的框架体系中,服务发现是不能不提的一个模块.我相信了解或者熟悉微服务的童鞋应该都知道它的重要性.这里我只是简单的提一下,毕竟这不是我们的重点.我们看下面的一幅图片: 图中 ...
- 服务发现 - consul 的介绍、部署和使用(转)
什么是服务发现 相关源码: spring cloud demo 微服务的框架体系中,服务发现是不能不提的一个模块.我相信了解或者熟悉微服务的童鞋应该都知道它的重要性.这里我只是简单的提一下,毕竟这不是 ...
- 服务发现之 Etcd VS Consul
抄自这里 *********************************************************************************************** ...
随机推荐
- 【干货分享】流程DEMO-合同会审表
流程名: 合同会审表 业务描述: 合同的审批及签订 流程相关文件: 流程包.xml 事务呈批表业务服务.xml 事务呈批表主数据.xml 流程说明: 1.此流程必须先进行事务呈批表流程的配置才可 ...
- 编写简单的Makefile文件
makefile中的编写内容如下: www:hello.c x.h gcc hello.c -o hello clean: rm hello www:hello.c x.h 表示生成www这个文件需 ...
- 学习笔记:7z在delphi的应用
最近做个发邮件的功能,需要将日志文件通过邮件发送回来用于分析,但是日志文件可能会超级大,测算下来一天可能会有800M的大小.所以压缩是不可避免了,delphi中的默认压缩算法整了半天不太好使,就看了看 ...
- .Net中的AOP系列之《拦截位置》
返回<.Net中的AOP>系列学习总目录 本篇目录 位置拦截 .Net中的字段和属性 PostSharp位置拦截 真实案例--懒加载 .Net中的懒加载 使用AOP实现懒加载 如何懒加载字 ...
- React Native 环境搭建
1,安装 HomeBrew /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install ...
- Vue插件开发入门
相对组件来说,Vue 的插件开发受到的关注要少一点.但是插件的功能是十分强大的,能够完成许多 Vue 框架本身不具备的功能. 大家一般习惯直接调用现成的插件,比如官方推荐的 vue-router.vu ...
- esayui
- Electron中Jquery的引入方式
原文链接http://huisky.com/blog/16122220522957 Electron默认启用了Node.js的require模块,而jQuery等新版本框架为了支持commondJS标 ...
- SQL Server 批量主分区备份(One Job)
一.本文所涉及的内容(Contents) 本文所涉及的内容(Contents) 背景(Contexts) 案例分析(Case) 实现代码(SQL Codes) 主分区完整.差异还原(Primary B ...
- Javascript的“上下文”(context)
一:JavaScript中的“上下文“指的是什么 百科中这样定义: 上下文是从英文context翻译过来,指的是一种环境. 在软件工程中,上下文是一种属性的有序序列,它们为驻留在环境内的对象定义环境. ...