consul–基础–03–配置参数


1、命令行选项

以下选项全部在命令行中指定

1.1、-advertise

  1. 通告地址
  2. 用于更改我们通告给集群中其他节点的地址。默认情况,-bind地址是通告的。但是,在某些情况下,可能存在无法绑定的可路由地址。如果此地址不可路由,则节点将处于持续振荡状态,因为其他节点会将非可路由性视为故障。

1.2、-advertise-wan

  1. 通告WAN地址,用于更改我们向通过WAN加入的服务器节点发布的地址。
  2. 可以与translate_wan_addrs配置选项结合使用,使用时在客户端代理上设置。
  3. 默认情况下,-advertise地址是通告的。但是,在某些情况下,所有数据中心的所有成员都不能位于同一个物理或虚拟网络上,尤其是混合云和专用数据中心的混合设置。该标志使服务器节点能够通过WAN的公共网络通信,同时使用专用VLAN来相互通信以及彼此的客户端agent,并且如果是远程数据中心,则允许客户端agent从远程数据中心访问时访问此配置地址translate_wan_addrs。

1.3、-bootstrap

  1. 该标志用于控制服务器是否处于"引导"模式。
  2. 不建议在引导群集后使用此标志。
  3. 如果数据中心只有1个server agent,那么需要设置该参数
  4. 每个数据中心,只有一个节点可以配置该参数,如果有多个参数配置该参数,那么难以保证一致性。因为多个节点能够自我选择

1.4、-bootstrap-expect

  1. 数据中心期望的server类型的节点个数
  2. 不能与bootstrap一起使用
  3. 此参数要么不配置,要么consul集群中所有的server均配置相同的值。
  4. 该参数是为了延迟选举启动,只有当consul集群中有效server agent的数目达到此数量时再进行选举,选举后,再引导集群启动
  5. bootstrap-expect=1:立即选择当前server为集群leader

1.5、-bind

  1. 用于指定节点所在的IP地址
  2. 是为内部集群通信绑定的地址
  3. 是集群中所有其他节点都应该可以访问的IP地址。
  4. 默认地址:“0.0.0.0”
    1. 这意味着Consul将绑定到本地计算机上的所有地址,并将 第1个可用的私有IPv4地址通告给群集的其余部分。
      1. 如果有多个私有IPv4地址可用,Consul将在启动时退出并出现错误。
    2. 如果你指定"[::]",将做通告第一个可用的公共IPv6地址。
      1. 如果有多个公共IPv6地址可用,则Consul将在启动时退出并出现错误。
  5. Consul同时使用TCP和UDP以及相同的端口。如果您有任何防火墙,请确保同时允许这两种协议。
  6. 可以将其设置为要绑定到的空间分隔的地址列表,或者可能会解析为多个地址的 go-sockaddr模板。

1.6、-serf-wan-bind

  1. 应该被绑定到 Serf WAN 八卦通信的地址。
  2. 默认情况:该值遵循与 -bind命令行标识 相同的规则,如果未指定该值,则使用-bind的值
  3. 可以设置为 go-sockaddr 模板

1.7、-serf-lan-bind

  1. Serf LAN八卦通信应该绑定的地址。
  2. 是集群中所有其他LAN节点都应该可以访问的IP地址
  3. 默认情况:该值遵循 与 -bind命令行标识 相同的规则,如果未指定该值,则使用-bind的值
  4. 可以设置为 go-sockaddr模板

1.8、-client

  1. consul服务侦听地址(允许哪些IP访问)
    1. 可以是HTTP、DNS、RPC服务器
  2. 默认为127.0.0.1
    1. 不对外提供服务
  3. 0.0.0.0
    1. 允许公网访问
  4. 可以设置为 要绑定到的空间分隔的地址列表
  5. 可以设置为 go-sockaddr 模板

1.9、-config-file

  1. 要加载的配置文件。
  2. 可以多次指定以加载多个配置文件。
    1. 如果指定了多次,稍后加载的配置文件将与先前加载的配置文件合并。
    2. 在配置合并期间,单值键(string,int,bool)将简单地将它们的值替换,而列表类型将被附加在一起。
  3. 配置文件中的信息是json

1.10、-config-dir

  1. 要加载的配置文件的目录,Consul将加载后缀为".json"的所有文件。
  2. 加载顺序
    1. 按字母顺序排列,并使用与上述config-file选项相同的合并例程 。
  3. 可以多次指定此选项以加载多个目录。
  4. 不加载config目录的子目录

1.11、-config-format

  1. 要加载的配置文件的格式。
  2. 默认格式:
    1. “.json”
    2. ".hcl
  3. 设置为"json"或"hcl",强制Consul解释任何带或不带扩展名的文件,以该格式解释。

1.12、-data-dir

  1. 为Agent存放状态数据
    1. server角色的Agent记录集群状态
    2. 所有agent 都要配置
  2. 该目录应该存放在持久存储中(防重启丢失)
    1. 这对于在服务器模式下运行的agent尤其重要,因为它们重启的时候能够保持群集状态。
  3. 该目录是支持文件锁:这意味着某些类型的已装入文件夹(例如VirtualBox共享文件夹)可能不合适。
  4. 注意
    1. 所有 agent都可以在此目录中存储ACL令牌,因此读取访问权限可以授予对服务器上的任何令牌的访问权限,并允许访问非服务器上的服务注册期间使用的任何令牌。
    2. 在基于Unix的平台上,这些文件使用0600权限编写,因此您应确保只有受信任的进程可以与Consul一样的用户身份执行。
    3. 在Windows上,您应确保该目录具有适当的权限配置,因为这些权限将被继承。

1.13、-datacenter

  1. 设置 运行 agent 程序的数据中心。
  2. 默认:dc1
  3. consul 支持多个数据中心,但它依赖于正确的配置。
  4. 同一个数据中心内的节点应该位于单个局域网中。

1.14、-dev

  1. 启用开发服务器模式。
    1. 所有数据都在内存中,不会将consul数据写入磁盘
    2. 启动快速
  2. 注意:
    1. 不适合生产使用,因为它不会将任何数据写入磁盘。

