Consul - 安裝



為了演示目的,我們將使用開發模式下的 consul 代理(使用 -dev 模式)。僅用於本地機器設定,我們將進行單系統 consul 設定。**請勿在生產環境中使用此單節點 consul 叢集**。正如 HashiCorp 在單節點 consul 叢集的案例場景中提到的那樣,**資料丟失是不可避免的**。

安裝 Consul

可以透過 www.consul.io/downloads.html 上的下載頁面安裝 Consul。

Installing Consul

您可以將二進位制包提取到機器的下載部分。

$ cd Downloads
$ chmod +x consul
$ sudo mv consul /usr/bin/

現在讓我們使用**-dev 標記**啟動 consul。

$ consul agent -dev -data-dir=/tmp/consul

輸出將如以下螢幕截圖所示。

Dev Flag

現在您可以使用以下命令檢查您的 consul 成員。

$ consul members

輸出將如以下螢幕截圖所示。

Memebers

如果要將其他節點加入此節點 -

$ 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。

Template

嘗試使用以下命令 -

$ ./consul-template -h

輸出將如以下螢幕截圖所示。

Template Output

如果您希望將此二進位制檔案移動到更突出的位置,以便使用者每次都可以使用它。您可以輸入以下命令 -

$ 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

輸出將如以下螢幕截圖所示。

nginx

配置檔案可能如下所示 -

{{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

輸出將如以下螢幕截圖所示。

Output
廣告

© . All rights reserved.