服務發現與健康監測框架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服務應用場景還是挺多的,這個就可以為所欲為了- -

  

  

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM