Consul 安装


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

安装Consul


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

Installing Consul

你可以在机器的“下载”部分中提取二进制包。

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

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

$ 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代理。

  • 配置测试 :验证一个配置文件。

  • event : 开始一个新的活动。

  • exec : 在 Consul 节点上执行命令。

  • 强制离开 :强制集群成员离开集群。

  • info :它为我们提供了操作者的调试信息。

  • join :让Consul代理加入集群。

  • keygen :生成新的加密密钥。

  • keyring :管理gossip层加密密钥。

  • kv :与key-value store进行交互。

  • leave :离开Consul集群,不强制关闭。

  • lock :执行一个命令来按住一个锁。

  • maint :控制节点或服务维护模式。

  • members :它列出了一个Consul集群的成员。

  • monitor : 它从 Consul 代理流式传输日志。

  • operator :它为我们提供了Consul运营商的工具集群。

  • reload :触发​​代理重新加载配置文件。

  • rtt :它估计节点之间的网络往返时间。

  • snapshot : 保存、恢复和检查 Consul 服务器状态的快照。

  • version : 打印当前的 Consul 版本。

  • watch : 注意Consul 的变化。

Consul 模板


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

Consul 模板将在 /tmp/<文件名>.conf.tmpfl .编写模板所使用的语言 Hashicorp 配置语言 (HCL).

你可以从这里下载Consul 模板 page .

Template

使用以下命令试一试:

$ ./consul-template -h

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

Template 输出

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

$ 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

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

输出