如何使用 Docker 配置 Consul KV

0 股票
0
0
0
0

介绍

HashiCorp 的 Consul 是一款功能强大的工具,可在现代 DevOps 环境中执行多种功能。它广泛用于服务发现、健康检查、负载均衡,尤其值得一提的是,它还是一个分布式键值 (KV) 存储。Consul 中的 KV 存储适用于以完全可用且一致的方式在整个基础架构中存储动态配置数据、功能标志、密钥和元数据,以便分布式系统中的服务可以动态访问这些数据。使用 Docker 配置 Consul 的 KV 存储可以实现快速部署和隔离环境,使其成为测试和开发的理想选择。.

本教程将指导您使用 Docker 设置和配置 KV Consul 存储。完成本教程后,您将拥有一个功能齐全的 Docker 控制台实例,其中已配置并可以使用 KV 对。此设置对于分布式系统中的动态服务配置和状态管理至关重要。.

先决条件

开始之前,请确保您已准备好以下物品:

  • DigitalOcean 云账户。.
  • 服务器运行Ubuntu系统,非root用户拥有sudo权限,并且防火墙已启用。.
  • Docker 已安装在您的 Ubuntu 服务器上。.
  • Linux 命令行简介
  • 具备Docker命令和容器管理的基础知识。.

步骤 1 – 拉取 Consul Docker 镜像

让我们从 Docker Hub 获取官方控制台镜像。该镜像由 HashiCorp 维护,包含运行控制台所需的一切。.

登录到您的 Ubuntu Droplet 控制台并运行:

docker pull hashicorp/consul:latest
Output
latest: Pulling from hashicorp/consul
c8bcd218a73d: Pull complete 
5f1ac8227c2a: Pull complete 
c51fd79d429a: Pull complete 
91eff479bde6: Pull complete 
4dfcc18e51db: Pull complete 
3e2a8bf39bf9: Pull complete 
bd9ddc54bea9: Pull complete 
2054d291fb84: Pull complete 
Digest: sha256:e244c64df77ab3586f177f1692e98575086eb40343dc82a6320f5e79543490eb
Status: Downloaded newer image for hashicorp/consul:latest
docker.io/hashicorp/consul:latest

步骤 2 – 运行 Consul 容器

控制台镜像加载完毕后,您可以启动一个新的控制台容器。该容器将作为您的控制台服务器,并允许您与键值存储进行交互。.

要启动容器,请运行:

docker run -d --name=consul-server -e 
Output
CONSUL_BIND_INTERFACE=eth0 -p 8500:8500 -p 8600:8600/udp hashicorp/consul
c893b6707686bce8434213975a75c936b834cf25fc84d10b407a11c4fa8ca8ba

这条命令的作用如下:

  • -d 以分离模式(在后台)运行容器。.
  • --name=consul-server 为容器指定一个名称。.
  • -e CONSUL_BIND_INTERFACE=eth0 设置控制台应绑定的网络接口。这对于正常的网络通信至关重要。.
  • -p 8500:8500 将 Consul Web 界面和 API 端口映射到主机。.
  • -p 8600:8600/udp 映射 DNS 服务端口以进行服务发现。.

这一步骤非常重要,因为它会启动 Consul 服务,您将使用该服务来配置 KV 存储。.

步骤 3 – 确认主机安装

为确保控制台正常工作,您需要验证容器状态并访问控制台界面。.

首先,运行 docker ps 列出所有正在运行的容器,并检查 Consul 容器是否正在运行。.

❯ docker ps 
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
c893b6707686 hashicorp/consul "docker-entrypoint.s…" 51 seconds ago Up 50 seconds 8300-8302/tcp, 8600/tcp, 8301-8302/udp, 0.0.0.0:8500->8500/tcp, 0.0.0.0:8600->8600/udp consul-server

现在,检查控制台是否可用,打开网页浏览器并访问 http://localhost:8500。您应该会看到 Consul 界面。.

此验证步骤非常重要,用于确认您的控制台实例在将数据保存到 KV 存储之前没有出现任何问题(步骤 5)。.

步骤 4 – 配置防火墙(可选)

如果您的控制台实例需要外部访问(例如,来自集群中的其他节点),则必须配置防火墙设置以允许必要端口上的流量。.

例如,如果您在云实例上运行 Consul,则可能需要允许入站流量访问端口 8500(HTTP API)和 8600(DNS)。具体命令会因您的防火墙解决方案(UFW、iptables 等)而异。.

此步骤可确保您的控制台实例可从其他机器访问,这对于分布式配置至关重要。.

步骤 5 – 存储键值对

Consul 运行后,您现在可以使用键值存储来存储配置数据。您可以使用 Consul 命令行界面或 Web 界面添加键值对。.

要通过命令行界面 (CLI) 存储键值对,请运行:

docker exec -it consul-server consul kv put config/db_host 
192.168.1.100
Success! Data written to: config/db_host
docker exec -it consul-server consul kv put config/db_port 3306 
Success! Data written to: config/db_port

这条命令的作用如下:

  • -it – 从本地系统向容器启动交互式终端。.
  • consul kv put – kv put 命令将数据保存到指定的路径。.
  • config/db_host – 存储值的路径。.
  • 192.168.1.100 – 值。.