1.15、-disable-host-node-id

  1. 设置为true
    1. 将阻止Consul使用 主机的信息 生成确定性节点标识
    2. 将生成随机节点标识,该标识将保留在数据目录中。
    3. 好处:
      1. 在同一台主机上运行多个Consul agent 进行测试时,这非常有用。
  2. 默认:true
  3. 设置为false
    1. 您必须选择加入基于主机的ID。
    2. 基于主机的ID是使用https://github.com/shirou/gopsutil/tree/master/host生成的,与HashiCorp的Nomad共享 ,因此如果您选择加入基于主机的ID,则Consul和Nomad将使用信息在主机上在两个系统中自动分配相同的ID。

1.16、-disable-keyring-file

  1. 设置为true:
    1. 密钥环不会被保存到文件中
    2. 任何已安装的密钥在关机时将丢失,只有在给定的 -encrypt密钥在启动时可用。
  2. 默认:false。

1.17、-dns-port

  1. 侦听的DNS端口
  2. 默认端口:8600

1.18、-domain

  1. 默认情况
    1. Consul响应"consul"中的DNS查询域。
    2. 该标志可用于更改该域。
  2. 该域中的所有查询都假定由Consul处理,不会递归解决。

1.19、-enable-script-checks

  1. 允许通过配置文件和http api注册的服务,执行命令检查健康状态,类似开启心跳
  2. 默认:false

1.20、-encrypt

  1. 指定用于加密Consul网络流量的密钥
    1. 密钥必须是Base64编码的16字节。
    2. 创建加密密钥的方法:使用 consul keygen。
  2. 群集中的所有节点必须共享相同的加密密钥才能进行通信。
    1. 提供的密钥会自动保留到数据目录并在 agent 程序重新启动时自动加载。
  3. 这个选项只需要在每个 agent 的初始启动序列中提供一次。如果Consul在使用加密密钥初始化后提供,则忽略提供的密钥并显示警告。

1.21、-hcl

  1. HCL配置片段。
  2. 此HCL配置片段将附加到配置中,并允许在命令行上指定配置文件的全部选项。
  3. 该选项可以多次指定。

1.22、-http-port

  1. 监听的HTTP API端口。
  2. 默认端口:8500
  3. 好处
    1. 通过环境传递HTTP端口进行部署的时候,此选项非常有用
    2. 举例:CloudFoundry这样的PaaS,允许您通过Procfile直接设置端口

1.23、-join

  1. 作用:
    1. 当前server agent启动的时候,加入到另一位 server agent 的地址中
    2. 如果无法加入任何指定的地址, server agent 启动将失败。
    3. 可以指定多次,以指定多个 agent 加入。
  2. 默认情况
    1. agent 在启动时不会加入任何节点。
    2. 注意:retry_join在自动执行Consul集群部署时使用,可能更适合帮助缓解节点启动竞争条件。

1.24、-retry-join

  1. 类似于-join,第一次失败时候,允许重新连接。
  2. 使用场景
    1. 对于知道地址最终可用的情况很有用。
    2. 如果Consul正在非默认的Serf LAN端口上运行,则必须指定
  3. 该列表可以包含IPv4,IPv6或DNS地址。
  4. IPv6必须使用"括号"语法。
  5. 如果给出多个值,则按照列出的顺序尝试并重试它们,直到第一个成功为止。

案例

# Using a DNS entry
$ consul agent -retry-join "consul.domain.internal"

# Using IPv4
$ consul agent -retry-join "10.0.4.67"

# Using IPv6
$ consul agent -retry-join "[::1]:8301"

云端自动加入

从Consul 0.9.1开始,retry-join使用go-discover库接受使用云元数据进行自动集群加入的统一接口

# Using Cloud Auto-Joining
$ consul agent -retry-join "provider=aws tag_key=..."

1.25、-retry-interval

  1. 尝试加入的等待时间,也就是第一次加入失败后,等待X秒,在重新尝试加入
  2. 默认值:30秒。

1.26、-retry-max

  1. -join 尝试执行的最大尝试次数。
  2. 默认值:0,无限次重试。

1.27、-join-wan

  1. 作用
    1. 当前server agent启动的时候,加入到另一位 WAN agent 的地址中
    2. 可以指定多次,以指定要加入的多个WAN agent。
    3. 如果Consul无法加入任何指定的地址, agent 启动将失败。
  2. 默认情况:agent -join-wan启动时不会有任何节点。

1.28、-retry-join-wan

  1. 类似于-join-wan,第一次失败时候,允许重新连接。
  2. 使用场景
    1. 对于知道地址最终可用的情况很有用。
    2. 如果Consul正在非默认的Serf LAN端口上运行,则必须指定
  3. 该列表可以包含IPv4,IPv6或DNS地址。
  4. IPv6必须使用"括号"语法。
  5. 如果给出多个值,则按照列出的顺序尝试并重试它们,直到第一个成功为止。

1.29、-retry-interval-wan

  1. 尝试加入的等待时间,也就是第一次加入失败后,等待X秒,在重新尝试加入
  2. 默认值:30秒。

1.30、-retry-max-wan

  1. -join-wan 尝试执行的最大尝试次数。
  2. 默认值:0,无限次重试。

1.31、-log-level

  1. Consul agent 启动后显示的日志级别。
    1. info:默认
    2. trace
    3. debug
    4. warn
    5. err
  2. 可以通过consul monitor并使用任何日志级别连接到 agent 。
  3. 日志级别可以在配置重载期间更改。

1.32、-node

  1. 集群中此节点的名称。
  2. 名称必须是唯一的
  3. 默认节点名称:机器的主机名。

