Consul - 下载安装环境设置

为了演示目的,我们将使用 -dev 模式在开发者模式下使用 consul 代理。仅针对本地机器设置,我们将进行单系统 consul 设置。请不要在生产中使用此单节点 consul 集群。正如 Hashicorp 已经在单节点 consul 集群的案例场景中提到的那样,数据丢失是不可避免的

安装 Consul

可以通过下载页面安装 Consul,网址为 www.consul.io/downloads.html

安装 Consul

您可以在计算机的下载部分中提取二进制包。

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

现在让我们开始使用 consul,使用 -dev flag

$ 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 − 管理 gossip 层加密密钥。

  • 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

输出将如以下屏幕截图所示。

模板输出

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

$ 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