服務發現與健康監測框架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服務應用場景還是挺多的,這個就可以為所欲為了-
原文地址:http://www.cnblogs.com/ylsforever/p/5844707.html
.NET社群新聞,深度好文,微信中搜索dotNET跨平臺或掃描二維碼關注