- Consul 教程
- Consul - 首頁
- Consul - 簡介
- Consul - 架構
- Consul - 安裝
- Consul - 使用微服務
- Consul - 引導和 DNS
- Consul - 查詢節點
- Consul - 故障轉移事件
- Consul - 使用 UI
- Consul - 在 AWS 上使用 Consul
- Consul 有用資源
- Consul - 快速指南
- Consul - 有用資源
- Consul - 討論
Consul - 安裝
為了演示目的,我們將使用開發模式下的 consul 代理(使用 -dev 模式)。僅用於本地機器設定,我們將進行單系統 consul 設定。**請勿在生產環境中使用此單節點 consul 叢集**。正如 HashiCorp 在單節點 consul 叢集的案例場景中提到的那樣,**資料丟失是不可避免的**。
安裝 Consul
可以透過 www.consul.io/downloads.html 上的下載頁面安裝 Consul。
您可以將二進位制包提取到機器的下載部分。
$ cd Downloads $ chmod +x consul $ sudo mv consul /usr/bin/
現在讓我們使用**-dev 標記**啟動 consul。
$ consul agent -dev -data-dir=/tmp/consul
輸出將如以下螢幕截圖所示。
現在您可以使用以下命令檢查您的 consul 成員。
$ consul members
輸出將如以下螢幕截圖所示。
如果要將其他節點加入此節點 -
$ consul join <Node 2> <Node 3>
或者,您可以在節點 2 和 3 上執行以下命令 -
$ consul join <Node 1>
使用命令列
consul 的命令列包含多個不同的選項,一些最常用的選項如下 -
**agent** - 執行 Consul 代理。
**configtest** - 驗證配置檔案。
**event** - 啟動一個新的事件。
**exec** - 在 Consul 節點上執行命令。
**force-leave** - 強制叢集成員離開叢集。
**info** - 它為操作員提供除錯資訊。
**join** - 使 Consul 代理加入叢集。
**keygen** - 生成新的加密金鑰。
**keyring** - 管理八卦層加密金鑰。
**kv** - 與鍵值儲存互動。
**leave** - 離開 Consul 叢集並將其關閉,無需強制。
**lock** - 執行命令以保持鎖。
**maint** - 控制節點或服務的維護模式。
**members** - 它列出 Consul 叢集的成員。
**monitor** - 它從 Consul 代理流式傳輸日誌。
**operator** - 它為 Consul 操作員提供了一組工具。
**reload** - 它觸發代理重新載入配置檔案。
**rtt** - 它估計節點之間的網路往返時間。
**snapshot** - 它儲存、恢復和檢查 Consul 伺服器狀態的快照。
**version** - 列印當前 Consul 版本。
**watch** - 監視 Consul 中的變化。
Consul 模板
consul-template 為我們提供了一個守護程序,該守護程序查詢 Consul 例項並在檔案系統上更新任意數量的指定模板。consul-template 可以選擇在更新過程完成後執行任意命令。此選項幫助我們設定 consul 叢集,而無需手動完成所有操作。
consul 模板需要在** /tmp/<name-of-file>.conf.tmpfl** 中形成。模板的編寫語言是根據**HashiCorp 配置語言**(HCL)。
您可以從此頁面下載 consul-template。
嘗試使用以下命令 -
$ ./consul-template -h
輸出將如以下螢幕截圖所示。
如果您希望將此二進位制檔案移動到更突出的位置,以便使用者每次都可以使用它。您可以輸入以下命令 -
$ chmod +x consul-template $ sudo mv consul-template /usr/share/bin/
出於演示目的,我們將使用**nginx**的示例配置作為我們的服務。您可以在https://github.com/hashicorp/consul-template/tree/master/examples上嘗試更多演示,或者更好地寫下您自己的模板。
$ vim /tmp/nginx.conf.ctmpl
輸出將如以下螢幕截圖所示。
配置檔案可能如下所示 -
{{range services}} {{$name := .Name}} {{$service := service .Name}}
upstream {{$name}} {
zone upstream-{{$name}} 64k;
{{range $service}}server {{.Address}}:{{.Port}} max_fails = 3 fail_timeout = 60
weight = 1;
{{else}}server 127.0.0.1:65535; # force a 502{{end}}
} {{end}}
server {
listen 80 default_server;
location / {
root /usr/share/nginx/html/;
index index.html;
}
location /stub_status {
stub_status;
}
{{range services}} {{$name := .Name}}
location /{{$name}} {
proxy_pass http://{{$name}};
}
{{end}}
}
現在使用 consul 模板二進位制檔案,請執行以下命令 -
$ consul-template \ -template = "/tmp/nginx.conf.ctmpl:/etc/nginx/conf.d/default.conf"
使用前面的命令,程序已啟動。稍後您可以開啟另一個終端並檢視使用以下命令完全呈現的 nginx.conf 檔案。
$ cat /etc/nginx/conf.d/default.conf
輸出將如以下螢幕截圖所示。