使用网页界面,

  1. 转到 Consul UI(http://localhost:8500)。.
  2. 点击“键/值”选项卡。.
  3. 点击“创建”按钮创建新密钥。.
  4. 输入键(例如,config/db_host)和值(例如,192.168.1.100)。.

这些命令和操作存储关键配置数据,您的服务可以在运行时动态访问这些数据。.

步骤 6 – 获取键值对

保存了一些 KV 对之后,您需要恢复它们,以确保它们已正确保存。.

使用命令行界面 (CLI),通过以下命令检索值:

docker exec -it consul-server consul kv get config/db_host 
192.168.1.100

使用网页界面,

  1. 转到 Consul 用户界面中的«键/值»选项卡。.
  2. 找到你创建的密钥,点击它即可查看存储的值。.

恢复 KV 对是验证数据是否正确存储和访问的重要步骤。.

步骤 7 – 使用 Docker 卷实现持久化数据

默认情况下,Docker 容器是临时的,这意味着如果容器被删除,存储在其中的所有数据都会丢失。要持久化 Consul KV 数据,您需要使用 Docker 卷。.

停止并退出当前控制台容器:

docker stop consul-server 
docker rm consul-server 

现在,检查一下容器,你会发现遮瑕膏已经失效了。.

docker ps 
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES

使用 Docker 卷附加一个新的控制台容器:

docker run -d --name=consul-server -e 
Output
CONSUL_BIND_INTERFACE=eth0 -p 8500:8500 -p 8600:8600/udp -v consul_data:/consul/data hashicorp/consul
2d2a7d3ff1911c2283e70506d68391a5cbf9c935a2ae447bfb8fa21481989ef1
docker ps 
Output
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
2d2a7d3ff191 hashicorp/consul "docker-entrypoint.s…" 5 seconds ago Up 4 seconds 8300-8302/tcp, 8600/tcp, 8301-8302/udp, 0.0.0.0:8500->8500/tcp, 0.0.0.0:8600->8600/udp consul-server

-v consul_data:/consul/data 选项将 Docker 卷挂载到容器上,并确保 KV 存储在整个容器中重新启动。.

步骤 8 – 自动启动控制台(可选)

对于生产环境部署,您可能需要使用 Docker Compose 来自动化部署 Consul 容器。Docker Compose 可以简化多容器 Docker 应用程序,并使服务管理变得轻松便捷。.

创建一个包含以下内容的 docker-compose.yml 文件:

services:
consul:
image: hashicorp/consul:latest
environment:
- CONSUL_BIND_INTERFACE=eth0
volumes:
- consul_data:/consul/data 
ports:
- "8500:8500"
- "8600:8600/udp"
restart: always
volumes:
consul_data:

然后运行:

docker-compose up -d
Output
[+] Running 2/2
✔ Network work_default Created 0.0s 
✔ Container consul-server Started 0.1s 
docker ps
Output
WARN[0000] /Users/anandhkumar/work/docker-compose.yml: the attribute `version` is obsolete, it will be ignored, please remove it to avoid potential confusion 
NAME IMAGE COMMAND SERVICE CREATED STATUS PORTS
work-consul-1 hashicorp/consul:latest "docker-entrypoint.s…" consul 40 seconds ago Up 11 seconds 8300-8302/tcp, 8600/tcp, 8301-8302/udp, 0.0.0.0:8500->8500/tcp, 0.0.0.0:8600->8600/udp

该命令会自动启动 Consul,并确保在发生故障时重新启动,使其在生产环境中更加稳定可靠。.

步骤 9 – 清洁

使用完控制台实例后,需要清理 Docker 环境以释放资源。.

我们先停止并移除控制台容器:

docker stop consul-server 
docker rm consul-server
docker ps
output
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES

如果控制台操作完毕,您也可以删除 Docker 镜像:

docker rmi hashicorp/consul 
output
hashicorp/consul@sha256:e244c64df77ab3586f177f1692e98575086eb40343dc82a6320f5e79543490eb
Deleted: sha256:eff8ccb509560987755a70df8d6c0b9410538d503d99498ae1ea9f48066b0439
Deleted: sha256:b5e6402bbb78eb061d538505a30300ef7f612104eaf0f11b17839a9b29bc5603
Deleted: sha256:1c61ada2ad8074615120d13bd805260d766ae8424cafbda4bded529d6a204d6f
Deleted: sha256:9b36da670e2a59f1d81c6e3c9d55906c576b384df51272977e5a9caea7131e74
Deleted: sha256:8c6e52c441c246f60ca146b71204b7d6511df75fa87a0dc0a0f91141964e8fd9
Deleted: sha256:1fce18208235de2be3c419764ec1d469229af5387447d21649c841632c653cef
Deleted: sha256:68e0a114c9c35b9aa8cac31fa32b27f886361bc85fcc63f34e882e9128f33a14
Deleted: sha256:3da5b888208a9b19694bfeaf8c74a432b50f44542d717c9e1f3ab273e505855a
Deleted: sha256:dea73e9287e6e2f3b7f9fcac4f20767d7badeefa24e52f990f1674e98abfa1a3
Deleted: sha256:201fa22d1f4c7d6e7ec43135c63b2260f303f4864f5eb43569faaa1731628799

清理操作有助于保持开发环境整洁,并确保不会不必要地消耗 Docker 资源。.

结果

在本教程中,您学习了如何使用 Docker 设置和配置 Consul 的键值存储 (KV store)。您已了解了 Docker 的安装、Consul 容器的运行、KV store 的配置、使用 Docker 卷持久化数据以及环境清理等内容。完成这些步骤后,您现在可以使用 Consul 动态管理分布式系统中的配置数据,并利用 Docker 的强大功能实现轻松部署和管理。.

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

您可能也喜欢