如何在 Ubuntu 16.04 上安裝 Consul 服務器

在本文中,我們將向您展示在 Ubuntu 16.04 LTS 上安裝和配置 Consul 服務器。 Consul 是一種服務發現和配置管理系統的解決方案,它是完全分佈式的、高度可用的,並且可以擴展到跨多個數據中心的數千個節點和服務。 它有助於查找服務應用程序需求,如數據庫、電子郵件和隊列,配置服務,如為 Web 服務器和健康檢查服務啟用維護模式。 它確保數據安全並與最大的基礎設施配合使用,採用現代實踐並且對現有 DevOps 工具友好。 Consul 提供了許多功能來提供關於您的基礎設施的一致且可用的信息。 當我們談到服務發現時,Consul 的客戶端可以提供一個服務,例如 api 或 http,其他客戶端可以使用 Consul 來發現給定服務的提供者,使用 DNS 或 MySQL,應用程序可以很容易地找到它們所依賴的服務之上。

讓我們看看如何在 Ubuntu 16.04 上安裝 Consul、Consul Web-UI 和 Consul Template。 但是您可以通過一些修改在其他 Linux 發行版上實現相同的步驟。

先決條件

在本文中,我們使用安裝了基本操作系統的 Ubuntu 16.04 的單個實例,但您可以根據建議使用在每個數據中心運行的多個 consul 服務器,以避免在服務器出現故障時丟失數據。 這些是執行繁重工作並存儲有關服務和鍵/值信息的信息的組件。

使用 root 或 sudo 在我們查看 consul 應用程序之前,特權用戶安裝一些將在此過程中使用的基本包。 我們需要解壓縮以提取可執行文件並更新本地系統包緩存,然後使用下面的“apt”命令安裝包。

$ sudo apt-get update
$ sudo apt-get install unzip

我們還需要安裝“tmux”,它可用於多路復用多個虛擬控制台,允許用戶在單個終端窗口或遠程終端會話中訪問多個單獨的終端會話。

$ sudo apt-get install tmux

為了使用 consul web ui 包訪問 Consul,我們需要安裝一個 Web 服務器,為此我們將使用 Nginx。 您可以使用以下命令在 Ubuntu 服務器上安裝 Nginx。

$ sudo apt-get install nginx

這些是基本的系統要求,現在讓我們轉到在 Ubuntu 上安裝 Consul 的主題。

如何在 Ubuntu 16.04 上安裝 Consul

Consul 包在 Ubuntu 的默認存儲庫中不可用,但我們可以從源包中安裝它,源包可以從 領事網頁. 選擇最新版本,複製其源位置,然後使用下面的 ‘wget’ 命令將其軟件包安裝在您的服務器上的 ‘bin’ 目錄中。

$ cd /usr/local/bin
$ sudo wget https://releases.hashicorp.com/consul/0.8.0/consul_0.8.0_linux_amd64.zip

下載後,使用以下命令解壓縮包並刪除壓縮包。

$ sudo unzip consul_0.8.0_linux_amd64.zip
$ sudo rm -rf consul_0.8.0_linux_amd64.zip

現在,在 consul 的同一個網頁中,你會發現它的 web-ui 頁面,可以用來打開它的 web 控制台來管理 web 頁面上的所有服務。 在用戶的主目錄中創建一個新目錄後,讓我們運行以下命令來下載 Web-UI 包。

$ mkdir consul-ui
$ cd consul-ui
$ wget https://releases.hashicorp.com/consul/0.8.0/consul_0.8.0_web_ui.zip

下載後,解壓縮包並刪除壓縮文件。

$ unzip consul_0.8.0_web_ui.zip
$ rm -rf consul_0.8.0_web_ui.zip

接下來,我們需要配置 Consul 服務器及其 Web UI,使其可以通過 Web 瀏覽器訪問。

如何配置領事服務器

在以下新目錄中創建一個新文件“config.json”,並將以下配置參數放入其中。
目錄並將以下配置放入其中。 這裡PPPP是實例的私有IP

$ cd ~
$ mkdir -p consul-config/server

現在使用以下命令使用命令行編輯器創建一個新文件以放置以下配置。

~$ vim consul-config/server/config.json
{
    "bootstrap": true,
    "server": true,
    "log_level": "DEBUG",
    "enable_syslog": true,
    "datacenter": "server1",
    "addresses" : {
      "http": "0.0.0.0"
    },
    "bind_addr": "XX.XX.XX.XX",
    "node_name": "XX.XX.XX.XX",
    "data_dir": "/home/k/consuldata",
    "ui_dir": "/home/k/consul-ui",
    "acl_datacenter": "server1",
    "acl_default_policy": "allow",
    "encrypt": "5KKufILrf186BGlilFDNig=="
}

在此配置文件中,第一個配置參數用於引導。 如果您要設置多個 consul 服務器的集群,請確保將此配置文件僅放在您的一個 consul 服務器上,或者放在所有這些服務器上,以便為您提供更多引導選項。 配置文件存儲在簡單的 JSON 中,因此非常易於管理。

接下來,我們對 consul 使用的耳語協議實現了一些加密。 它使用共享秘密系統內置了此功能。 機密必須是 16 位 base-64 編碼字符串。 在終端中,我們可以使用 consul 命令生成所需長度和編碼的密鑰。

$ consul keygen
5KKufILrf186BGlilFDNig==

確保使用您自己的服務器 IP 或 FQDN 更新您的 bind_addr 和 node_name。 進行所需的更改後,保存並 close 使用 ‘:wq!’ 的編輯器並轉到下一步以配置您的 Web 服務器。

創建一個新的配置文件,放置在 Nginx Web 服務器的配置目錄下,其中包含以下內容。

$ sudo vim /etc/nginx/conf.d/consul.conf
server
{
  listen 80 ;
  server_name XX.XX.XX.XX;
  root /home/k/consul-ui;
      location / {
        proxy_pass https://127.0.0.1:8500;
        proxy_set_header   X-Real-IP $remote_addr;
        proxy_set_header   Host      $http_host;
    }
}

Save 和 close 配置文件,但請確保將“XX”替換為您的域名或服務器的 IP 地址。 之後運行以下命令以重新啟動 Nginx 服務。

$ sudo systemctl restart nginx.service

重啟 Nginx 服務後,啟動 consul 服務器。

如何啟動和使用 Consul 服務器

配置 Consul 服務器後,現在我們將使用以下命令在 ‘tmux’ 終端下啟動它的服務。

$ tmux
$ consul agent -config-dir ~/consul-config/server -ui-dir ~/consul-ui -bootstrap true -client=0.0.0.0

現在,您將在 tmux 會話上運行 consul 進程,如下所示。

您可以通過使用“ctrl+b than d”在後台運行 consul 來保持進程運行,並且您的 tmux 會話將被分離。

現在,按照服務器的 IP 或 FQDN 和端口“8500”打開 Web 瀏覽器,從 Web 瀏覽器管理您的 consul 服務器。

https://localhost:8500

就是這樣,現在您可以使用此界面來檢查服務器的運行狀況並了解您的服務和基礎架構。 當您不想使用 Web UI 時,您可以 close SSH 隧道或使用 ps 命令和 grep 搜索進程的 pid 號以搜索我們轉發的端口號“8500”以終止進程。

結論

在本文中,我們已經在 Ubuntu 16.04 上成功安裝並設置了 consul 服務器及其 web-ui。 它構建為具有數據中心感知能力,無需複雜配置即可支持任意數量的區域。 Consul 可在 Linux、Mac OS X 和 Windows 上運行,但建議僅在 Linux 上運行 Consul 服務器。