1.33、-node-id

  1. 节点ID
    1. 如果设置了:那么即使该节点的名称或地址的名称发生更改,该节点的ID不变。
    2. 如果没有设置:
      1. 那么 agent 将在启动时生成一个节点ID,并将其保存在数据目录中, 以便在 agent 重新启动时保持相同
      2. 如果可以,主机的信息将用于生成确定性节点ID,除非-disable-host-node-id设置为true。
  2. 值的形式
    1. 十六进制字符串的形式
    2. 长度为36个字符
    3. 举例:adf4238a-882b-9ddc-4a9d-5b6758e4159e

1.34、-node-meta

  1. 设置一个任意的元数据键/值对,与表单的节点相关联key:value。
  2. 可以指定多次
  3. 节点元数据对 有以下限制
    1. 每个节点最多可注册64个键/值对。
    2. 元数据密钥的长度必须介于1到128个字符(含)之间
    3. 元数据键只能包含字母数字-,和_字符。
    4. 元数据密钥不能以consul-前缀开头; 这是保留供内部使用的领事。
    5. 元数据值的长度必须介于0到512(含)之间。
    6. 开头的密钥的元数据值rfc1035-在DNS TXT请求中逐字编码,否则元数据kv对将根据RFC1464进行编码。

1.35、-pid-file

  1. 提供一个路径来存放pid文件
  2. 可以使用该文件进行SIGINT/SIGHUP(关闭/更新)agent

1.36、-protocol

  1. Consul协议版本
  2. 默认为最新版本。
  3. 作用范围:
    1. 只在升级时设置。
    2. 可以通过命令查看Consul支持的协议版本:consul -v。

1.37、-raft-protocol

  1. 用于 server agent 通信的内部版本的Raft一致性协议。
  2. 默认值:3
    1. 提供自动驾驶仪功能
    2. 但不包括cleanup_dead_servers。

1.38、-raft-snapshot-threshold

  1. raft执行快照,提交次数阈值。
    1. 一般不需要设置
    2. io密集型应用可以调高以减少磁盘IO,并最大限度地避免所有的节点同一时间快照。
    3. 如果此值过大,会造成相应日志文件变大,节点重启恢复会耗费更长时间。
  2. 默认值:16384

1.39、-raft-snapshot-interval

  1. 检查是否需要执行快照的时间间隔
  2. 默认30s
  3. 是一个很少需要改变的低级参数。

1.40、-recursor

  1. 指定上游DNS服务器的地址。
  2. 该选项可以提供多次,功能上与recursors配置选项等效。

1.41、-rejoin

使consul忽略先前的离开,在再次启动后仍旧尝试加入集群中。

1.42、-segment

  1. 仅限企业
  2. 此标志用于设置 agent 所属网段的名称。 agent 只能加入其网段内的其他 agent 并与其通信。
  3. 默认情况下,这是一个空字符串,它是默认的网段。

1.43、-server

  1. 定义agent运行在server模式还是Client模式
  2. 提供时即为Server端
  3. 每个集群至少有一个server并且每台机器上不要超过5个dataceter
  4. 所有服务器采用一致性算法Raft保证数据一致,确保在故障的情况下的可用性

1.44、-non-voting-server

  1. 仅限企业
  2. 用于使服务器不参与Raft仲裁,并使其仅接收数据复制流。
  3. 使用场景
    1. 在需要大量读取服务器的情况下,这可用于将读取可伸缩性添加到群集。

1.45、-syslog

  1. 开启系统日志功能
  2. 只在linux/osx上生效

1.46、-ui

启用内置的Web UI服务器

1.47、-ui-dir

  1. 提供存放web ui资源的路径,该目录必须是可读的
  2. 将自动启用Web UI。
  3. 从Consul版本0.7.0版本开始,不再需要此标志,仅指定-ui标志就足以启用Web UI。

2、配置文件

  1. 除了命令行选项之外,配置还可以放入文件中。
  2. 配置文件是JSON格式
  3. 配置文件不仅用于设置代理,还用于提供检查和服务定义。
示例配置文件
{
  "datacenter": "east-aws",
  "data_dir": "/opt/consul",
  "log_level": "INFO",
  "node_name": "foobar",
  "server": true,
  "watches": [
    {
        "type": "checks",
        "handler": "/usr/bin/health-check-handler.sh"
    }
  ],
  "telemetry": {
     "statsite_address": "127.0.0.1:2180"
  }
}
示例配置文件,带有TLS
{
  "datacenter": "east-aws",
  "data_dir": "/opt/consul",
  "log_level": "INFO",
  "node_name": "foobar",
  "server": true,
  "addresses": {
    "https": "0.0.0.0"
  },
  "ports": {
	# 除非https已为端口分配了端口号,否则Consul将不会为HTTP API启用TLS > 0
    "https": 8080
  },
  "key_file": "/etc/pki/tls/private/my.key",
  "cert_file": "/etc/pki/tls/certs/my.crt",
  "ca_file": "/etc/pki/tls/certs/ca-bundle.crt"
}

2.1、acl_datacenter

  1. 指定ACL数据中心。必须提供它才能启用ACL。
  2. 所有服务器和数据中心必须就ACL数据中心达成一致。将它设置在服务器上是集群级别强制执行所需的全部功能,但是为了使API正确地从客户端转发,它必须在其上进行设置。
  3. 可以实现ACL的代理级执行

2.2、acl_default_policy

  1. 默认策略在没有匹配规则时控制令牌的行为
  2. 值–“允许”:默认
    1. ACL是一个黑名单:允许任何未被明确禁止的操作
  3. 值–“否认”:
    1. ACL是白名单:任何未明确允许的操作都会被阻止
    2. 注意:在您设置acl_datacenter 为启用ACL支持之前,这不会生效。

2.3、acl_down_policy

  1. 如果无法从acl_datacenter或领导者节点读取令牌策略,则应用停机策略
  2. 值–“允许”:
    1. 允许所有操作
  3. 值–“拒绝”:
    1. 限制所有操作
  4. 值–“扩展缓存”:默认值
    1. 允许使用任何缓存ACL,忽略其TTL值
    2. 如果使用非缓存ACL,"extend-cache"就像"拒绝"一样。

2.4、acl_agent_master_token

  1. 用于访问需要代理读取(写入)权限的代理端点(节点)读取权限,即使Consul服务器不存在以验证任何令牌。
  2. 使用场景
    1. 只在运行中断时使用,应用程序通常会使用常规ACL令牌。
  3. 注意:只有在acl_enforce_version_8设置为true时才会使用

2.5、acl_agent_token

  1. 用于客户端和服务器执行内部操作。
  2. 如果没有指定,那么 acl_token将被使用
  3. 该令牌至少必须具有对其将注册的节点名称的写入访问权限,以便设置目录中的任何节点级别信息,例如元数据或节点的标记地址。

2.6、acl_enforce_version_8

  1. 用于客户端和服务器,以确定在Consul 0.8之前预览新ACL策略是否应该执行。
  2. 有助于在执行开始前允许策略就位,从而轻松过渡到新的ACL功能。
  3. 默认:true

2.7、acl_master_token

  1. 仅用于服务器acl_datacenter。
  2. 如果该令牌不存在,将使用管理级权限创建该令牌。
  3. 它允许运营商使用众所周知的令牌ID引导ACL系统。

2.8、acl_replication_token

  1. 仅用于acl_datacenter服务器。
  2. 如果提供,这将启用使用此令牌的ACL复制来检索ACL并将其复制到非权威本地数据中心。
  3. 可以启用ACL复制enable_acl_replication ,然后使用每台服务器上的代理令牌API设置令牌。如果acl_replication_token在配置中设置,它将自动设置enable_acl_replication为true以实现向后兼容。
  4. 如果存在影响授权数据中心的分区或其他中断,并且 acl_down_policy设置为"extend-cache",则可以使用复制的ACL集在中断期间解析不在缓存中的令牌。

2.9、acl_token

  1. 如果提供,代理向Consul服务器发出请求时将使用此令牌。
    1. 通过提供"?token"查询参数,客户端可以基于每个请求重写此令牌。
  2. 如果未提供,则会使用映射到"匿名"ACL策略的空令牌。

2.10、acl_ttl

  1. 用于控制ACL的生存时间缓存。
  2. 默认:30秒。
  3. 此设置会对性能产生重大影响:
      1. 减少刷新次数
    1. 由于缓存不会主动失效,所以ACL策略可能会过时到TTL值。

2.11、addresses

  1. 一个允许设置绑定地址的嵌套对象。
  2. 可以设置为要绑定的空间分隔的地址列表
  3. 可以将可以解析为多个地址的go-sockaddr模板设置为空格分隔列表。
  4. http支持绑定到Unix域套接字。
    1. 套接字可以在表单中指定unix:///path/to/socket。
    2. 一个新的域套接字将在给定的路径上创建。
    3. 如果指定的文件路径已经存在,Consul将尝试清除该文件并在其位置创建域套接字。
    4. 套接字文件的权限可以通过unix_socketsconfig结构调整。
  5. 在Unix套接字接口上运行Consul agent命令时,使用 -http-addr参数指定套接字的路径。
  6. 对于TCP地址,变量值应该是端口的IP地址。例如:10.0.0.1:8500而不是10.0.0.1。但是,ports在配置文件中定义端口时,端口将在结构中单独设置。
  7. 以下键有效:
    1. dns:DNS服务器。默认为client_addr
    2. http:HTTP API。默认为client_addr
    3. https:HTTPS API。默认为client_addr

2.12、advertise_addr

等同于-advertise命令行标识。

2.13、serf_wan

等同于-serf-wan-bind命令行标识。

2.14、serf_lan

等同于-serf-lan-bind命令行标识。

2.15、advertise_addr_wan

等同于-advertise-wan命令行标识。

2.16、autopilot

允许设置多个子键,这些子键可以为Consul服务器配置操作友好的设置。

具体子键如下

2.16.1、cleanup_dead_servers

  1. 可以控制定期和每当将新服务器添加到群集时自动删除已死的服务器节点。
  2. 默认:true。

2.16.2、last_contact_threshold

  1. 在被认为不健康之前,控制服务器在没有与领导联系的情况下可以走的最长时间。
    1. 必须是持续时间值,例如10s。
  2. 默认:200ms。

2.16.3、max_trailing_logs

  1. 控制服务器在被认为不健康之前可以跟踪领导者的最大日志条目数
  2. 默认:250。

2.16.4、server_stabilization_time

  1. 在添加到集群之前,控制服务器在"健康"状态下必须稳定的最短时间。只有当所有服务器运行Raft协议版本3或更高时才会生效。必须是持续时间值,例如30s。
  2. 默认:10s。

2.16.5、redundancy_zone_tag

  1. 仅限企业
  2. -node-meta当Autopilot将服务器分为多个区域进行冗余时,这将控制使用的密钥。每个区域中只有一台服务器可以同时成为投票成员。如果留空(默认),则此功能将被禁用。

2.16.6、disable_upgrade_migration

  1. 仅限企业
  2. 如果设置为true,此设置将禁用Consul Enterprise中的Autopilot升级迁移策略,等待足够的新版本服务器添加到群集,然后再将其中的任何一个升级为选民。
  3. 默认:false。

2.17、bootstrap

等同于 -bootstrap命令行标识。

2.18、bootstrap_expect

等同于-bootstrap-expect命令行标识。

2.19、bind_addr

等同于 -bind命令行标识。

2.20、ca_file

  1. 为证书颁发机构提供了一个文件路径。
  2. 用于使用适当的verify_incoming或verify_outgoing标志检查客户端和服务器连接的真实性。

2.21、ca_path

  1. 为证书颁发机构提供了文件目录的路径。
  2. 用于使用适当的verify_incoming或verify_outgoing标志检查客户端和服务器连接的真实性

2.22、cert_file

  1. 为证书颁发机构提供了一个文件路径
  2. 证书提供给客户或服务器来验证代理的真实性。它必须随同提供key_file。

