Configuration file

Consul 的参数设定有三种方式: Environment VariablesCommand-line OptionsConfiguration Files.

  • Environment Variables: 设定在OS环境变数里,Consul会读取环境变数来做为预设值。
  • Command-line Option: 在命令行中传参。当所需的设定参数越来越多时,会不容易阅读与维护。
  • Configuration Files: 支持HCL与JSON,容易阅读与维护,此外部分参数的修改可以直接reload生效。

优先级:Command-line Options > Configuration Files > Environment Variables

本节将介绍使用配置文件这种方式来设置Consul的参数。

上一节,我们启动client的命令是:

consul agent -join 172.31.60.3 -bind  172.31.58.144 -data-dir /home/ec2-user/consul 

本节我们把这三个参数配置在文件中,让consul来读取。

Configuration files

/home/ec2-user/consul目录下新建一个config目录,并新建/home/ec2-user/consul/config/config_file.hcl文件,内容如下:

data_dir =  "/home/ec2-user/consul"
start_join = ["172.31.60.3"]
bind_addr = "172.31.58.144"

start_joinbind_addr根据实际ip做替换

以configuration file方式重新启动consul client:

consul agent -config-dir=/home/ec2-user/consul/config

查看集群node。client以configuration file的方式加入集群:

image-20211017093933273

上面的命令指定了配置文件的目录。当有多个配置文件时,Consul会依据命名的顺序载入,例如: acl.hcl 会在 server_config.hcl前处理,后处理的设定档会合并到前面的,如有重复的参数,则后面会覆盖前面。


另外,configuration和cli的参数名称并不一致,这也是邪门的地方😂

CLI参数名称 Configuration File对应参数名称
join start_join
bind bind_addr
data-dir data_dir(下划线!)

参考:https://www.consul.io/docs/agent/options