出于演示目的,我们将在开发者模式下使用 consul agent,通过 -dev 模式进行。仅用于本地机器设置,我们将进行单系统 Consul 设置。请不要在生产环境中使用此单节点 Consul 集群。正如 Hashicorp 已经在单节点 Consul 集群的案例中提到的,数据丢失是不可避免的

安装 Consul

可以通过下载页面 www.consul.io/downloads.html 安装 Consul。

Consul 安装 - 图1

你可以在你的机器的下载目录中提取二进制包。

  1. $ cd Downloads
  2. $ chmod +x consul
  3. $ sudo mv consul /usr/bin/

现在让我们使用 -dev 标志开始使用 consul。

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

输出如下图所示。

Consul 安装 - 图2

现在你可以使用以下命令检查你的 consul 成员。

  1. $ consul members

输出如下图所示。

Consul 安装 - 图3

如果你想将其他节点加入到此节点 −

  1. $ consul join <Node 2> <Node 3>

或者,你可以在节点 2 和 3 上运行以下命令 −

  1. $ consul join <Node 1>

使用命令行

consul 的命令行包含几种不同的选项,以下是一些最常用的选项:

  • agent − 运行一个 Consul agent。
  • configtest − 验证配置文件。
  • event − 启动一个新事件。
  • exec − 在 Consul 节点上执行命令。
  • force-leave − 强制一个集群成员离开集群。
  • info − 为操作员提供调试信息。
  • join − 使 Consul agent 加入集群。
  • keygen − 生成一个新的加密密钥。
  • keyring − 管理八卦层加密密钥。
  • kv − 与键值存储交互。
  • leave − 离开 Consul 集群并正常关闭。
  • lock − 执行命令以保持锁定状态。
  • maint − 控制节点或服务的维护模式。
  • members − 列出 Consul 集群的成员。
  • monitor − 从 Consul agent 流日志。
  • operator − 提供 Consul 操作员工具集。
  • reload − 触发 agent 重新加载配置文件。
  • rtt − 估计节点之间的网络往返时间。
  • snapshot − 保存、恢复和检查 Consul 服务器状态快照。
  • version − 打印当前 Consul 版本。
  • watch − 监视 Consul 的更改。

探索我们最新的在线课程,以您自己的节奏学习新技能。注册并成为认证专家,以提升您的职业生涯。

Consul Template

consul-template 为我们提供了一个守护进程,它查询 Consul 实例并更新文件系统上任意数量的指定模板。consul-template 可以在更新过程完成时可选地运行任意命令。此选项帮助我们设置 consul 集群,而无需手动完成所有操作。

consul 模板应在 /tmp/.conf.tmpfl 中形成。根据 Hashicorp 配置语言(HCL)编写模板的语言。

你可以从这个页面下载 consul-template。

Consul 安装 - 图4

通过使用以下命令进行尝试 −

  1. $ ./consul-template -h

输出如下图所示。

Consul 安装 - 图5

如果你希望将此二进制文件移动到更显眼的位置,以便用户每次都可以使用它。你可以输入以下命令 −

  1. $ chmod +x consul-template
  2. $ sudo mv consul-template /usr/share/bin/

出于演示目的,我们将使用 nginx 的示例配置作为我们的服务。你可以在 https://github.com/hashicorp/consul-template/tree/master/examples 尝试更多示例,或者更好地编写自己的模板。

  1. $ vim /tmp/nginx.conf.ctmpl

输出如下图所示。

Consul 安装 - 图6

配置文件可能看起来像这样 −

  1. {{range services}}
  2. {{$name := .Name}}
  3. {{$service := service .Name}}
  4. upstream {{$name}} {
  5. zone upstream-{{$name}} 64k;
  6. {{range $service}}
  7. server {{.Address}}:{{.Port}} max_fails=3 fail_timeout=60 weight=1;
  8. {{else}}
  9. server 127.0.0.1:65535; # force a 502
  10. {{end}}
  11. }
  12. {{end}}
  13. server {
  14. listen 80 default_server;
  15. location / {
  16. root /usr/share/nginx/html/;
  17. index index.html;
  18. }
  19. location /stub_status {
  20. stub_status;
  21. }
  22. {{range services}}
  23. {{$name := .Name}}
  24. location /{{$name}} {
  25. proxy_pass http://{{$name}};
  26. }
  27. {{end}}
  28. }

现在使用 consul 模板二进制文件,运行以下命令 −

  1. $ consul-template \
  2. -template="/tmp/nginx.conf.ctmpl:/etc/nginx/conf.d/default.conf"

使用之前的命令,进程已启动。你可以稍后打开另一个终端,并使用以下命令查看已完全渲染的 nginx.conf 文件。

  1. $ cat /etc/nginx/conf.d/default.conf

输出如下图所示。

Consul 安装 - 图7