2.23、check_update_interval

  1. 控制稳定状态的检查输出频率 与 服务器同步的频率。
  2. 默认值:5分钟
  3. 许多处于稳定状态的检查会导致每次运行的输出略有不同(时间戳等),从而导致不断的写入。该配置允许推迟检查输出的同步,以减少给定时间间隔的写入压力。如果更改状态,则新状态和相关输出立即同步。
  4. 要禁用此行为,请将该值设置为"0s"。

2.24、client_addr

等同于 -client命令行标识。

2.25、datacenter

等同于 -datacenter命令行标识。

2.26、data_dir

等同于 -data-dir命令行标识。

2.27、disable_anonymous_signature

  1. 禁止使用更新检查提供匿名签名以进行重复数据删除
  2. 看disable_update_check。

2.28、disable_host_node_id

等同于-disable-host-node-id命令行标识。

2.29、disable_remote_exec

  1. 禁用对远程执行的支持。
  2. 设置为true:代理将忽略任何传入的远程exec请求

2.30、disable_update_check

  1. 禁用自动检查安全公告和新版本发布
  2. 在Consul Enterprise中被禁用。

2.31、discard_check_output

  1. 在存储之前丢弃健康检查的输出。
  2. 这减少了健康检查具有易失性输出(如时间戳,进程ID,…)的环境中Consul raft日志的写入次数。

2.32、discovery_max_stale

  1. 为所有服务发现HTTP端点启用陈旧请求。这相当于max_staleDNS请求的 配置。
  2. 默认值:0
    1. 则将所有服务发现HTTP端点转发给领导者。
  3. 值大于零:
    1. 则任何Consul服务器都可以处理服务发现请求。如果领队服务器超过领导者discovery_max_stale,则将对领导者重新评估该查询以获得更多最新结果。
    2. Consul代理还会添加一个新的 X-Consul-Effective-Consistency响应标头,用于指示代理是否执行了陈旧的读取。

2.33、dns_config

  1. 允许设置多个可以调节DNS查询服务的子密钥。
  2. 以下子键可用:

2.33.1、allow_stale

  1. 启用DNS信息的陈旧查询。
  2. 允许任何Consul服务器而不仅仅是领导者来服务请求。
  3. 好处:
    1. 可以通过Consul服务器获得线性读取可扩展性
  4. 值–false:
    1. 意味着所有请求都由领导者提供服务,从而提供更强的一致性,但吞吐量更低,延迟更高
  5. 值–true:默认

2.33.2、max_stale

  1. 什么时候allow_stale 被指定,这是用来限制陈旧结果被允许的。
  2. 如果领队服务器超过领导者max_stale,则将对领导者重新评估该查询以获得更多最新结果。
  3. 默认值:10年
    1. 这有效地允许任何服务器回答DNS查询,不管它多么陈旧。实际上,服务器通常只比领导者短几毫秒,所以这可以让Consul在没有领导者可以选举的长时间停工场景中继续提供请求。

2.33.3、node_ttl

  1. 默认值:0s
    1. 因此所有节点查找均以0 TTL值提供服务。
    2. 0"s"表示秒
    3. 0"m"表示分钟
  2. 通过设置此值可以启用节点查找的DNS缓存。

2.33.4、service_ttl

  1. 允许使用每项服务策略设置TTL服务查找的子对象。
  2. 当没有特定的服务可用于服务时,可以使用"*"通配符服务。
  3. 默认情况下,所有服务均以0 TTL值提供服务。
  4. 通过设置此值可启用服务查找的DNS缓存。

2.33.5、enable_truncate

  1. 值–true:
    1. 将返回超过3条记录或超过适合有效UDP响应的UDP,DNS查询将设置截断标志,指示客户端应使用TCP重新查询以获得满载记录集。
  2. 值–false:

2.33.6、only_passing

  1. 值–true:
    1. 任何健康检查警告或严重的节点将被排除在DNS结果之外
  2. 值–false:
    1. 默认情况下,只有健康检查失败的节点将被排除。对于服务查找,会考虑节点自身的运行状况检查以及特定于服务的检查。例如,如果某个节点的健康状况检查非常重要,则该节点上的所有服务都将被排除,因为它们也被视为关键。
2.33.7、recursor_timeout
  1. Consul在递归查询上游DNS服务器时使用的超时
  2. 默认值:2s

2.33.8、disable_compression

  1. true:不会压缩DNS响应。
  2. false:
    1. 默认
    2. 启用DNS压缩

2.33.9、a_record_limit

  1. 限制A,AAAA或ANY DNS响应(包括TCP和UDP)中包含的资源记录数。
  2. 默认:无限制
  3. 此限制不适用于SRV记录

2.34、domain

等同于 -domain命令行标识。

2.35、enable_acl_replication

  1. true:启用ACL复制而不必通过设置复制令牌acl_replication_token
  2. false:启用ACL复制,然后在每台服务器上使用代理令牌API引入令牌。

2.36、enable_agent_tls_for_checks

  1. true:
    1. 使用代理人的TLS配置的一个子集(key_file,cert_file,ca_file,ca_path,和 server_name),以建立HTTP客户端的HTTP健康检查。
    2. 允许使用代理的凭证检查需要双向TLS的服务。
  2. 默认:false。

2.37、enable_debug

  1. true:启用一些额外的调试功能。
  2. 仅用于设置运行时要分析HTTP端点。

2.38、enable_script_checks

等同于 -enable-script-checks命令行标识。

2.39、enable_syslog

等同于 -syslog命令行标识。

2.40、encrypt

等同于 -encrypt命令行标识。

2.41、encrypt_verify_incoming

  1. 这是一个可选参数,可用于禁用对输入八卦执行加密,以便在正在运行的群集上从未加密的文件升级到加密的八卦。
  2. 默认:true。

2.42、encrypt_verify_outgoing

  1. 是一个可选参数,用于禁用强制执行传出八卦的加密,以便在正在运行的群集上从未加密的文件转换为加密的八卦文件。
  2. 默认:true。

2.43、disable_keyring_file

相当于 -disable-keyring-file命令行标识。

2.44、key_file

  1. 这提供了一个私钥的文件路径
  2. 密钥与证书一起用于验证代理的真实性。这必须随同提供cert_file。

2.45、http_config

  1. 允许为HTTP API设置选项。
  2. 以下子键可用:

2.45.1、block_endpoints

  1. 在代理程序上阻止的HTTP API端点
    1. 与此列表中的一个条目具有共同前缀的任何端点将被阻止,并且在访问时将返回403响应代码。
    2. 只适用于API端
  2. 默认:空列表,表示所有端点都不阻止
  3. 案例1:
    1. 为了阻断所有V1 ACL端点,此设定为 [“/v1/acl”],这将阻止/v1/acl/create,/v1/acl/update以及与开始其它ACL端点/v1/acl。

2.45.2、response_headers

  1. 允许向HTTP API响应头部添加属性
  2. 例如,可以使用以下配置在HTTP API端点上启用 CORS:

    {
      "http_config": {
        "response_headers": {
          "Access-Control-Allow-Origin": "*"
        }
      }
    }

2.46、leave_on_terminate

  1. 如果启用,当代理收到TERM信号时,它将向Leave群集的其余部分发送消息并正常离开。
  2. 代理是是客户端模式情况:默认值为true
  3. 代理是是服务器模式情况:默认值为false

2.47、limits

  1. 这是一个嵌套对象,用于配置代理执行的限制。
  2. 这只适用于客户端模式的代理,而不是Consul服务器。
  3. 以下参数可用:

2.47.1、rpc_rate

  1. 通过将此代理允许为Consul服务器发出的RPC请求的最大请求速率设置为每秒请求数,配置RPC速率限制器。
  2. 默认:不限制

2.47.2、rpc_max_burst

  1. 用于对RPC速率限制器进行再次限制的令牌桶的大小。
  2. 默认:1000个令牌,并且每个令牌都适用于对Consul服务器的单个RPC调用。

2.48、log_level

等同于 -log-level命令行标识。

2.49、node_id

等同于 -node-id命令行标识。

2.50、node_name

等同于 -node命令行标识。

2.51、node_meta

允许将任意元数据键/值对与本地节点相关联,然后可用于过滤某些目录端点的结果。

  {
    "node_meta": {
        "instance_type": "t2.medium"
    }
  }

2.52、performance

  1. 这是一个嵌套对象,允许调整Consul中不同子系统的性能。
  2. 以下参数可用:

2.52.1、leave_drain_time

  1. 规定了 Server节点优雅退出的时间,允许在退出时间过来的请求,重试到其他Consul Server节点。
  2. 在正常情况下,这可以防止客户端在执行consul服务器的滚动更新时遇到“no leader”错误。
  3. 默认为5s。

2.52.2、raft_multiplier

  1. Consul服务器用于缩放关键Raft时序参数的整数乘数。
  2. 忽略此值或将其设置为0会使用下面介绍的默认时序。
  3. 较低的值用于拉紧时序并增加灵敏度
  4. 较高的值则用于放松时序并降低灵敏度。
  5. 进行此调整会影响Consul检测领导者故障和执行领导者选举所花费的时间,但需要更多的网络和CPU资源才能获得更好的性能。
  6. 默认值:5
  7. 值范围
    1. 1到10
    2. 1表示:把Raft配置为其最高性能模式

2.52.3、rpc_hold_timeout

  1. 客户或服务器在领导者选举期间将重试内部RPC请求的持续时间。
  2. 在正常情况下,这可以防止客户遇到"无领导者"的错误。
  3. 默认:7秒。

2.53、ports

  1. 是一个嵌套对象
  2. 允许为以下键设置绑定端口

2.53.1、dns

  1. DNS服务器
  2. -1:禁用
  3. 默认:8600

2.53.2、http

  1. HTTP API
  2. -1:禁用
  3. 默认:8500

2.53.3、https

  1. HTTPS API
  2. 默认:-1(禁用)。

2.53.4、serf_lan

  1. Serf LAN端口
  2. 默认:8301

2.53.5、serf_wan

  1. Serf WAN端口
  2. 默认:8302
  3. -1:禁用:将禁用不推荐的WAN联合。各种目录和广域网相关端点将返回错误或空的结果。

2.53.6、server

  1. 服务器RPC地址
  2. 默认:8300。

2.54、protocol

等同于 -protocol命令行标识。

2.55、raft_protocol

等同于 -raft-protocol命令行标识。

2.56、raft_snapshot_threshold

等同于 -raft-snapshot-threshold命令行标识。

2.57、raft_snapshot_interval

等同于 -raft-snapshot-interval命令行标识。

2.58、reconnect_timeout

  1. 控制从集群中彻底删除发生故障的节点需要多长时间。
  2. 默认值:72小时
  3. 该值是一个带单位后缀的时间
    1. “s”:秒
    2. “m”:分钟
    3. “h”:小时
  4. 该值必须> = 8小时。
  5. 该值建议设置为至少为节点或网络分区的预期可恢复的最大停机时间的两倍。
  6. 警告:将此时间设置得太低可能会导致Consul服务器在扩展节点故障或分区过程中从法定数中删除,这可能会使群集恢复复杂化。

2.59、reconnect_timeout_wan

  1. 这是reconnect_timeout参数的WAN等效项
  2. 用于控制从WAN池中完全删除发生故障的服务器所需的时间。
  3. 默认:72小时
  4. 该值必须> = 8小时。

2.60、recursors

  1. 提供用于递归解析查询(如果它们不在Consul的服务域内)的上游DNS服务器的地址。例如,节点可以直接使用Consul作为DNS服务器,并且如果该记录不在"领事"范围内。查询将在上游解决。
  2. 从Consul 1.0.1开始,递归可以作为IP地址或go-sockaddr模板提供。IP地址按顺序解析,重复项被忽略。

2.61、rejoin_after_leave

等同于-rejoin命令行标识。

2.62、retry_join

相当于-retry-join命令行标识。

2.63、retry_interval

等同于 -retry-interval命令行标识。

