如下选项所有在命令行中指定。javascript
-advertise
- 通告地址用于更改咱们通告给集群中其余节点的地址。默认状况下,-bind
地址是通告的。可是,在某些状况下,可能存在没法绑定的可路由地址。这个标志使闲聊不一样的地址来支持这一点。若是此地址不可路由,则节点将处于持续振荡状态,由于其余节点会将非可路由性视为故障。在Consul 1.0和更高版本中,这能够设置为 go-sockaddr 模板。html
-advertise-wan
- 广告WAN地址用于更改咱们向经过WAN加入的服务器节点发布的地址。这也能够在与translate_wan_addrs
配置选项结合使用时在客户端代理上设置。默认状况下,-advertise
地址是通告的。可是,在某些状况下,全部数据中心的全部成员都不能位于同一个物理或虚拟网络上,尤为是混合云和专用数据中心的混合设置。该标志使服务器节点可以经过WAN的公共网络闲聊,同时使用专用VLAN来相互闲聊以及彼此的客户端代理,而且若是远程数据中心是远程数据中心,则容许客户端代理在从远程数据中心访问时访问此地址配置translate_wan_addrs
。在Consul 1.0和更高版本中,这能够设置为 go-sockaddr 模板java
-bootstrap
- 该标志用于控制服务器是否处于“引导”模式。每一个数据中心最多只能运行一个服务器,这一点很重要。从技术上讲,一个处于引导模式的服务器能够自我选择为Raft领导者。只有一个节点处于这种模式很是重要; 不然,一致性不能保证,由于多个节点可以自我选择。不建议在引导群集后使用此标志。node
-bootstrap-expect
- 此标志提供数据中心中预期服务器的数量。不该该提供此值,或者该值必须与群集中的其余服务器一致。提供时,Consul会等待指定数量的服务器可用,而后引导群集。这容许初始领导者自动选举。这不能与遗留-bootstrap
标志结合使用。该标志须要-server
模式。git
-bind
- 应为内部集群通讯绑定的地址。这是集群中全部其余节点都应该能够访问的IP地址。默认状况下,这是“0.0.0.0”,这意味着Consul将绑定到本地计算机上的全部地址,并将 第一个可用的私有IPv4地址通告给群集的其他部分。若是有多个私有IPv4地址可用,Consul将在启动时退出并出现错误。若是你指定“[::]”,领事将 作广告第一个可用的公共IPv6地址。若是有多个公共IPv6地址可用,则Consul将在启动时退出并出现错误。Consul同时使用TCP和UDP以及相同的端口。若是您有任何防火墙,请确保同时容许这两种协议。在Consul 1.0和更高版本中,能够将其设置为要绑定到的空间分隔的地址列表,或者可能会解析为多个地址的 go-sockaddr模板。github
-serf-wan-bind
- 应该被绑定到Serf WAN八卦通讯的地址。默认状况下,该值遵循与-bind
命令行标志相同的规则,若是未指定该值,-bind
则使用该选项。这在Consul 0.7.1及更高版本中可用。在Consul 1.0和更高版本中,这能够设置为 go-sockaddr 模板算法
-serf-lan-bind
- Serf LAN八卦通讯应该绑定的地址。这是群集中全部其余LAN节点应可访问的IP地址。默认状况下,该值遵循与-bind
命令行标志相同的规则,若是未指定该值,-bind
则使用该选项。这在Consul 0.7.1及更高版本中可用。在Consul 1.0和更高版本中,这能够设置为 go-sockaddr模板docker
-client
- Consul将绑定客户端接口的地址,包括HTTP和DNS服务器。默认状况下,这是“127.0.0.1”,只容许回送链接。在Consul 1.0和更高版本中,能够将其设置为要绑定到的空间分隔的地址列表,或者 可能会解析为多个地址的 go-sockaddr模板。shell
-config-file
- 要加载的配置文件。有关此文件格式的更多信息,请阅读配置文件部分。该选项能够屡次指定以加载多个配置文件。若是指定了屡次,稍后加载的配置文件将与先前加载的配置文件合并。在配置合并期间,单值键(string,int,bool)将简单地将它们的值替换,而列表类型将被附加在一块儿。json
-config-dir
- 要加载的配置文件的目录。Consul将加载后缀为“.json”的全部文件。加载顺序是按字母顺序排列的,并使用与上述config-file
选项相同的合并例程 。能够屡次指定此选项以加载多个目录。不加载config目录的子目录。有关配置文件格式的更多信息,请参阅 配置文件部分。
-config-format
- 要加载的配置文件的格式。一般,Consul会从“.json”或“.hcl”扩展名检测配置文件的格式。将此选项设置为“json”或“hcl”强制Consul解释任何带或不带扩展名的文件,以该格式解释。
-data-dir
- 此标志为代理存储状态提供了一个数据目录。这对全部代理都是必需的。该目录在从新启动时应该是持久的。这对于在服务器模式下运行的代理尤为重要,由于它们必须可以保持群集状态。此外,该目录必须支持使用文件系统锁定,这意味着某些类型的已装入文件夹(例如VirtualBox共享文件夹)可能不合适。注意:服务器和非服务器代理均可以在此目录中的状态下存储ACL令牌,所以读取访问权限能够授予对服务器上的任何令牌的访问权限,并容许访问非服务器上的服务注册期间使用的任何令牌。在基于Unix的平台上,这些文件使用0600权限编写,所以您应确保只有受信任的进程能够与Consul同样的用户身份执行。在Windows上,您应确保该目录具备适当的权限配置,由于这些权限将被继承。
-datacenter
- 此标志控制运行代理程序的数据中心。若是未提供,则默认为“dc1”。Consul对多个数据中心拥有一流的支持,但它依赖于正确的配置。同一个数据中心内的节点应该位于单个局域网中。
-dev
- 启用开发服务器模式。这对于在关闭全部持久性选项的状况下快速启动Consul代理很是有用,从而启用可用于快速原型开发或针对API进行开发的内存服务器。此模式不适合生产使用,由于它不会将任何数据写入磁盘。
-disable-host-node-id
- 将此设置为true将阻止Consul使用来自主机的信息生成肯定性节点标识,并将生成随机节点标识,该标识将保留在数据目录中。在同一台主机上运行多个Consul代理进行测试时,这很是有用。Consul在版本0.8.5和0.8.5以前缺省为false,所以您必须选择加入基于主机的ID。基于主机的ID是使用https://github.com/shirou/gopsutil/tree/master/host生成的,与HashiCorp的Nomad共享 ,所以若是您选择加入基于主机的ID,则Consul和Nomad将使用信息在主机上在两个系统中自动分配相同的ID。
-disable-keyring-file
- 若是设置,密钥环不会被保存到文件中。任何已安装的密钥在关机时将丢失,只有在给定的 -encrypt
密钥在启动时可用。这默认为false。
-dns-port
- 侦听的DNS端口。这将覆盖默认端口8600.这在Consul 0.7和更高版本中可用。
-domain
- 默认状况下,Consul响应“consul”中的DNS查询。域。该标志可用于更改该域。该域中的全部查询都假定由Consul处理,不会递归解决。
-enable-script-checks
这将控制是否在此代理上启用执行脚本的运行情况检查,而且默认为false
运营商必须选择容许这些脚本。若是启用,建议启用ACL以控制容许哪些用户注册新的检查以执行脚本。这是在Consul 0.9.0中添加的。
-encrypt
- 指定用于加密Consul网络流量的密钥。该密钥必须是Base64编码的16字节。建立加密密钥的最简单方法是使用 consul keygen
。群集中的全部节点必须共享相同的加密密钥才能进行通讯。提供的密钥会自动保留到数据目录并在代理程序从新启动时自动加载。这意味着为了加密Consul的闲话协议,这个选项只须要在每一个代理的初始启动序列中提供一次。若是Consul在使用加密密钥初始化后提供,则忽略提供的密钥并显示警告。
-hcl
- HCL配置片断。此HCL配置片断将附加到配置中,并容许在命令行上指定配置文件的所有选项。该选项能够屡次指定。这是在Consul 1.0中添加的。
-http-port
- 要监听的HTTP API端口。这覆盖了默认端口8500.当将Consul部署到经过环境传递HTTP端口的环境时,此选项很是有用,例如像CloudFoundry这样的PaaS,容许您经过Procfile直接设置端口。
-join
- 启动时加入的另外一位代理的地址。这能够指定屡次以指定多个代理加入。若是Consul没法加入任何指定的地址,代理启动将失败。默认状况下,代理在启动时不会加入任何节点。请注意,retry_join
在自动执行Consul集群部署时,使用 可能更适合帮助缓解节点启动竞争条件。
在Consul 1.1.0和更高版本中,这能够设置为 go-sockaddr 模板
-retry-join
- 相似于-join
第一次尝试失败时容许重试链接。这对于知道地址最终可用的状况颇有用。该列表能够包含IPv4,IPv6或DNS地址。在Consul 1.1.0和更高版本中,这能够设置为 go-sockaddr 模板。若是Consul正在非默认的Serf LAN端口上运行,则必须指定。IPv6必须使用“括号”语法。若是给出多个值,则按照列出的顺序尝试并重试它们,直到第一个成功为止。这里有些例子:
# 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=..."
-retry-interval
- 加入尝试之间的等待时间。默认为30秒。
-retry-max
- -join
在退出代码1以前尝试执行的最大尝试次数。默认状况下,它设置为0,将其解释为无限次重试。
-join-wan
- 启动时加入的另外一个WAN代理的地址。能够指定屡次以指定要加入的多个WAN代理。若是Consul没法加入任何指定的地址,代理启动将失败。默认状况下,代理-join-wan
启动时不会有任何节点。
在Consul 1.1.0和更高版本中,这能够设置为 go-sockaddr 模板。
-retry-join-wan
- 与retry-join
第一次尝试失败时容许重试wan链接相似。这对于咱们知道地址最终可用的状况颇有用。截至领事0.9.3 云支持自动加入。
在Consul 1.1.0和更高版本中,这能够设置为 go-sockaddr 模板
-retry-interval-wan
- 两次-join-wan
尝试之间的等待时间。默认为30秒。
-retry-max-wan
- -join-wan
在退出代码1以前尝试执行的最大尝试次数。默认状况下,它设置为0,将其解释为无限次重试。
-log-level
- Consul代理启动后显示的日志级别。这默认为“信息”。可用的日志级别是“跟踪”,“调试”,“信息”,“警告”和“错误”。您始终能够经过consul monitor
并使用任何日志级别链接到代理。另外,日志级别能够在配置重载期间更改。
-node
- 集群中此节点的名称。这在集群内必须是惟一的。默认状况下,这是机器的主机名。
-node-id
- 在Consul 0.7.3及更高版本中可用,即便节点或地址的名称发生更改,该节点仍然是该节点的惟一标识符。这必须采用十六进制字符串的形式,长度为36个字符,例如 adf4238a-882b-9ddc-4a9d-5b6758e4159e
。若是未提供(最多见的状况),那么代理将在启动时生成一个标识符,并将其保存在数据目录中, 以便在代理从新启动时保持相同。若是可能,主机的信息将用于生成肯定性节点ID,除非-disable-host-node-id
设置为true。
-node-meta
- 在Consul 0.7.3及更高版本中可用,这指定了一个任意的元数据键/值对,与表单的节点相关联key:value
。这能够指定屡次。节点元数据对具备如下限制:
-
,和_
字符。consul-
前缀开头; 这是保留供内部使用的领事。rfc1035-
在DNS TXT请求中逐字编码,不然元数据kv对将根据RFC1464进行编码。-pid-file
- 此标志为代理存储其PID提供文件路径。这对发送信号颇有用(例如,SIGINT
关闭代理或SIGHUP
更新检查肯定
-protocol
- 要使用的Consul协议版本。这默认为最新版本。这应该只在升级时设置。您能够经过运行查看Consul支持的协议版本consul -v
。
-raft-protocol
- 它控制用于服务器通讯的内部版本的Raft一致性协议。必须将其设置为3才能访问自动驾驶仪功能,但不包括cleanup_dead_servers
。Consul 1.0.0及更高版本默认为3(之前默认为2)。有关 详细信息,请参阅 Raft协议版本兼容性。
-raft-snapshot-threshold
- 这将控制保存到磁盘的快照之间的最小数量的木筏提交条目。这是一个不多须要更改的低级参数。遇到磁盘IO过多的很是繁忙的群集可能会增长此值以减小磁盘IO,并最大限度地减小全部服务器同时进行快照的机会。因为日志会变得更大而且raft.db文件中的空间直到下一个快照才能被回收,因此增长这一点会使磁盘空间与磁盘IO之间的交易关闭。若是因为须要重播更多日志而致使服务器崩溃或故障切换时间延长,服务器可能须要更长时间才能恢复。在Consul 1.1.0和更高版本中,这个默认值为16384,在以前的版本中它被设置为8192。
-raft-snapshot-interval
- 控制服务器检查是否须要将快照保存到磁盘的频率。他是一个不多须要改变的低级参数。遇到磁盘IO过多的很是繁忙的群集可能会增长此值以减小磁盘IO,并最大限度地减小全部服务器同时进行快照的机会。因为日志会变得更大而且raft.db文件中的空间直到下一个快照才能被回收,因此增长这一点会使磁盘空间与磁盘IO之间的交易关闭。若是因为须要重播更多日志而致使服务器崩溃或故障切换时间延长,服务器可能须要更长时间才能恢复。在Consul 1.1.0及更高版本中,这个默认设置为30s
,而且在以前的版本中设置为5s
。
-recursor
- 指定上游DNS服务器的地址。该选项能够提供屡次,功能上与recursors
配置选项等效。
-rejoin
- 提供时,领事将忽略先前的休假,并在开始时尝试从新加入集群。默认状况下,Consul将休假视为永久意图,而且在启动时不会再尝试加入集群。该标志容许先前的状态用于从新加入群集。
-segment
- (仅限企业)此标志用于设置代理所属网段的名称。代理只能加入其网段内的其余代理并与其通讯。有关更多详细信息,请参阅网络细分指南。默认状况下,这是一个空字符串,它是默认的网段。
-server
- 此标志用于控制代理是否处于服务器或客户端模式。提供时,代理将充当领事服务器。每一个Consul集群必须至少有一个服务器,理想状况下每一个数据中心不超过5个。全部服务器都参与Raft一致性算法,以确保事务以一致的,可线性化的方式进行。事务修改全部服务器节点上维护的集群状态,以确保节点发生故障时的可用性。服务器节点还参与其余数据中心中服务器节点的WAN八卦池。服务器充当其余数据中心的网关,并根据须要转发流量。
-non-voting-server
- (仅限企业)此标志用于使服务器不参与Raft仲裁,并使其仅接收数据复制流。在须要大量读取服务器的状况下,这可用于将读取可伸缩性添加到群集。
-syslog
- 该标志启用记录到系统日志。这仅在Linux和OSX上受支持。若是在Windows上提供,将会致使错误。
-ui
- 启用内置的Web UI服务器和所需的HTTP路由。这消除了将Consul Web UI文件与二进制文件分开维护的须要。
-ui-dir
- 此标志提供包含Consul的Web UI资源的目录。这将自动启用Web UI。目录必须对代理可读。从Consul版本0.7.0及更高版本开始,Web UI资产包含在二进制文件中,所以再也不须要此标志; 仅指定-ui
标志就足以启用Web UI。指定'-ui'和'-ui-dir'标志将致使错误。
除了命令行选项以外,配置还能够放入文件中。在某些状况下,这可能更容易,例如使用配置管理系统配置Consul时。
配置文件是JSON格式的,使得它们易于被人类和计算机读取和编辑。该配置被格式化为一个单独的JSON对象,并在其中进行配置。
配置文件不只用于设置代理,还用于提供检查和服务定义。这些用于向其余群集宣布系统服务器的可用性。它们分别在检查配置和 服务配置下分别记录。服务和检查定义支持在从新加载期间进行更新。
{ "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" } }
{ "datacenter": "east-aws", "data_dir": "/opt/consul", "log_level": "INFO", "node_name": "foobar", "server": true, "addresses": { "https": "0.0.0.0" }, "ports": { "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" }
尤为请参阅ports
设置的使用:
"ports": { "https": 8080 }
除非https
已为端口分配了端口号,不然Consul将不会为HTTP API启用TLS > 0
。
acl_datacenter
- 这指定了对ACL信息具备权威性的数据中心。必须提供它才能启用ACL。全部服务器和数据中心必须就ACL数据中心达成一致。将它设置在服务器上是集群级别强制执行所需的所有功能,可是为了使API正确地从客户端转发,它必须在其上进行设置。在Consul 0.8和更高版本中,这也能够实现ACL的代理级执行。有关更多详细信息,请参阅ACL指南。
acl_default_policy
- “容许”或“否定”; 默认为“容许”。默认策略在没有匹配规则时控制令牌的行为。在“容许”模式下,ACL是一个黑名单:容许任何未被明确禁止的操做。在“拒绝”模式下,ACL是白名单:任何未明确容许的操做都会被阻止。注意:在您设置acl_datacenter
为启用ACL支持以前,这不会生效。
acl_down_policy
- “容许”,“拒绝”或“扩展缓存”; “扩展缓存”是默认值。若是没法从令牌acl_datacenter
或领导者节点读取令牌策略,则应用停机策略。在“容许”模式下,容许全部操做,“拒绝”限制全部操做,“扩展缓存”容许使用任何缓存ACL,忽略其TTL值。若是使用非缓存ACL,“extend-cache”就像“拒绝”同样。
acl_agent_master_token
- 用于访问须要代理读取或写入权限的代理端点或节点读取权限,即便Consul服务器不存在以验证任何令牌。这应该只在运行中断时使用,应用程序一般会使用常规ACL令牌。这是在Consul 0.7.2中添加的,只有在acl_enforce_version_8
设置为true 时才会使用 。有关更多详细信息,请参阅 ACL Agent Master Token。
acl_agent_token
- 用于客户端和服务器执行内部操做。若是没有指定,那么 acl_token
将被使用。这是在领事0.7.2中添加的。
该令牌至少必须具备对其将注册的节点名称的写入访问权限,以便设置目录中的任何节点级别信息,例如元数据或节点的标记地址。还有其余地方使用了这个令牌,请参阅ACL代理令牌 了解更多详情。
acl_enforce_version_8
- 用于客户端和服务器,以肯定在Consul 0.8以前预览新ACL策略是否应该执行。在Consul 0.7.2中添加,Consul版本在0.8以前默认为false,在Consul 0.8和更高版本中默认为true。这有助于在执行开始前容许策略就位,从而轻松过渡到新的ACL功能。有关更多详细信息,请参阅ACL指南。
acl_master_token
- 仅用于服务器acl_datacenter
。若是该令牌不存在,将使用管理级权限建立该令牌。它容许运营商使用众所周知的令牌ID引导ACL系统。
在acl_master_token
当服务器获取集群领导只安装。若是您想要安装或更改acl_master_token
,请acl_master_token
在全部服务器的配置中设置新值。一旦完成,从新启动当前领导者以强制领导人选举。若是acl_master_token
未提供,则服务器不会建立主令牌。当你提供一个值时,它能够是任何字符串值。使用UUID将确保它看起来与其余标记相同,但并不是绝对必要。
acl_replication_token
- 仅用于acl_datacenter
运行Consul 0.7或更高版本之外的服务器。若是提供,这将启用使用此令牌的ACL复制来检索ACL并将其复制到非权威本地数据中心。在Consul 0.9.1及更高版本中,您能够启用ACL复制enable_acl_replication
,而后使用每台服务器上的代理令牌API设置令牌。若是acl_replication_token
在配置中设置,它将自动设置enable_acl_replication
为true以实现向后兼容。
若是存在影响受权数据中心的分区或其余中断,而且 acl_down_policy
设置为“extend-cache”,则可使用复制的ACL集在中断期间解析不在缓存中的令牌。有关更多详细信息,请参阅 ACL指南复制部分。
acl_token
- 提供时,代理向Consul服务器发出请求时将使用此令牌。经过提供“?token”查询参数,客户端能够基于每一个请求重写此令牌。若是未提供,则会使用映射到“匿名”ACL策略的空令牌。
acl_ttl
- 用于控制ACL的生存时间缓存。默认状况下,这是30秒。此设置会对性能产生重大影响:减小刷新次数会增长刷新次数,同时减小刷新次数。可是,因为缓存不会主动失效,因此ACL策略可能会过期到TTL值。
addresses
- 这是一个容许设置绑定地址的嵌套对象。在Consul 1.0和更高版本中,这些能够设置为要绑定的空间分隔的地址列表 ,也能够将能够解析为多个地址的go-sockaddr模板设置为空格分隔列表。
http
支持绑定到Unix域套接字。套接字能够在表单中指定unix:///path/to/socket
。一个新的域套接字将在给定的路径上建立。若是指定的文件路径已经存在,Consul将尝试清除该文件并在其位置建立域套接字。套接字文件的权限能够经过unix_sockets
config结构调整。
在Unix套接字接口上运行Consul agent命令时,使用 -http-addr
参数指定套接字的路径。您也能够将所需的值放在CONSUL_HTTP_ADDR
环境变量中。
对于TCP地址,变量值应该是端口的IP地址。例如:10.0.0.1:8500
而不是10.0.0.1
。可是,ports
在配置文件中定义端口时,端口将在结构中单独设置 。
如下键有效:
autopilot
在Consul 0.8中增长的这个对象容许设置多个子键,这些子键能够为Consul服务器配置操做友好的设置。有关自动驾驶仪的更多信息,请参阅自动驾驶仪指南。
如下子键可用:
cleanup_dead_servers
- 这能够控制按期和每当将新服务器添加到群集时自动删除已死的服务器节点。默认为true
。last_contact_threshold
- 在被认为不健康以前,控制服务器在没有与领导联系的状况下能够走的最长时间。必须是持续时间值,例如10s
。默认为200ms
。max_trailing_logs
- 控制服务器在被认为不健康以前能够跟踪领导者的最大日志条目数。默认为250。server_stabilization_time
- 在添加到集群以前,控制服务器在“健康”状态下必须稳定的最短期。只有当全部服务器运行Raft协议版本3或更高时才会生效。必须是持续时间值,例如30s
。默认为10s
。redundancy_zone_tag
- (仅限企业)-node-meta
当Autopilot将服务器分为多个区域进行冗余时,这将控制使用的密钥。每一个区域中只有一台服务器能够同时成为投票成员。若是留空(默认),则此功能将被禁用。disable_upgrade_migration
- (仅限企业)若是设置为true
,此设置将禁用Consul Enterprise中的Autopilot升级迁移策略,等待足够的新版本服务器添加到群集,而后再将其中的任何一个升级为选民。默认为false
。bind_addr
等同于 -bind
命令行标志。
ca_file
这为PEM编码的证书颁发机构提供了一个文件路径。证书颁发机构用于使用适当的verify_incoming
或 verify_outgoing
标志检查客户端和服务器链接的真实性。
ca_path
这提供了PEM编码证书颁发机构文件目录的路径。这些证书颁发机构用于检查具备适当verify_incoming
或 verify_outgoing
标志的客户端和服务器链接的真实性。
cert_file
这提供了一个PEM编码证书的文件路径。证书提供给客户或服务器来验证代理的真实性。它必须随同提供key_file
。
check_update_interval
此间隔控制检查稳定状态检查的输出与服务器同步的频率。默认状况下,它被设置为5分钟(“5米”)。许多处于稳定状态的检查会致使每次运行的输出略有不一样(时间戳等),从而致使不断的写入。该配置容许推迟检查输出的同步,以减小给定时间间隔的写入压力。若是支票更改状态,则新状态和相关输出当即同步。要禁用此行为,请将该值设置为“0s”。
disable_anonymous_signature
禁止使用更新检查提供匿名签名以进行重复数据删除。看disable_update_check
。
disable_remote_exec
禁用对远程执行的支持。设置为true时,代理将忽略任何传入的远程exec请求。在0.8版以前的Consul版本中,这个默认为false。在Consul 0.8中,默认值更改成true,以使远程exec选择加入而不是选择退出。
disable_update_check
禁用自动检查安全公告和新版本发布。这在Consul Enterprise中被禁用。
discard_check_output
在存储以前丢弃健康检查的输出。这减小了健康检查具备易失性输出(如时间戳,进程ID,...)的环境中Consul raft日志的写入次数。
discovery_max_stale
- 为全部服务发现HTTP端点启用陈旧请求。这至关于max_stale
DNS请求的 配置。若是此值为零(默认值),则将全部服务发现HTTP端点转发给领导者。若是此值大于零,则任何Consul服务器均可以处理服务发现请求。若是领队服务器超过领导者discovery_max_stale
,则将对领导者从新评估该查询以得到更多最新结果。Consul代理还会添加一个新的 X-Consul-Effective-Consistency
响应标头,用于指示代理是否执行了陈旧的读取。discover-max-stale
在Consul 1.0.7中引入,做为Consul操做员在代理级别强制来自客户端的陈旧请求的方式,默认值为0,与先前Consul版本中的默认一致性行为相匹配。dns_config
此对象容许设置多个能够调节DNS查询服务的子密钥。有关更多详细信息,请参阅DNS缓存指南 。
如下子键可用:
allow_stale
- 启用DNS信息的陈旧查询。这容许任何Consul服务器而不只仅是领导者来服务请求。这样作的好处是您能够经过Consul服务器得到线性读取可扩展性。在0.7以前的Consul版本中,默认为false,意味着全部请求都由领导者提供服务,从而提供更强的一致性,但吞吐量更低,延迟更高。在Consul 0.7及更高版本中,为了更好地利用可用服务器,默认为true。max_stale
- 何时allow_stale
被指定,这是用来限制陈旧结果被容许的。若是领队服务器超过领导者max_stale
,则将对领导者从新评估该查询以得到更多最新结果。在领事0.7.1以前,这默认为5秒; 在Consul 0.7.1和更高版本中,默认为10年(“87600h”),这有效地容许任何服务器回答DNS查询,无论它多么陈旧。实际上,服务器一般只比领导者短几毫秒,因此这可让Consul在没有领导者能够选举的长时间停工场景中继续提供请求。node_ttl
- 默认状况下,这是“0”,所以全部节点查找均以0 TTL值提供服务。经过设置此值能够启用节点查找的DNS缓存。这应该用“s”后缀表示第二个或“m”表示分钟。service_ttl
- 这是一个容许使用每项服务策略设置TTL服务查找的子对象。当没有特定的服务可用于服务时,可使用“*”通配符服务。默认状况下,全部服务均以0 TTL值提供服务。经过设置此值可启用服务查找的DNS缓存。enable_truncate
- 若是设置为true,则将返回超过3条记录或超过适合有效UDP响应的UDP DNS查询将设置截断标志,指示客户端应使用TCP从新查询以得到满载记录集。only_passing
- 若是设置为true,任何健康检查警告或严重的节点将被排除在DNS结果以外。若是为false,则默认状况下,只有健康检查失败的节点将被排除。对于服务查找,会考虑节点自身的运行情况检查以及特定于服务的检查。例如,若是某个节点的健康情况检查很是重要,则该节点上的全部服务都将被排除,由于它们也被视为关键。recursor_timeout
- Consul在递归查询上游DNS服务器时使用的超时。查看recursors
更多细节。缺省值是2s。这在Consul 0.7和更高版本中可用。disable_compression
- 若是设置为true,则不会压缩DNS响应。Consul 0.7中默认添加并启用了压缩。udp_answer_limit
- 限制包含在基于UDP的DNS响应的答案部分中的资源记录数。此参数仅适用于小于512字节的UDP DNS查询。此设置已弃用,并由Consul 1.0.7替换a_record_limit
。a_record_limit
- 限制A,AAAA或ANY DNS响应(包括TCP和UDP)答案部分中包含的资源记录数。在回答问题时,Consul将使用匹配主机的完整列表,随机随机洗牌,而后限制答案的数量a_record_limit
(默认:无限制)。此限制不适用于SRV记录。在实施和实施RFC 3484第6节规则9的环境中(即DNS答案老是被排序并所以决不是随机的),客户端可能须要设置该值1
以保留预期的随机分配行为(注意: RFC 3484已被过期 RFC 6724,所以它应该愈来愈不常见,须要用现代的解析器来改变这个值)。
domain
等同于 -domain
命令行标志。
enable_acl_replication
在Consul服务器上设置时,启用ACL复制而没必要经过设置复制令牌acl_replication_token
。相反,启用ACL复制,而后在每台服务器上使用代理令牌API引入令牌。查看acl_replication_token
更多细节。
enable_agent_tls_for_checks
当设置时,使用代理人的TLS配置的一个子集(key_file
,cert_file
,ca_file
,ca_path
,和 server_name
),以创建HTTP客户端的HTTP健康检查。这容许使用代理的凭证检查须要双向TLS的服务。这是在Consul 1.0.1中添加的,默认为false。
enable_debug
设置后,启用一些额外的调试功能。目前,这仅用于设置运行时概要分析HTTP端点。
encrypt
等同于 -encrypt
命令行标志。
encrypt_verify_incoming
- 这是一个可选参数,可用于禁用对输入八卦执行加密,以便在正在运行的群集上从未加密的文件升级到加密的八卦。有关更多信息,请参阅此部分。默认为true。
encrypt_verify_outgoing
- 这是一个可选参数,可用于禁用强制执行传出八卦的加密,以便在正在运行的群集上从未加密的文件转换为加密的八卦文件。有关更多信息,请参阅此部分。默认为true。
key_file
这提供了一个PEM编码私钥的文件路径。密钥与证书一块儿用于验证代理的真实性。这必须随同提供cert_file
。
http_config
该对象容许为HTTP API设置选项。
如下子键可用:
block_endpoints
此对象是要在代理程序上阻止的HTTP API端点前缀的列表,默认为空列表,表示全部端点都已启用。与此列表中的一个条目具备共同前缀的任何端点将被阻止,而且在访问时将返回403响应代码。例如,为了阻断全部V1 ACL端点,此设定为 ["/v1/acl"]
,这将阻止/v1/acl/create
,/v1/acl/update
以及与开始其它ACL端点/v1/acl
。这只适用于API端点,而不是,/ui
或者 /debug
必须禁用它们各自的配置选项。任何使用禁用端点的CLI命令都将再也不起做用。对于更通用的访问控制,Consul的ACL系统应该被使用,可是这个选项对于彻底去除对HTTP API端点的访问是有用的,或者对特定的代理来讲是很是有用的。这在Consul 0.9.0及更高版本中可用。response_headers
该对象容许向HTTP API响应添加标题。例如,可使用如下配置在HTTP API端点上启用 CORS:
{ "http_config": { "response_headers": { "Access-Control-Allow-Origin": "*" } } }
leave_on_terminate
若是启用,当代理收到TERM信号时,它将向Leave
群集的其他部分发送消息并正常离开。此功能的默认行为根据代理是否做为客户端或服务器运行而不一样(在Consul 0.7以前默认值被无条件设置为false
)。在客户端模式下的代理程序中,默认为true
服务器模式的代理程序,对于服务器模式中的代理程序,缺省为false
。
limits
在Consul 0.9.3及更高版本中可用,这是一个嵌套对象,用于配置代理执行的限制。目前,这只适用于客户端模式的代理,而不是Consul服务器。如下参数可用:
rpc_rate
- 经过将此代理容许为Consul服务器发出的RPC请求的最大请求速率设置为每秒请求数,配置RPC速率限制器。默认为无限,这会禁用速率限制。rpc_max_burst
- 用于对RPC速率限制器进行再充电的令牌桶的大小。默认为1000个令牌,而且每一个令牌都适用于对Consul服务器的单个RPC调用。有关 令牌桶速率限制器如何操做的更多详细信息,请参阅https://en.wikipedia.org/wiki/Token_bucket。node_id
等同于 -node-id
命令行标志。
node_name
等同于 -node
命令行标志。
node_meta
可用于Consul 0.7.3及更高版本,此对象容许将任意元数据键/值对与本地节点相关联,而后可用于过滤某些目录端点的结果。有关更多信息,请参阅 -node-meta
命令行标志。
{ "node_meta": { "instance_type": "t2.medium" } }
performance
在Consul 0.7和更高版本中可用,这是一个嵌套对象,容许调整Consul中不一样子系统的性能。请参阅服务器性能指南获取更多详细信息 如下参数可用:
leave_drain_time
- 服务器在优雅休假期间居住的时间,以便容许对其余Consul服务器重试请求。在正常状况下,这能够防止客户在执行Consul服务器滚动更新时遇到“无领导者”错误。这是在Consul 1.0中添加的。必须是持续时间值,例如10秒。默认为5秒。raft_multiplier
- Consul服务器用于缩放关键Raft时间参数的整数乘法器。忽略该值或将其设置为0将使用下面描述的默认时间。较低的值用于收紧时间并提升灵敏度,而较高的值用于放松时间并下降灵敏度。调整这会影响Consul检测领导者失败并执行领导者选举所花的时间,但须要更多的网络和CPU资源才能得到更好的性能。
默认状况下,Consul将使用适用于最小Consul服务器的较低性能时序,当前至关于将此值设置为5(此默认值可能会在将来版本的Consul中进行更改,具体取决于目标最小服务器配置文件是否更改)。将此值设置为1会将Raft配置为其最高性能模式,至关于Consul在0.7以前的默认时间,而且建议用于生产Consul服务器。有关调整此参数的更多详细信息,请参阅上次接触时间的说明。最大容许值是10。
rpc_hold_timeout
- 客户或服务器在领导者选举期间将重试内部RPC请求的持续时间。在正常状况下,这能够防止客户遇到“无领导者”的错误。这是在Consul 1.0中添加的。必须是持续时间值,例如10秒。默认为7秒。
ports
这是一个嵌套对象,容许为如下键设置绑定端口:
reap
这将控制Consul的子进程自动收集,若是Consul在Docker容器中以PID 1的形式运行,这将很是有用。若是没有指定,则Consul会自动收集子进程,若是它检测到它正在以PID 1运行。若是设置为true或false,则不管Consul的PID如何,它都会控制收割(强制分别开启或关闭) 。Consul 0.7.1中删除了该选项。对于Consul的更高版本,您将须要使用包装器收获流程,请参阅 Consul Docker图像入口点脚本 以获取示例。若是您使用的是Docker 1.13.0或更高版本,则可使用该命令的新--init
选项,docker run
而且docker将启用PID 1的初始化进程,以便为容器收集子进程。有关Docker文档的更多信息。
reconnect_timeout
这将控制从集群中完全删除发生故障的节点须要多长时间。默认值为72小时,建议将其设置为至少为节点或网络分区的预期可恢复的最大停机时间的两倍。警告:将此时间设置得过低可能会致使Consul服务器在扩展节点故障或分区过程当中从法定数中删除,这可能会使群集恢复复杂化。该值是一个带单位后缀的时间,能够是秒,分钟或小时的“s”,“m”,“h”。该值必须> = 8小时。
reconnect_timeout_wan
这是reconnect_timeout
参数的WAN等效项,用于控制从WAN池中彻底删除发生故障的服务器所需的时间。这也默认为72小时,而且必须> 8小时。
recursors
此标志提供用于递归解析查询(若是它们不在Consul的服务域内)的上游DNS服务器的地址。例如,节点能够直接使用Consul做为DNS服务器,而且若是该记录不在“领事”范围内。域,查询将在上游解决。从Consul 1.0.1开始,递归能够做为IP地址或go-sockaddr模板提供。IP地址按顺序解析,重复项被忽略。
retry_join
- 至关于-retry-join
命令行标志。
retry_join_wan
等同于 -retry-join-wan
命令行标志。每次尝试加入广域网地址列表,retry_interval_wan
直到至少有一个加入工做。
segment
(仅限企业)等同于 -segment
命令行标志。
segments
(仅限企业)这是一个嵌套对象列表,它容许设置网段的绑定/通告信息。这只能在服务器上设置。有关更多详细信息,请参阅 网络细分指南。
name
- 细分受众群的名称。必须是长度介于1到64个字符之间的字符串。bind
- 用于分组的八卦图层的绑定地址。-bind
若是未提供,则缺省为该值。port
- 用于细分的八卦图层的端口(必需)。advertise
- 用于分组的八卦图层的广告地址。-advertise
若是未提供,则缺省为该值。rpc_listener
- 若是为true,则会-bind
在rpc端口上的该段地址上启动单独的RPC侦听器。只有段的绑定地址与地址不一样时才有效 -bind
。默认为false。server
等同于 -server
命令行标志。
server_name
提供时,将覆盖node_name
TLS证书。它能够用来确保证书名称与咱们声明的主机名相匹配。
session_ttl_min
容许的最小会话TTL。这确保会话不会在TTL小于指定的限制时建立。建议将此限制保持在默认值以上,以鼓励客户发送频繁的心跳。默认为10秒。
skip_leave_on_interrupt
这相似于leave_on_terminate
但仅影响中断处理。当Consul收到一个中断信号(好比在终端上打Control-C)时,Consul会优雅地离开集群。将其设置为true
禁用该行为。此功能的默认行为根据代理是否做为客户端或服务器运行而不一样(在Consul 0.7以前默认值被无条件设置为false
)。在客户端模式下的代理上,默认为false
服务器模式下的代理,而且默认为true
(即服务器上的Ctrl-C将服务器保留在群集中,所以是仲裁,而且客户端上的Ctrl-C将优雅地离开)。
start_join
-join
启动时指定节点地址的字符串数组。请注意,retry_join
在自动执行Consul集群部署时,使用 可能更适合帮助缓解节点启动竞争条件。
start_join_wan
-join-wan
启动时指定WAN节点地址的字符串数组。
telemetry
这是一个嵌套对象,用于配置Consul发送其运行时遥测的位置,并包含如下键:
circonus_api_token
用于建立/管理支票的有效API令牌。若是提供,则启用度量标准管理。circonus_api_app
与API令牌关联的有效应用名称。默认状况下,它被设置为“consul”。circonus_api_url
用于联系Circonus API的基本URL。默认状况下,它被设置为“ https://api.circonus.com/v2 ”。circonus_submission_interval
指标提交给Circonus的时间间隔。默认状况下,它被设置为“10s”(十秒)。circonus_submission_url
check.config.submission_url
来自先前建立的HTTPTRAP检查的Check API对象 的字段。circonus_check_id
从先前建立的HTTPTRAP检查中 检查ID(不检查包)。check._cid
Check API对象中字段的数字部分。circonus_check_force_metric_activation
强制激活已存在且当前未激活的度量标准。若是启用了支票管理,则默认行为是在遇到新的指标时添加新指标。若是该指标已经存在于支票中,则不会被激活。此设置将覆盖该行为。默认状况下,它被设置为false。circonus_check_instance_id
惟一标识来自此实例的度量标准。当它们在基础架构内移动时,它可用于维护度量连续性,即瞬态或短暂实例。默认状况下,它被设置为主机名:应用程序名称(例如“host123:consul”)。circonus_check_search_tag
一个特殊的标签,当与实例ID结合使用时,有助于在未提供提交URL或检查ID时缩小搜索结果的范围。默认状况下,它被设置为service:application name(例如“service:consul”)。circonus_check_display_name
指定一个名称以在建立时进行检查。该名称显示在Circonus UI Checks列表中。可用于Consul 0.7.2及更高版本。circonus_check_tags
用逗号分隔的附加标签列表在建立时添加到支票中。可用于Consul 0.7.2及更高版本。circonus_broker_id
建立新支票时使用的特定Circonus Broker的ID。broker._cid
Broker API对象中字段的数字部分。若是启用指标管理而且未提供提交URL和检查ID,则将尝试使用实例ID和搜索标记搜索现有检查。若是找不到,则会建立一个新的HTTPTRAP检查。默认状况下,不会使用此选项,并选择随机企业代理或默认的Circonus Public Broker。circonus_broker_select_tag
当未提供经纪人代码时,将使用特殊标签选择Circonus经纪人。这个最好的用途是做为代理应该基于针对所使用的提示,其中该特定的实例正在运行(例如一个特定的地理位置或数据中心,DC:SFO)。默认状况下,这是留空,不使用。disable_hostname
这将控制是否在计算机主机名的前面加上运行时间遥测,默认为false。dogstatsd_addr
这提供了格式中DogStatsD实例的地址host:port
。DogStatsD是statsd协议兼容的风格,增长了用标签和事件信息修饰指标的功能。若是提供,领事将发送各类遥测信息到该实例进行聚合。这能够用来捕获运行时信息。dogstatsd_tags
这提供了将被添加到发送到DogStatsD的全部遥测包的全局标签列表。它是一个字符串列表,其中每一个字符串看起来像“my_tag_name:my_tag_value”。filter_default
这将控制是否容许过滤器未指定的度量标准。默认为true
,这将容许在没有提供过滤器时的全部指标。若是设置为false
不使用过滤器,则不会发送指标。metrics_prefix
写入全部遥测数据时使用的前缀。默认状况下,它被设置为“consul”。这是在Consul 1.0中添加的。对于以前版本的Consul,使用statsite_prefix
相同结构中的配置选项。因为此前缀适用于全部遥测提供商,所以它已从新命名为Consul 1.0,而不只仅是statsite。prefix_filter
这是一个过滤规则列表,适用于经过前缀容许/屏蔽指标,格式以下:
[ "+consul.raft.apply", "-consul.http", "+consul.http.GET" ]
前导的“ + ”将使用给定前缀的任何度量标准,而且前导“ - ”将阻止它们。若是两个规则之间有重叠,则更具体的规则优先。若是屡次列出相同的前缀,则阻塞将优先。
prometheus_retention_time 若是该值大于0s
(缺省值),则可使Prometheus导出度量标准。持续时间可使用持续时间语义来表示,并将在指定的时间内汇总全部计数器(这可能会影响Consul的内存使用状况)。此参数的价值至少是普罗米修斯刮擦间隔的2倍,但您也可能须要很长的保留时间,例如几天(例如744h才能保留至31天)。使用prometheus获取指标而后可使用/v1/agent/metrics?format=prometheus
URL 执行,或者经过发送值为Accept的Accept头来text/plain; version=0.0.4; charset=utf-8
执行/v1/agent/metrics
(如普罗米修斯所作的那样)。格式与普罗米修斯自己兼容。在此模式下运行时,建议启用此选项disable_hostname
以免使用主机名的前缀度量标准。
statsd_address
这以格式提供statsd实例的地址host:port
。若是提供,领事将发送各类遥测信息到该实例进行聚合。这能够用来捕获运行时信息。这仅发送UDP数据包,能够与statsd或statsite一块儿使用。
statsite_address
这提供了格式中的一个statsite实例的地址host:port
。若是提供,领事将聚集各类遥测信息到该实例。这能够用来捕获运行时信息。这经过TCP流,只能用于statsite。
syslog_facility
什么时候 enable_syslog
提供,这将控制向哪一个设施发送消息。默认状况下,LOCAL0
将被使用。
tls_min_version
在Consul 0.7.4中添加,它指定了TLS的最低支持版本。接受的值是“tls10”,“tls11”或“tls12”。这默认为“tls10”。警告:TLS 1.1及更低版本一般被认为不太安全; 避免使用这些若是可能。这将在Consul 0.8.0中更改成默认值“tls12”。
tls_cipher_suites
在Consul 0.8.2中添加,它将支持的密码组列表指定为逗号分隔列表。源代码中提供了全部支持的密码套件列表。
tls_prefer_server_cipher_suites
在Consul 0.8.2中添加,这将致使Consul更喜欢服务器的密码套件而不是客户端密码套件。
translate_wan_addrs
若是设置为true,Consul 在为远程数据中心中的节点提供DNS和HTTP请求时,会优先使用配置的WAN地址。这容许使用其本地地址在其本身的数据中心内访问该节点,并使用其WAN地址从其余数据中心到达该节点,这在混合网络的混合设置中颇有用。这是默认禁用的。
从Consul 0.7和更高版本开始,响应HTTP请求的节点地址在查询远程数据中心中的节点时也将优选节点配置的WAN地址。一个X-Consul-Translate-Addresses
当翻译被启用,以帮助客户知道地址能够被翻译标题将出如今全部响应。在TaggedAddresses
响应中域也有一个lan
地址,须要该地址的知识,不管翻译的客户。
如下端点转换地址:
ui_dir
- 至关于 -ui-dir
命令行标志。从Consul版本0.7.0及更高版本开始,此配置密钥不是必需的。指定此配置键将启用Web UI。没有必要指定ui-dir和ui。指定二者都会致使错误。
unix_sockets
- 这能够调整Consul建立的Unix域套接字文件的全部权和权限。只有在HTTP地址配置了unix://
前缀时才使用域套接字。
须要注意的是,这个选项可能对不一样的操做系统有不一样的影响。Linux一般会观察套接字文件权限,而许多BSD变体会忽略套接字文件自己的权限。在特定的发行版上测试此功能很是重要。此功能目前在Windows主机上没法使用。
如下选项在此构造内有效,并全面应用于Consul建立的全部套接字:
verify_incoming
- 若是设置为true,Consul要求全部传入链接都使用TLS,而且客户端提供证书颁发机构从ca_file
or中签名的证书ca_path
。这适用于服务器RPC和HTTPS API。默认状况下,这是错误的,Consul不会强制使用TLS或验证客户的真实性。
verify_incoming_rpc
- 若是设置为true,Consul要求全部传入的RPC链接都使用TLS,而且客户端提供由证书颁发机构从ca_file
or中签名的证书ca_path
。默认状况下,这是错误的,Consul不会强制使用TLS或验证客户的真实性。
verify_incoming_https
- 若是设置为true,则Consul要求全部传入的HTTPS链接都使用TLS,而且客户端提供由证书颁发机构从ca_file
or中签名的证书ca_path
。默认状况下,这是错误的,Consul不会强制使用TLS或验证客户的真实性。要启用HTTPS API,您必须经过ports
配置定义HTTPS端口。默认状况下,HTTPS被禁用。
verify_outgoing
- 若是设置为true,则Consul要求全部传出链接都使用TLS,而且服务器提供由证书颁发机构从ca_file
or中签名的证书ca_path
。默认状况下,这是错误的,Consul不会使用TLS进行传出链接。这适用于客户端和服务器,由于二者都会创建传出链接。
verify_server_hostname
- 若是设置为true,则Consul会验证全部传出链接,即服务器提供的TLS证书与“server。<datacenter>。<domain>”主机名匹配。这意味着verify_outgoing
。默认状况下,这是错误的,而且Consul不验证证书的主机名,只验证它是由受信任的CA签署的。此设置对于防止受损客户端做为服务器从新启动很重要,从而可以执行MITM攻击或添加为Raft对等设备。这在0.5.1中是新的。
watches
- Watches是手表规范的列表,容许在更新特定数据视图时自动调用外部进程。有关更多详情,请参阅 手表文档。手表能够在配置从新加载时修改。
Consul最多须要6个不一样的端口才能正常工做,有些使用TCP,UDP或两种协议。下面咱们记录每一个端口的要求。
服务器RPC(默认8300)。这由服务器用来处理来自其余代理的传入请求。仅限TCP。
Serf LAN(默认8301)。这是用来处理局域网中的八卦。全部代理都须要。TCP和UDP。
Serf WAN(默认8302)。这被服务器用来在WAN上闲聊到其余服务器。TCP和UDP。从Consul 0.8开始,建议经过端口8302在LAN接口上为TCP和UDP启用服务器之间的链接,以及WAN加入泛滥功能。另见: Consul 0.8.0 CHANGELOG和GH-3058
HTTP API(默认8500)。这被客户用来与HTTP API交谈。仅限TCP。
DNS接口(默认8600)。用于解析DNS查询。TCP和UDP。
从新加载配置不会从新加载全部配置项目。从新加载的项目包括: