- Consul 教程
- Consul - 首页
- Consul - 简介
- Consul - 架构
- Consul - 安装
- Consul - 使用微服务
- Consul - 引导和 DNS
- Consul - 查询节点
- Consul - 故障转移事件
- Consul - 使用 UI
- Consul - 在 AWS 上使用 Consul
- Consul 有用资源
- Consul - 快速指南
- Consul - 有用资源
- Consul - 讨论
Consul - 安装
为了演示目的,我们将使用开发模式下的 consul 代理(使用 -dev 模式)。仅用于本地机器设置,我们将进行单系统 consul 设置。**请勿在生产环境中使用此单节点 consul 集群**。正如 HashiCorp 在单节点 consul 集群的案例场景中提到的那样,**数据丢失是不可避免的**。
安装 Consul
可以通过 www.consul.io/downloads.html 上的下载页面安装 Consul。
您可以将二进制包提取到机器的下载部分。
$ cd Downloads $ chmod +x consul $ sudo mv consul /usr/bin/
现在让我们使用**-dev 标记**启动 consul。
$ consul agent -dev -data-dir=/tmp/consul
输出将如以下屏幕截图所示。
现在您可以使用以下命令检查您的 consul 成员。
$ consul members
输出将如以下屏幕截图所示。
如果要将其他节点加入此节点 -
$ 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** - 管理八卦层加密密钥。
**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。
尝试使用以下命令 -
$ ./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
输出将如以下屏幕截图所示。