2.64、retry_join_wan

等同于 -retry-join-wan命令行标识。每次尝试加入广域网地址列表,retry_interval_wan直到至少有一个加入工作。

2.65、retry_interval_wan

等同于 -retry-interval-wan命令行标识。

2.66、segment(仅限企业)

等同于 -segment命令行标识。

2.67、segments(仅限企业)

  1. 这是一个嵌套对象列表,它允许设置网段的绑定/通告信息。
  2. 这只能在服务器上设置

2.67.1、name

  1. 名称。
  2. 必须是长度介于1到64个字符之间的字符串。

2.67.2、bind

  1. 用于分组的八卦图层的绑定地址。
  2. -bind如果未提供,则缺省为该值。

2.67.3、port

用于细分的八卦图层的端口(必需)。

2.67.4、advertise

  1. 用于分组的八卦图层的广告地址。
  2. -advertise如果未提供,则缺省为该值。

2.67.5、rpc_listener

  1. 值为true:则会在rpc端口上的该段地址上启动单独的RPC侦听器。只有段的绑定地址与地址不同时才有效
  2. 默认:false。

2.68、server

等同于 -server命令行标识。

2.69、non_voting_server

等同于 -non-voting-server命令行标识。

2.70、server_name

  1. 提供时,将覆盖 node_name TLS证书。
  2. 可以用来确保证书名称与我们声明的主机名相匹配。

2.71、session_ttl_min

  1. 允许的最小会话TTL。
  2. 确保会话不会在TTL小于指定的限制时创建。
  3. 建议将此限制保持在默认值以上,以鼓励客户发送频繁的心跳。
  4. 默认:10秒。

2.72、skip_leave_on_interrupt

  1. 类似于leave_on_terminate但仅影响中断处理。
  2. 当Consul收到一个中断信号(比如在终端上打Control-C)时,Consul会优雅地离开集群。将其设置为true禁用该行为。
  3. 此功能的默认行为根据代理是否作为客户端或服务器运行而不同
    1. 在客户端模式下的代理上,默认:false
      1. 客户端上的Ctrl-C将优雅地离开
    2. 服务器模式下的代理,并且默认:true
      1. 服务器上的Ctrl-C将服务器保留在群集中

2.73、start_join-join

  1. 启动时指定节点地址的字符串数组。
  2. 注意,retry_join在自动执行Consul集群部署时,使用 可能更适合帮助缓解节点启动竞争条件。

2.74、start_join_wan

-join-wan启动时指定WAN节点地址的字符串数组。

2.75、telemetry

这是一个嵌套对象,用于配置Consul发送其运行时遥测的位置,并包含以下键:

2.75.1、circonus_api_token

  1. 用于创建/管理支票的有效API令牌。
  2. 如果提供,则启用度量标准管理。

2.75.2、circonus_api_app

  1. 与API令牌关联的有效应用名称。
  2. 默认情况下,它被设置为"consul"。

2.75.3、circonus_api_url

  1. 用于联系Circonus API的基本URL。
  2. 默认情况下,它被设置为" https://api.circonus.com/v2 "。

2.75.4、circonus_submission_interval

  1. 指标提交给Circonus的时间间隔。
  2. 默认情况下,它被设置为"10s"(十秒)。

2.75.5、circonus_submission_url

check.config.submission_url来自先前创建的HTTPTRAP检查的Check API对象 的字段。

2.75.6、circonus_check_id

  1. 从先前创建的HTTPTRAP检查中 检查ID(不检查包)。
  2. check._cidCheck API对象中字段的数字部分。

2.75.7、circonus_check_force_metric_activation

  1. 强制激活已存在且当前未激活的度量标准。
  2. 如果启用了支票管理,则默认行为是在遇到新的指标时添加新指标。如果该指标已经存在于支票中,则不会被激活。此设置将覆盖该行为。
  3. 默认情况下,它被设置为false。

2.75.8、circonus_check_instance_id

  1. 唯一标识来自此实例的度量标准。
  2. 当它们在基础架构内移动时,它可用于维护度量连续性,即瞬态或短暂实例。
  3. 默认情况下,它被设置为主机名:应用程序名称(例如"host123:consul")。

2.75.9、circonus_check_search_tag

  1. 一个特殊的标签,当与实例ID结合使用时,有助于在未提供提交URL或检查ID时缩小搜索结果的范围。
  2. 默认情况下,它被设置为service:application name(例如"service:consul")。

2.75.11、circonus_check_display_name

  1. 指定一个名称以在创建时进行检查。
  2. 该名称显示在Circonus UI Checks列表中

2.75.11、circonus_check_tags

  1. 用逗号分隔的附加标签列表在创建时添加到支票中

2.75.12、circonus_broker_id

  1. 创建新支票时使用的特定Circonus Broker的ID。
  2. broker._cid Broker API对象中字段的数字部分。如果启用指标管理并且未提供提交URL和检查ID,则将尝试使用实例ID和搜索标记搜索现有检查。如果找不到,则会创建一个新的HTTPTRAP检查。
  3. 默认情况下,不会使用此选项,并选择随机企业代理或默认的Circonus Public Broker。

2.75.13、circonus_broker_select_tag

  1. 当未提供经纪人代码时,将使用特殊标签选择Circonus经纪人。这个最好的用途是作为代理应该基于针对所使用的提示,其中该特定的实例正在运行(例如一个特定的地理位置或数据中心,DC:SFO)。
  2. 默认情况下,这是留空,不使用。

2.75.14、disable_hostname

  1. 这将控制是否在计算机主机名的前面加上运行时间遥测
  2. 默认:false。

2.75.15、dogstatsd_addr

  1. 这提供了格式中DogStatsD实例的地址host:port。
  2. DogStatsD是statsd协议兼容的风格,增加了用标签和事件信息修饰指标的功能。
  3. 如果提供,领事将发送各种遥测信息到该实例进行聚合。这可以用来捕获运行时信息。

