博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
服务发现与健康监测框架Consul-DNS转发的应用
阅读量:5319 次
发布时间:2019-06-14

本文共 2179 字,大约阅读时间需要 7 分钟。

  

关于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服务应用场景还是挺多的,这个就可以为所欲为了- -

  

  

 

转载于:https://www.cnblogs.com/ylsforever/p/5844707.html

你可能感兴趣的文章
js千分位处理
查看>>
Mac---------三指拖移
查看>>
字符串类型的相互转换
查看>>
HTTP状态码
查看>>
iOS如何过滤掉文本中特殊字符
查看>>
基础学习:C#中float的取值范围和精度
查看>>
javaagent 简介
查看>>
python升级安装后的yum的修复
查看>>
Vim配置Node.js开发工具
查看>>
web前端面试题2017
查看>>
ELMAH——可插拔错误日志工具
查看>>
MySQL学习笔记(四)
查看>>
【Crash Course Psychology】2. Research & Experimentation笔记
查看>>
两数和
查看>>
移动设备和SharePoint 2013 - 第3部分:推送通知
查看>>
SOPC Builder中SystemID
查看>>
MySQL数据库备份工具mysqldump的使用(转)
查看>>
NTP服务器配置
查看>>
【转】OO无双的blocking/non-blocking执行时刻
查看>>
关于 linux 的 limit 的设置
查看>>