Consul 安装
为了演示目的,我们将使用consul agent在开发者模式下使用-dev模式。仅用于本地机器设置,我们将进行单节点consul设置。 请不要在生产环境中使用这个单节点consul集群。 正如Hashicorp在单节点consul集群的情景中已经提到的那样, 数据丢失是不可避免的 。
安装Consul
可以通过www.consul.io/downloads.html的下载页面安装Consul。
您可以将二进制包提取到您机器的下载部分。
$ cd Downloads
$ chmod +x consul
$ sudo mv consul /usr/bin/
现在让我们开始使用 consul,使用 -dev 标记。
$ consul agent -dev -data-dir=/tmp/consul
输出结果如下所示:
现在您可以使用以下命令检查您的领事成员。
$ consul members
输出结果如下所示:
如果您想将其他节点连接到此节点−
$ consul join <Node 2> <Node 3>
或者,你可以在Node 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/ <file-name>.conf.tmpfl
.模板使用 Hashicorp配置语言 (HCL)编写。
您可以从此 页面 下载consul-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
输出结果如下所示:
配置文件可能类似于 –
{{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
输出结果如下所示: