网站首页 > 技术教程 正文
Consul-Template简介
Consul-Template是基于Consul的自动替换配置文件的应用。在Consul-Template没出现之前,大家构建服务发现系统大多采用的是Zookeeper、Etcd+Confd这样类似的系统。
Consul官方推出了自己的模板系统Consul-Template后,动态的配置系统可以分化为Etcd+Confd和Consul+Consul-Template两大阵营。Consul-Template的定位和Confd差不多,Confd的后端可以是Etcd或者Consul。
Consul-Template提供了一个便捷的方式从Consul中获取存储的值,Consul-Template守护进程会查询Consul实例来更新系统上指定的任何模板。当更新完成后,模板还可以选择运行一些任意的命令。
Consul-Template的使用场景
Consul-Template可以查询Consul中的服务目录、Key、Key-values等。这种强大的抽象功能和查询语言模板可以使Consul-Template特别适合动态的创建配置文件。例如:创建Apache/Nginx Proxy Balancers、Haproxy Backends、Varnish Servers、Application Configurations等。
Consul-Template特性
- Quiescence:Consul-Template内置静止平衡功能,可以智能的发现Consul实例中的更改信息。这个功能可以防止频繁的更新模板而引起系统的波动。
- Dry Mode:不确定当前架构的状态,担心模板的变化会破坏子系统?无须担心。因为Consul-Template还有Dry模式。在Dry模式,Consul-Template会将结果呈现在STDOUT,所以操作员可以检查输出是否正常,以决定更换模板是否安全。
- CLI and Config:Consul-Template同时支持命令行和配置文件。
- Verbose Debugging:即使每件事你都做的近乎完美,但是有时候还是会有失败发生。Consul-Template可以提供更详细的Debug日志信息。
项目地址:https://github.com/hashicorp/consul-template
Consul-Template安装
Consul-Template和Consul一样,也是用Golang实现。因此具有天然可移植性(支持 Linux、windows 和macOS)。安装包仅包含一个可执行文件。Consul-Template安装非常简单,只需要下载对应系统的软件包并解压后就可使用。
这里以Linux系统为例:
$ wget https://releases.hashicorp.com/consul-template/0.18.3/consul-template_0.18.3_linux_amd64.zip
$ unzip consul-template_0.18.3_linux_amd64.zip
$ mv consul-template /usr/local/bin/
其它系统版本可在这里下载:https://releases.hashicorp.com/consul-template/
Consul-Template常用命令
-consul-auth=<username[:password]> 设置基本的认证用户名和密码。
-consul-addr=<address> 设置Consul实例的地址。
-max-stale=<duration> 查询过期的最大频率,默认是1s。
-dedup 启用重复数据删除,当许多consul template实例渲染一个模板的时候可以降低consul的负载。
-consul-ssl 使用https连接Consul。
-consul-ssl-verify 通过SSL连接的时候检查证书。
-consul-ssl-cert SSL客户端证书发送给服务器。
-consul-ssl-key 客户端认证时使用的SSL/TLS私钥。
-consul-ssl-ca-cert 验证服务器的CA证书列表。
-consul-token=<token> 设置Consul API的token。
-syslog 把标准输出和标准错误重定向到syslog,syslog的默认级别是local0。
-syslog-facility=<facility> 设置syslog级别,默认是local0,必须和-syslog配合使用。
-template=<template> 增加一个需要监控的模板,格式是:'templatePath:outputPath(:command)',多个模板则可以设置多次。
-wait=<duration> 当呈现一个新的模板到系统和触发一个命令的时候,等待的最大最小时间。如果最大值被忽略,默认是最小值的4倍。
-retry=<duration> 当在和consul api交互的返回值是error的时候,等待的时间,默认是5s。
-config=<path> 配置文件或者配置目录的路径。
-pid-file=<path> PID文件的路径。
-log-level=<level> 设置日志级别,可以是"debug","info", "warn" (default), and "err"。
-dry Dump生成的模板到标准输出,不会生成到磁盘。
-once 运行consul-template一次后退出,不以守护进程运行。
Consul-Template使用实例
在进行以下测试前,你首先得有一个Consul集群。如果你还没有,可搭建一个,当然单节点Consul环境也是可以的。下面就以动态配置nginx为例来说明,还需要提前启动好一个端口是8090的tomcat服务、安装好Nginx。
1、先向Consul注册服务
curl -X PUT http://127.0.0.1:8500/v1/catalog/register -d '{"Datacenter": "dc1","Node": "tomcat1","Address": "127.0.0.1","Service": { "Id": "127.0.0.1:8090", "Service": "api_tomcat1","tags": [ "dev" ],"Port": 8090}}'
查看注册的信息
curl -X GET http://127.0.0.1:8500/v1/catalog/service/api_tomcat1
2、准备Nginx启动脚本start_nginx.sh
#!/bin/sh
ps -ef |grep nginx |grep -v grep |grep -v .sh
if [ $? -ne 0 ]; then
nginx;
echo "nginx start"
else
nginx -s reload;
echo "nginx reload"
fi
3、在Nginx配置目录/etc/nginx/conf.d/准备一个空配置文件test-consul-template.conf4、编写Nginx配置文件模板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 down; # force a 502{{end}}
} {{end}}
server {
listen 80 default_server;
{{range services}} {{$name := .Name}}
location /{{$name}} {
proxy_pass http://{{$name}};
}
{{end}}
}
模板的语法可以参考官网 https://github.com/hashicorp/consul-template#templating-language
5、使用配置文件的方式启动Consul-Template编辑配置文件nginx.hcl
consul {
address = "127.0.0.1:8500"
}
template {
source = "nginx.conf.ctmpl"
destination = "/etc/nginx/conf.d/test-consul-template.conf"
command = "./start_nginx.sh"
}
6、启动Consul-Template
consul-template -config "nginx.hcl"
7、测试请求http://127.0.0.1/api_tomcat/info已经通了。
猜你喜欢
- 2024-10-12 高级开发必须掌握Nginx之一 反向代理、动静分离、负载均衡
- 2024-09-25 nginx+consul做动态负载均衡(docker)
- 2024-09-25 面试题:Nginx 有哪些负载均衡策略?Nginx为什么要做动静分离?
- 2024-09-25 一张小图看尽 Nginx(看看一张图片)
- 2024-09-25 nginx的动静分离,你真的懂吗?(nginx+tomcat动静分离,linux)
- 2024-09-25 7、Nginx+Apache环境配置——动静分离
- 2024-09-25 Nginx、Consul、Upsync实现动态负载均衡配置
- 2024-09-25 30s 就可以掌握的 Nginx 片段(nginx 304)
- 2024-09-25 Jenkins for Kubernetes实现Slave动态伸缩
- 2024-09-25 Nginx总结(九) 实现系统的动静分离
你 发表评论:
欢迎- 最近发表
-
- Win10 TH2正式版官方ESD映像转换ISO镜像方法详解
- 使用iso镜像升级到Windows 10的步骤
- macOS Ventura 13.2 (22D49) Boot ISO 原版可引导镜像
- 安利一个用ISO镜像文件制作引导U盘的的小工具RUFUS
- CentOS 7使用ISO镜像配置本地yum源
- 用于x86平台的安卓9.0 ISO镜像发布下载:通吃I/A/N、完全免费
- AlmaLinux 9.6发布:升级工具、初步支持IBM Power虚拟化技术
- Rufus写入工具简洁介绍与教程(写入模式)
- 新硬件也能安装使用了,Edge版Linux Mint 21.3镜像发布
- 开源工程师:Ubuntu应该抛弃32位ISO镜像
- 标签列表
-
- 下划线是什么 (87)
- 精美网站 (58)
- qq登录界面 (90)
- nginx 命令 (82)
- nginx .http (73)
- nginx lua (70)
- nginx 重定向 (68)
- Nginx超时 (65)
- nginx 监控 (57)
- odbc (59)
- rar密码破解工具 (62)
- annotation (71)
- 红黑树 (57)
- 智力题 (62)
- php空间申请 (61)
- 按键精灵 注册码 (69)
- 软件测试报告 (59)
- ntcreatefile (64)
- 闪动文字 (56)
- guid (66)
- abap (63)
- mpeg 2 (65)
- column (63)
- dreamweaver教程 (57)
- excel行列转换 (56)
本文暂时没有评论,来添加一个吧(●'◡'●)