2.75.16、dogstatsd_tags

  1. 这提供了将被添加到发送到DogStatsD的所有遥测包的全局标签列表。
  2. 它是一个字符串列表,其中每个字符串看起来像"my_tag_name:my_tag_value"。

2.75.17、filter_default

  1. 这将控制是否允许过滤器未指定的度量标准。
  2. 值为:true(默认):这将允许在没有提供过滤器时的所有指标。
  3. 值为:false:不使用过滤器,则不会发送指标。

2.75.18、metrics_prefix

  1. 写入所有遥测数据时使用的前缀。
  2. 默认情况下,它被设置为"consul"。

2.75.19、prefix_filter

  1. 这是一个过滤规则列表
  2. 适用于通过前缀允许/屏蔽指标,格式如下:
[
  "+consul.raft.apply",
  "-consul.http",
  "+consul.http.GET"
]
  1. 前导" + "将使用给定前缀的任何度量标准
  2. 前导" - "将阻止它们。
  3. 如果两个规则之间有重叠,则更具体的规则优先。
  4. 如果多次列出相同的前缀,则阻塞将优先。

2.75.20、prometheus_retention_time

  1. 如果该值大于0s(缺省值),则可以使Prometheus导出度量标准。持续时间可以使用持续时间语义来表示,并将在指定的时间内汇总所有计数器(这可能会影响Consul的内存使用情况)。
  2. 使用prometheus获取指标然后可以使用/v1/agent/metrics?format=prometheus URL 执行,或者通过发送值为Accept的Accept头来text/plain; version=0.0.4; charset=utf-8 执行 /v1/agent/metrics
  3. 格式与普罗米修斯本身兼容
  4. 在此模式下运行时,建议启用此选项disable_hostname以避免使用主机名的前缀度量标准。

2.75.21、statsd_address

  1. 这以格式提供statsd实例的地址host:port。
  2. 如果提供,领事将发送各种遥测信息到该实例进行聚合。这可以用来捕获运行时信息。这仅发送UDP数据包,可以与statsd或statsite一起使用。

2.75.22、statsite_address

  1. 这提供了格式中的一个statsite实例的地址host:port。
  2. 如果提供,领事将汇集各种遥测信息到该实例。这可以用来捕获运行时信息。这通过TCP流,只能用于statsite。

2.76、syslog_facility

  1. 控制向哪个设施发送消息
  2. 默认情况下,LOCAL0将被使用。

2.77、tls_min_version

  1. 指定了TLS的最低支持版本。
  2. 接受的值是"tls10",“tls11"或"tls12”。
  3. 默认:“tls12”。
  4. 警告:TLS 1.1及更低版本通常被认为不太安全

2.78、tls_cipher_suite

  1. 它将支持的密码组列表指定为逗号分隔列表。
  2. 源代码中提供了所有支持的密码套件列表。

2.79、tls_prefer_server_cipher_suites

  1. 这将导致Consul更喜欢服务器的密码套件而不是客户端密码套件。

2.80、translate_wan_addrs

  1. 如果设置为true,Consul 在为远程数据中心中的节点提供DNS和HTTP请求时,会优先使用配置的WAN地址。这允许使用其本地地址在其自己的数据中心内访问该节点,并使用其WAN地址从其他数据中心到达该节点,这在混合网络的混合设置中很有用。
  2. 默认:false

2.81、ui

相当于-ui 命令行标识。

2.82、unix_sockets

  1. 可以调整Consul创建的Unix域套接字文件的所有权和权限。
  2. 只有在HTTP地址配置了unix://前缀时才使用域套接字。
  3. 注意
    1. 这个选项可能对不同的操作系统有不同的影响。Linux通常会观察套接字文件权限,而许多BSD变体会忽略套接字文件本身的权限。在特定的发行版上测试此功能非常重要。
    2. 此功能目前在Windows主机上无法使用。

以下选项在此构造内有效,并全面应用于Consul创建的所有套接字:

2.82.1、user

将拥有套接字文件的用户的名称或ID。

2.82.2、group

套接字文件的组ID标识。该选项目前仅支持数字ID。

2.82.3、mode

在文件上设置的权限位。

2.83、verify_incoming

  1. 如果设置为true,Consul要求所有传入连接都使用TLS,并且客户端提供证书颁发机构从ca_fileor中签名的证书ca_path。这适用于服务器RPC和HTTPS API。
  2. 默认情况下,这是错误的,Consul不会强制使用TLS或验证客户的真实性。

2.84、verify_incoming_rpc

  1. 如果设置为true,Consul要求所有传入的RPC连接都使用TLS,并且客户端提供由证书颁发机构从ca_fileor中签名的证书ca_path。
  2. 默认情况下,这是错误的,Consul不会强制使用TLS或验证客户的真实性。

2.85、verify_incoming_https

  1. 如果设置为true,则Consul要求所有传入的HTTPS连接都使用TLS,并且客户端提供由证书颁发机构从ca_fileor中签名的证书ca_path。
  2. 默认情况下,这是错误的,Consul不会强制使用TLS或验证客户的真实性。
  3. 要启用HTTPS API,您必须通过ports配置定义HTTPS端口。默认情况下,HTTPS被禁用。

2.86、verify_outgoing

  1. 如果设置为true,则Consul要求所有传出连接都使用TLS,并且服务器提供由证书颁发机构从ca_fileor中签名的证书ca_path。
  2. 默认情况下,这是错误的,Consul不会使用TLS进行传出连接。
  3. 这适用于客户端和服务器,因为两者都会建立传出连接。

2.87、verify_server_hostname

  1. 如果设置为true,则Consul会验证所有传出连接,即服务器提供的TLS证书与"server。。"主机名匹配。这意味着verify_outgoing。
  2. 默认情况下,这是错误的,并且Consul不验证证书的主机名,只验证它是由受信任的CA签署的。此设置对于防止受损客户端作为服务器重新启动很重要,从而能够执行MITM攻击或添加为Raft对等设备。

2.88、watches

Watches是手表规范的列表,允许在更新特定数据视图时自动调用外部进程

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