- Consul 教程
- Consul - 首頁
- Consul - 簡介
- Consul - 架構
- Consul - 安裝
- Consul - 使用微服務
- Consul - 載入程式和DNS
- Consul - 查詢節點
- Consul - 故障轉移事件
- Consul - 使用UI
- Consul - 在AWS上使用Consul
- Consul 有用資源
- Consul - 快速指南
- Consul - 有用資源
- Consul - 討論
Consul - 載入程式和DNS
在本章中,我們將討論以下元件如何在Consul中使用。
- 自動引導
- 手動引導
- 使用DNS轉發
- DNS快取
現在讓我們詳細討論每一個。
自動引導
引導是Consul的核心功能之一。當您第一次安裝consul時,它會自動配置為檢測、識別和加入它遇到的節點。在叢集形成過程中,自動引導是Consul的內建功能。要獲取有關consul的更多資訊,最好的方法是使用以下命令:
$ sudo consul info
輸出將如以下螢幕截圖所示。
此命令將顯示consul在**實際工作場景**中的實際工作原理。它將顯示Consul中Raft演算法的工作原理。自動引導命令可以使用以下命令顯示:
$ consul agent -server -data-dir = ”/tmp/consul” -bootstrap-expect 3
在-dev模式下無法進行自動引導。
此選項告知Consul預期的伺服器節點數量,並在伺服器可用時自動引導。
手動引導
手動引導是Consul的一箇舊但有用的功能。實際上,在Consul的早期版本中,首次安裝和使用consul時必須手動進行引導。後來,人們意識到無法在不同的時間執行此命令列操作。因此,引入了自動引導。您可以始終使用以下命令手動使用引導。
在這種情況下,我們將假設要構建一個3節點的consul叢集。
有兩種方法可以進行手動引導
在2個節點上執行命令:在節點B和節點C上,您可以執行以下操作:
$ consul join <Node A Address>
在1個節點上執行命令:
$ consul join <Node B Address> <Node C Address>
使用DNS轉發
DNS從**埠53**提供服務。可以使用**BIND、dnsmasq**和**iptables**進行DNS轉發。預設情況下,Consul代理執行一個在埠8600上監聽的DNS伺服器。透過向Consul代理的DNS伺服器提交DNS請求,您可以獲取執行您感興趣的服務的節點的IP地址。
Consul DNS介面透過**SRV記錄**使服務的埠資訊可用。在不手動向程式碼中新增邏輯的情況下,您通常僅限於查詢的服務的IP地址資訊(即a記錄)。
最佳選擇是擁有多個BIND伺服器,每個伺服器都在本地執行一個Consul代理。任何由BIND伺服器接收的查詢都將轉發到其本地Consul代理DNS伺服器。
使用Bind
我們可以使用Bind函式進行DNS轉發。可以使用以下命令執行此操作。
$ sudo apt-get install bind9 bind9utils bind9-doc
輸出將如以下螢幕截圖所示。
讓我們使用以下命令編輯/etc/bind/named.conf檔案。
$ sudo vim /etc/bind/named.conf
在檔案中,請在程式碼的最後一行下方新增以下行。
options {
directory "/var/cache/bind";
recursion yes;
allow-query { localhost; };
forwarders {
8.8.8.8;
8.8.4.4;
};
dnssec-enable no;
dnssec-validation no;
auth-nxdomain no; # conform to RFC1035
listen-on-v6 { any; };
};
include "/etc/bind/consul.conf";
輸出將如以下螢幕截圖所示。
您可以使用以下Bind命令配置Consul。
$ sudo vim /etc/bind/consul.conf
建立檔案時新增以下行:
zone "consul" IN {
type forward;
forward only;
forwarders { 127.0.0.1 port 8600; };
};
現在,您可以使用以下命令開始執行您的consul代理。(請記住也要重新啟動bind9服務。)
$ sudo service bind9 restart $ consul agent -server -bootstrap-expect 1 -data-dir = /tmp/consul -configdir = [Path]
系統需要配置為將查詢傳送到本地Consul代理的DNS伺服器。這是透過更新系統上的**resolv.conf**檔案以指向127.0.0.1來完成的。在大多數情況下,需要將Consul配置為在埠53上執行。
您可以將以下資訊新增到/etc/resolv.conf
nameserver 127.0.0.1
DNS快取
Consul使用“0 TTL”(生存時間)值提供所有DNS結果。這可以防止任何快取。但是,由於TTL值,可以將其設定為允許DNS結果在Consul的下游進行快取。較高的TTL值減少了Consul伺服器上的查詢次數,並加快了客戶端的查詢速度,但代價是結果越來越陳舊。
為此,我們將使用以下方法進行DNS快取:
$ sudo apt-get install dnsmasq
輸出將如以下螢幕截圖所示。
現在,我們可以進行一個非常簡單的配置:
$ echo "server = /consul/127.0.0.1#8600" > /etc/dnsmasq.d/10-consul
我們在這裡所做的只是指定要由127.0.0.1上的埠8600上的DNS伺服器處理的consul服務的DNS請求。除非您更改consul預設值,否則此方法應該有效。
在正常情況下,應使用以下命令。
$ dig @127.0.0.1 -p 8600 web.service.consul
使用**Dnsmasq**,您應該使用以下命令。
$ dig web.service.consul
輸出將如以下螢幕截圖所示。