引言
HashiCorp 的 Consul 是一款多功能的工具,在現代 DevOps 環境中担负著多種任務。它廣泛用於服務發現、健康檢查、負載平衡,尤其是作為分佈式鍵值(KV)存放庫。Consul 中的 KV 存放庫非常适合存放動態配置數據、功能旗帜、秘密和元數據,以高可用性和一致性方式跨基礎設施存取,使服務能在分佈式系統中動態存取。使用 Docker 配置 Consul 的 KV 存放庫可以快速設置和建立獨立環境,使其成為測試和開發的理想選擇。
本教程將带你了解如何使用 Docker 設定和配置 Consul 的 KV 存放庫。到最後,你將有一個完全功能的 Consul 實例在 Docker 中運行,並已配置好 KV 對,可供存取。此設定對於分佈式系統中的服務配置和狀態管理是必要的。
前提準備
開始之前,請確保你已有以下內容:
- DigitalOcean 雲端帳號。
- 運行 Ubuntu 的伺服器,以及具有 sudo 權限的非root用戶和一個活躍的防火牆。要了解如何設定,請從此列表選擇您的 分發版,並遵循我們的初始伺服器設定指南。請確保使用受支持的 Ubuntu 版本。
- 在您的 Ubuntu Droplet 上安裝了 Docker。請遵循這篇在 Ubuntu 上安裝和使用 Docker 的教程。
- 熟練使用 Linux 命令行。要開始或重温命令行的介紹,您可以拜訪這份Linux 命令行導論指南。
- 對 Docker 命令和容器管理有基本知識。
步驟 1 — 拉取 Consul Docker 映像
我們先從 Docker Hub 拉取官方 Consul 映像。此映像由 HashiCorp 維護,並包含運行 Consul 所需的一切。
登錄到您的 Ubuntu Droplet 的控制台並運行:
步驟 2 — 運行 Consul 容器
既然已經下載了 Consul 映像,現在您可以開始一個新的 Consul 容器。這個容器將作為您的 Consul 服務器,並允許您與 KV 存儲進行互動。
要開始運行容器,請運行:
這個命令的作用如下:
-d
以分離模式運行容器(在后台)。--name=consul-server
分配一個名字給容器。-e CONSUL_BIND_INTERFACE=eth0
設定 Consul 應該绑定的網絡接口。這對於正確的網絡通信是必要的。-p 8500:8500
將 Consul 網絡接口映射到宿主機。-p 8600:8600/udp
將 DNS 服務端口映射用於服務發現。
这一步非常重要,因为它设置了核心的 Consul 服务,您将使用它来配置 KV 存储。
步驟 3 — 驗證 Consul 安装
为确保 Consul 正在正确运行,您需要验证容器状态并访问 Consul 界面。
首先,運行 docker ps
命令來列出所有運行的容器,並確認 Consul 容器正在運行中。
現在,檢查 Consul 是否可以訪問,打開網絡瀏覽器,並導航至 http://localhost:8500
。你應該能看到 Consul 的介面。
这一步驟對於在 KV 庫(步驟 5)中存儲數據前,确认你的 Consul 實例是否存在任何問題非常重要。
步驟 4 — 配置防火牆(可选)
如果您的 Consul 實例需要從外部訪問(例如,從集群中的其他節點),您必須調整防火牆設定,允許必要的端口上的流量。
例如,如果您在運行 Consul 的云實例上,您可能需要允許端口 8500(HTTP API)和 8600(DNS)上的入站流量。具體命令將基於您的防火牆解決方案(UFW、iptables 等等)而有所不同。
这一步確保您的 Consul 實例可以從其他機器訪問,對於分佈式配置至关重要。
步驟 5 — 存儲鍵值對
正在運行的Consul讓您可以使用KV庫來儲存配置數據。您可以使用Consul CLI或Web UI添加鍵值對。
通過CLI存儲鍵值對,請運行以下命令:
這個命令的作用是:
-it
– 從本地系統启动到容器的交互式終端。consul kv put
– kv put命令將數據寫入給定的KV庫路徑。config/db_host
– 存儲值的路徑。192.168.1.100
– 值。
使用Web UI,
- 導航到Consul UI (
http://localhost:8500
)。 - 點擊“鍵/值”標籤。
- 通過點擊“創建”創建新的鍵。
- 輸入鍵(例如,
config/db_host
)和值(例如,192.168.1.100
)。
這些命令和行為將關鍵配置數據儲存在您的服務可以動態地在運行時間訪問的位置。
步驟6 – 取回鍵值對
一旦您储存了一些KV對,您將想要取回它們以確保它們已被正確儲存。
使用CLI,使用以下命令取回值:
使用Web UI,
- 前往 Consul UI 的“Key/Value”標籤頁。
- 尋找你創建的鍵並點擊它以查看儲存的值。
取回 KV 對是核實你的數據是否正確储存和可訪問的必要步驟。
步驟 7 — 使用 Docker 卷persisting 數據
預設情況下,Docker 容器是短暫的,意思是指储存在容器內任何數據如果容器被移除將會消失。為了將你的 Consul KV 數據持續化,你應該使用 Docker 卷。
- 停止並移除目前的 Consul 容器:
現在,檢查容器應該會發現 Consul 容器已經不再運行。
2. 運行一個有附帶 Docker 卷的新 Consul 容器:
`-v consul_data:/consul/data` 選項將 Docker 卷掛载到容器中,確保你的 KV 倉儲在容器重啟之間持續存在。
步驟 8 — 自動化 Consul 啟動(選項)
在生產環境部署時,您可能會想要使用 Docker Compose 来自動化启动您的 Consul 容器。Docker Compose 簡化了多容器 Docker 應用程序的管理,並使其更易於管理服務。
創建一個 docker-compose.yml
文件,內容如下:
然後,運行:
這個命令會自動開始 Consul,並確保它在失敗時重新啟動,使其更健壯,適合生產用途。
步驟 9 — 清理
一旦您完成與 Consul 實例的工作,您應該清理 Docker 環境以釋放資源。
讓我們停止並移除 Consul 容器:
如果您已完成 Consul,您還可以移除 Docker 映像:
清理有助於維護整潔的開發環境,並確保 Docker 資源不受浪費。
結論
在這個教程中,您學習了如何使用 Docker 設定和配置 Consul 的 KV 存儲。您已經cover了Docker的安裝、運行Consul容器、配置KV存儲、使用Docker卷 persist 數據,以及清理您的環境。透過這些步驟,您可以現在使用Consul來動態管理分布在您的系統中的配置數據, leveraging Docker 的威力以實現簡單的部署和管理。
Source:
https://www.digitalocean.com/community/tutorials/how-to-configure-consul-kv-using-docker