#Consul

consul命令行

  • advertise:广告地址用于将我们通告的地址更改为群集中的其他节点。默认情况下,-bind通告地址。但是,在某些情况下,可能存在无法绑定的可路由地址。此标志允许闲聊不同的地址以支持此功能。如果此地址不可路由,则该节点将处于恒定的振荡状态,因为其他节点将不可路由性视为故障。在Consul 1.0及更高版本中,可以将其设置为 go-sockaddr 模板。

  • -advertise-wan:广告WAN地址用于将我们通告的地址更改为通过WAN加入的服务器节点。当与translate_wan_addrs配置选项结合使用时,也可以在客户端代理上设置此选项。默认情况下,-advertise通告地址。但是,在某些情况下,所有数据中心的所有成员都不能位于同一物理或虚拟网络上,尤其是混合云和私有数据中心的混合设置。此标志使服务器节点通过公共网络为WAN进行闲聊,同时使用专用VLAN互相闲聊及其客户端代理,并且如果远程数据中心是远程数据中心,则允许从远程数据中心访问此地址时访问客户端代理。配置了translate_wan_addrs。在Consul 1.0及更高版本中,这可以设置为 go-sockaddr 模板

  • -bootstrap: 此标志用于控制服务器是否处于“引导”模式。重要的是,在此模式下,每个数据中心只能运行一台服务器。从技术上讲,允许自举模式的服务器作为Raft领导者自行选举。重要的是只有一个节点处于这种模式; 否则,无法保证一致性,因为多个节点能够自我选择。在引导群集后,建议不要使用此标志。

  • -bootstrap-expect:此标志提供数据中心中预期的服务器数。不应提供此值,或者该值必须与群集中的其他服务器一致。提供后,Consul将等待指定数量的服务器可用,然后引导群集。这允许自动选择初始领导者。这不能与传统-bootstrap标志一起使用。此标志需要-server模式。

  • -bind:应绑定到内部群集通信的地址。这是群集中所有其他节点都应该可以访问的IP地址。默认情况下,这是“0.0.0.0”,这意味着Consul将绑定到本地计算机上的所有地址,并将 第一个可用的私有IPv4地址通告给群集的其余部分。如果有多个私有IPv4地址可用,Consul将在启动时退出并显示错误。如果指定“[::]”,Consul将 通告第一个可用的公共IPv6地址。如果有多个可用的公共IPv6地址,Consul将在启动时退出并显示错误。Consul同时使用TCP和UDP以及相同的端口。如果您有防火墙,请务必同时允许这两种协议。在Consul 1.0及更高版本中,可以将其设置为需要解析为单个地址的go-sockaddr模板。

  • -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 模板

  • -client:Consul将绑定客户端接口的地址,包括HTTP和DNS服务器。默认情况下,这是“127.0.0.1”,仅允许环回连接。在Consul 1.0及更高版本中,可以将其设置为以空格分隔的要绑定的地址列表,或者设置为 可以解析为多个地址的 go-sockaddr模板。

  • -config-file:要加载的配置文件。有关此文件格式的更多信息,请阅读“ 配置文件”部分。可以多次指定此选项以加载多个配置文件。如果多次指定,则稍后加载的配置文件将与先前加载的配置文件合并。在配置合并期间,单值键(string,int,bool)将简单地替换它们的值,而列表类型将被附加在一起。

  • -config-dir:要加载的配置文件的目录。Consul将使用后缀“.json”或“.hcl”加载此目录中的所有文件。加载顺序是按字母顺序排列的,并且使用与上述config-file选项相同的合并例程 。可以多次指定此选项以加载多个目录。未加载config目录的子目录。有关配置文件格式的详细信息,请参阅“ 配置文件”部分。

  • config-format:要加载的配置文件的格式。通常,Consul会从“.json”或“.hcl”扩展名中检测配置文件的格式。将此选项设置为“json”或“hcl”会强制Consul解释具有或不具有扩展名的任何文件,以便以该格式进行解释。

  • data-dir:此标志为代理程序存储状态提供数据目录。这是所有代理商都需要的。该目录在重新启动后应该是持久的。这对于在服务器模式下运行的代理尤其重要,因为它们必须能够持久化群集状态。此外,该目录必须支持使用文件系统锁定,这意味着某些类型的已安装文件夹(例如VirtualBox共享文件夹)可能不适合。注意:服务器代理和非服务器代理都可以在此目录中的状态中存储ACL令牌,因此读访问可以授予对服务器上的任何令牌以及非服务器上的服务注册期间使用的任何令牌的访问权限。在基于Unix的平台上,文件使用0600权限编写,因此您应确保只有受信任的进程才能与Consul作为同一用户执行。在Windows上,您应确保该目录具有适当的权限,因为这些权限将被继承。

  • datacenter:此标志控制代理程序运行的数据中心。如果未提供,则默认为“dc1”。Consul拥有对多个数据中心的一流支持,但它依赖于正确的配置。同一数据中心中的节点应位于单个LAN上。

  • dev:启用开发服务器模式。这对于快速启动Consul代理并关闭所有持久性选项非常有用,可以启用内存服务器,该服务器可用于快速原型设计或针对API进行开发。在此模式下, Connect已启用,默认情况下将在启动时创建新的根CA证书。此模式不适用于生产用途,因为它不会将任何数据写入磁盘。

  • disable-host-node-id:将此设置为true将阻止Consul使用来自主机的信息生成确定性节点ID,而是生成将保留在数据目录中的随机节点ID。在同一主机上运行多个Consul代理进行测试时,这非常有用。在版本0.8.5之前的Consul中默认为false,在0.8.5及更高版本中默认为true,因此您必须选择加入基于主机的ID。使用https://github.com/shirou/gopsutil/tree/master/host生成基于主机的ID ,这是与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网络流量的密钥。该密钥必须是16字节的Base64编码。创建加密密钥的最简单方法是使用 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"
    
  • -retry-interval:加入尝试之间等待的时间。默认为30秒。

  • -retry-max- -join:退出返回代码之前尝试的最大尝试次数1.默认情况下,将其设置为0,将其解释为无限次重试。

  • -join-wan:启动时加入另一个万人代理的地址。可以多次指定此选项以指定要加入的多个WAN代理。如果Consul无法加入任何指定的地址,则代理启动将失败。默认情况下,代理-join-wan在启动时不会显示任何节点。

  • -retry-join-wan:类似retry-join但允许在第一次尝试失败时重试wan连接。这对于我们知道地址最终可用的情况很有用。从Consul 0.9.3开始,云支持自动加入也是如此。

  • -retry-interval-wan- -join-wan:尝试之间等待的时间。默认为30秒。

  • -retry-max-wan- -join-wan:退出返回代码之前尝试的最大尝试次数1.默认情况下,将其设置为0,将其解释为无限次重试。

  • -log-level:Consul代理启动后显示的日志记录级别。默认为“info”。可用的日志级别是“trace”,“debug”,“info”,“warn”和“err”。您始终可以通过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。这可以多次指定。节点元数据对具有以下限制:

    • 每个节点最多可以注册64个键/值对。
    • 元数据键的长度必须介于1到128个字符(包括1和128个字符)之间
    • 元数据键必须仅包含字母数字-和_字符。
    • 元数据键不能以consul-前缀开头; 保留供Consul内部使用。
    • 元数据值的长度必须介于0到512(含)之间。
    • 开头的密钥的元数据值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文件中的空间在下一个快照之前无法回收,因此增加此值将替换磁盘空间的磁盘空间。如果需要重播更多日志,服务器可能需要更长的时间才能从崩溃或故障转移中恢复。在Consul 1.1.0及更高版本中,默认为16384,在先前版本中,它设置为8192。

  • -raft-snapshot-interval:它控制服务器检查是否需要将快照保存到磁盘的频率。他是一个很少需要改变的低级参数。经历过多磁盘IO的非常繁忙的群集可能会增加此值以减少磁盘IO,并最大限度地减少所有服务器同时拍摄快照的机会。由于日志将变得更大并且raft.db文件中的空间在下一个快照之前无法回收,因此增加此值将替换磁盘空间的磁盘空间。如果需要重播更多日志,服务器可能需要更长的时间才能从崩溃或故障转移中恢复。在Consul 1.1.0及更高版本中,此默认设置为30s,并且在之前的版本中设置为5s。

  • -recursor:指定上游DNS服务器的地址。可以多次提供此选项,并且功能上与recursors配置选项等效。

  • -rejoin:提供时,Consul将忽略之前的休假并在启动时尝试重新加入群集。默认情况下,Consul将离开视为永久意图,并且在启动时不会尝试再次加入群集。此标志允许使用先前的状态重新加入群集。

  • -segment:(仅限企业)此标志用于设置代理所属的网段名称。代理只能加入其网段中的其他代理并与之通信。有关详细信息,请参阅网络细分指南。默认情况下,这是一个空字符串,这是默认网段。

  • -serf-lan-port:收听的Serf LAN端口。这将覆盖默认的Serf LAN端口8301.这在Consul 1.2.2及更高版本中可用。

  • -serf-wan-port:收听的Serf WAN端口。这将覆盖默认的Serf WAN端口8302.这在Consul 1.2.2及更高版本中可用。

  • -server:此标志用于控制代理是处于服务器模式还是客户端模式。提供时,代理将充当Consul服务器。每个Consul集群必须至少有一个服务器,理想情况下每个数据中心不得超过5个。所有服务器都参与Raft一致性算法,以确保事务以一致,可线性化的方式发生。事务修改集群状态,该状态在所有服务器节点上维护,以确保节点故障时的可用性。服务器节点还与其他数据中心中的服务器节点一起参与WAN八卦池。服务器充当其他数据中心的网关,并根据需要转发流量。

  • -server-port:要侦听的服务器RPC端口。这将覆盖默认服务器RPC端口8300.这在Consul 1.2.2及更高版本中可用。

  • -non-voting-server:(仅限企业)此标志用于使服务器不参与Raft仲裁,并使其仅接收数据复制流。在需要大量读取服务器的情况下,这可用于向集群添加读取可伸缩性。

  • -syslog1:此标志允许记录到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'标志将导致错误。