💎一站式轻松地调用各大LLM模型接口,支持GPT4、智谱、星火、月之暗面及文生图 广告
### **2. 什么是Consul模板** Consul模板命令启动后,它将读取一个到多个模板文件,并向Consul发出查询,加载它们所需的所有数 据。通常,`consul-template` 作为守护程序运行,一开始获取初始值,之后持续监控更新,在集群中发 生任何相关更改时都会重新加载模板。更新过程完成后,模板还可以运行后置命令。例如,它可以在进 行配置更改后将HUP信号发送到负载均衡器服务。 模板部署方式:根据使用情况,用户可能在少数几个主机上只有一个consul-template实例,或者也可能 需要在每个主机上运行多个实例。每个Consul模板过程都可以管理多个不相关的文件,如果这些文件共 享数据依赖项,则将根据需要对提取的内容进行重复数据删除,这样可以减少Consul服务器上可能共享 的负载。 ***** 单次模板加载:用户也可以使用 `-once` 标志仅加载一次模板,这在测试或者由其他脚本触发时比较有用。 ***** **Conusl模板有啥用途?** 1. `更新配置文件 :` Consul模板工具可用于更新服务配置文件,一种常见的用法是管理负载均衡配置 文件,这些文件需要在许多无法直接连接到Consul群集的计算机上定期动态更新; 2. `发现有关Consul群集和服务的数据 :`可以收集有关Consul群集中服务的信息。例如,用户可以收集 群集上运行的所有服务的列表,或者可以发现Redis所有服务的地址。注意,这个操作在生产环境 有所限制。 ***** ### **安装Consul模板** 在开发者模式下使用本地Consul代理,先执行 consul agent -dev ,Consul代理正常运行后才能进行 以下其他步骤。 Consul模板工具本身不包含在Consul二进制文件中,需要单独安装。可以直接安装预 编译的二进制文件,也可以下载源代码自行编译,我们将安装预编译的二进制文件。 ***** 首先,先下载 `consul-template` 二进制文件: ``` curl -O https://releases.hashicorp.com/consul-template/0.26.0/consultemplate_0.26.0_linux_386.zip ``` ``` # 1. 解压缩 $ unzip consul-template_0.26.0_linux_386.zip #将执行文件(解压缩之后的文件夹),复制到/usr/local/bin文件夹下 cp consul-template /usr/local/bin # 2. 设置环境变量,输入命令: vim /etc/profile # 3. 将这里的代码添加到 profile 文件末尾(这里覆盖之前consul的配置) # Consul export CONSUL_TEMPLATE_HOME=/usr/local/bin/consul-template export PATH=$PATH:$CONSUL_HOME:$CONSUL_TEMPLATE_HOME; # 4. 执行命令使环境变量生效 source /etc/profile # 5. 验证软件是否安装成功 consul-template -v ``` ***** ### **Consul-template 实战配置文件生成** **实战步骤:** 1. Consul-template 定义模板文件: `find_address.tpl` ``` # 创建模板 touch find_address.tpl # 定义模板内容项 {{ key "/hashicorp/street_address" }} ``` 2. consul-template读取KV数据,用于渲染生成配置文件 ``` # 运行consul-template命令监听,同时指定要使用的模板和需要更新的文件: consul-template -template "find_address.tpl:hashicorp_address.conf" ``` 注: `consul-template` 命令会持续运行,可使用 `CTRL+c` 可以停止其运行。新开一个新终端,使用命令 行指令将数据写入Consul ***** 3. 根据 `consul kv` 之类 用来往consul的KV键值对中存入数据 ``` $ consul kv put hashicorp/street_address "127.0.0.1:8080" # 查看hashicorp_address.conf 文件来确保有数据写入文件 cat /consul/config/tpl/hashicorp_address.conf ``` 4. 想要动态更新模板的值 再次 采用kv指令,`consul kv put hashicorp/street_address "127.0.0.1:11000"` 更新 hashicorp/street_address 值,可以看到该文件立即更新。有啥用? 比如用户可以用相同的过程来 更新HAProxy负载均衡器配置。 ***** ### **Consul-template 服务配置生成** 1. 定义模板文件: `all-services.tpl` ``` {{range services}} # {{.Name}}{{range service .Name}} {{.Address}}:{{.Port}} max_fails=3 fail_timeout=60 weight=1; {{end}} ``` 2. 运行 consul-template 命令指定我们刚刚创建的模板,并使用 -once 标志,仅运行一次。 ``` consul-template -template="all-services.tpl:all-services.conf" -once ``` Consul Template 指令手册:https://codechina.csdn.net/mirrors/hashicorp/consul-template?utm_source=csdn_github_accelerator *****