附录 E. 管理客户端配置参数
bootstrap.servers
type: list
Importance: high
用于建立与 Kafka 集群的初始连接的主机/端口对列表。客户端将使用与此处为 bootstrapping 指定的服务器一样的所有服务器,此列表只会影响用于发现整套服务器的初始主机。这个列表应该采用
host1:port1,host2:port2,…
格式。由于这些服务器仅用于初始连接来发现完整的集群成员身份(可能会动态更改),因此该列表不需要包含完整的服务器集合(尽管,如果服务器停机,您可能希望多台服务器)。ssl.key.password
type: password
Default: null
Importance: high
密钥存储文件中私钥的密码,或者在 'ssl.keystore.key 中指定的 PEM 密钥的密码。客户端只有在配置了双向身份验证时才需要此参数。
ssl.keystore.certificate.chain
type: password
Default: null
Importance: high
以 'ssl.keystore.type" 指定的格式的证书链。默认 SSL 引擎工厂仅支持 PEM 格式及 X.509 证书列表。
ssl.keystore.key
type: password
Default: null
Importance: high
以 'ssl.keystore.type" 指定的格式的私钥。默认 SSL 引擎工厂仅支持使用 PKCS#8 密钥的 PEM 格式。如果密钥加密,则必须使用 'ssl.key.password' 指定密钥密码。
ssl.keystore.location
type: string
Default: null
Importance: high
密钥存储文件的位置。这对于客户端而言是可选的,可用于进行客户端的双向身份验证。
ssl.keystore.password
type: password
Default: null
Importance: high
存储密钥存储文件的密码。这对客户端是可选的,并且仅在配置了 'ssl.keystore.location' 时才需要。PEM 格式不支持密钥存储密码。
ssl.truststore.certificates
type: password
Default: null
Importance: high
以 'ssl.truststore.type" 指定的格式的可信证书。默认 SSL 引擎工厂仅支持具有 X.509 证书的 PEM 格式。
ssl.truststore.location
type: string
Default: null
Importance: high
信任存储文件的位置。
ssl.truststore.password
type: password
Default: null
Importance: high
信任存储文件的密码。如果未设置密码,仍然将使用配置的信任存储文件,但完整性检查将被禁用。PEM 格式不支持信任存储密码。
client.dns.lookup
type: string
Default: use_all_dns_ips
Valid Values: [default, use_all_dns_ips, resolve_canonical_bootstrap_servers_only]
Importance: media
控制客户端如何使用 DNS 查找。如果设置为
use_all_dns_ips
,按顺序连接到每个返回的 IP 地址,直到建立成功连接为止。断开连接后使用下一个 IP。所有 IP 都使用一次后,客户端会再次从主机名解析 IP(JVM 和 OS 缓存 DNS 名称查找)。如果设置为resolve_canonical_bootstrap_servers_only
,请将每个 bootstrap 地址解析为规范名称列表。bootstrap 阶段后,其行为与use_all_dns_ips
相同。如果设置为default
(已弃用),请尝试连接到查询返回的第一个 IP 地址,即使查找返回多个 IP 地址。client.id
type: string
Default: ""
Importance: medium
在发出请求时要传递给服务器的 id 字符串。这样做的目的是通过允许逻辑应用程序名称包含在服务器端请求日志记录中,跟踪请求源,而不仅仅是 ip/port。
connections.max.idle.ms
type: long
Default: 300000(5 分钟)
Importance: medium
在此配置指定的毫秒数后关闭空闲连接。
default.api.timeout.ms
type: int
Default: 60000(1 minute)
Valid Values: [0,…]
Importance: medium
指定客户端 API 的超时时间(以毫秒为单位)。这个配置被用作没有指定
timeout
参数的所有客户端操作的默认超时时间。receive.buffer.bytes
type: int
Default: 65536(64 kibibytes)
Valid Values: [-1,…]
Importance: media
读取数据时使用的 TCP 接收缓冲区(SO_RCVBUF)的大小。如果值为 -1,将使用 OS 默认值。
request.timeout.ms
type: int
Default: 30000(30 秒)
Valid Values: [0,…]
Importance: medium
配置控制客户端等待请求响应的最大时间。如果在超时前未收到响应,客户端将在必要时重新发送请求,或者在重试结束时失败请求。
sasl.client.callback.handler.class
type: class
Default: null
Importance: medium
实施 AuthenticateCallbackHandler 接口的 SASL 客户端回调处理程序类的完全限定名称。
sasl.jaas.config
type: password
Default: null
Importance: medium
用于 SASL 连接的 JAAS 登录上下文参数,采用 JAAS 配置文件使用的格式。JAAS 配置文件格式 如下所述。该值的格式为:
loginModuleClass controlFlag (optionName=optionValue)*;
。对于代理,配置必须加上监听器前缀和 SASL 机制名称(小写)。例如,listener.name.sasl_ssl.scram-sha-256.sasl.jaas.config=com.example.ScramLoginModule 需要;。sasl.kerberos.service.name
type: string
Default: null
Importance: medium
Kafka 运行的 Kerberos 主体名称。这可以在 Kafka 的 JAAS 配置或 Kafka 的 config 中定义。
sasl.login.callback.handler.class
type: class
Default: null
Importance: medium
实施 AuthenticateCallbackHandler 接口的 SASL 登录回调处理程序类的完全限定名称。对于代理,登录回调处理程序配置必须以小写的监听器前缀和 SASL 机制名称作为前缀。例如,listener.name.sasl_ssl.scram-sha-256.sasl.login.callback.handler.class=com.example.CustomScramLoginCallbackHandler。
sasl.login.class
type: class
Default: null
Importance: medium
实施登录接口的类的完全限定名称。对于代理,登录配置必须加上监听器前缀和 SASL 机制名称(小写)。For example, listener.name.sasl_ssl.scram-sha-256.sasl.login.class=com.example.CustomScramLogin.
sasl.mechanism
type: string
Default: GSSAPI
Importance: medium
用于客户端连接的 SASL 机制.这可能是提供安全提供程序的任何机制。GSSAPI 是默认机制。
security.protocol
type: string
Default: PLAINTEXT
Importance: medium
用于与代理通信的协议.有效值为:PLAINTEXT、SSL、SASL_PLAINTEXT、SASL_SSL.
send.buffer.bytes
type: int
Default: 131072(128 Kbibytes)
Valid Values: [-1,…]
Importance: media
发送数据时使用的 TCP 发送缓冲区(SO_SNDBUF)的大小。如果值为 -1,将使用 OS 默认值。
socket.connection.setup.timeout.max.ms
type: long
Default: 30000(30 秒)
Importance: medium
客户端在套接字连接建立前等待的最大时间。连接设置超时将为每个连续连接失败的指数级增长,最高为此最大值。为避免连接风暴,超时将应用 0.2 的随机因数,因此在计算值之上的 20% 到 20% 之间的随机范围。
socket.connection.setup.timeout.ms
type: long
Default: 10000(10 秒)
Importance: medium
客户端等待套接字连接建立的时间。如果连接没有在超时前构建,客户端会关闭套接字频道。
ssl.enabled.protocols
type: list
Default: TLSv1.2,TLSv1.3
Importance: medium
为 SSL 连接启用的协议列表。使用 Java 11 或更新版本运行时,默认为 'TLSv1.2,TLSv1.3',否则为 'TLSv1.2'。使用 Java 11 的默认值时,如果支持 TLSv1.3,否则客户端和服务器都支持 TLSv1.3,否则客户端和服务器都将首选 TLSv1.2(假设至少支持 TLSv1.2)。对于大多数情况,此默认值应当适用。另请参阅
ssl.protocol
的配置文档。ssl.keystore.type
type: string
Default: JKS
Importance: medium
密钥存储文件的文件格式。这是客户端的可选选项。
ssl.protocol
type: string
Default: TLSv1.3
Importance: medium
用于生成 SSLContext 的 SSL 协议。使用 Java 11 或更新版本运行时,默认为 'TLSv1.3',否则为 'TLSv1.2'。这个值应该适用于大多数用例。最近 JVM 中的允许值是 'TLSv1.2' 和 'TLSv1.3'。'TLS'、'TLSv1.1'、'SSL'、'SSLv2' 和 'SSLv3' 可能会在旧的 JVM 中受到支持,但会因为已知的安全漏洞而鼓励使用它们。使用这个配置的默认值和 'ssl.enabled.protocols',如果服务器不支持 'TLSv1.3',客户端将降级为 'TLSv1.2'。如果此配置被设置为 'TLSv1.2',客户端将不会使用 'TLSv1.3',即使它是 ssl.enabled.protocols 中的值之一,服务器只支持 'TLSv1.3'。
ssl.provider
type: string
Default: null
Importance: medium
用于 SSL 连接的安全提供商名称。默认值是 JVM 的默认安全提供程序。
ssl.truststore.type
type: string
Default: JKS
Importance: medium
信任存储文件的文件格式。
metadata.max.age.ms
type: long
Default: 300000(5 分钟)
Valid Values: [0,…]
Importance: low
在经过这一时间之后,我们强制刷新元数据,即使我们尚未看到任何分区领导变化来主动发现任何新的代理或分区。
metric.reporters
type: list
Default: ""
Importance: low
用作指标报告器的类的列表。实施
org.apache.kafka.common.metrics.MetricsReporter
接口允许在类中插入,这些类将通知新指标创建。JmxReporter 始终包含在内,用于注册 JMX 统计数据。metrics.num.samples
type: int
Default: 2
Valid Values: [1,…]
Importance: low
维护到计算指标的示例数量。
metrics.recording.level
type: string
Default: INFO
Valid Values: [INFO, DEBUG, TRACE]
Importance: low
指标的最高记录级别。
metrics.sample.window.ms
type: long
Default: 30000(30 秒)
Valid Values: [0,…]
Importance: low
指标样本计算完的时间窗口。
reconnect.backoff.max.ms
type: long
Default: 1000(1 second)
Valid Values: [0,…]
Importance: low
重新连接到一个代理时需要等待的时间上限(以毫秒为单位),且该代理重复无法连接。如果提供,每个主机的 backoff 都会为每个连续连接失败呈指数级增长,最高可达此最大值。计算 backoff 后,添加 20% 的随机 jitter,以避免连接风暴。
reconnect.backoff.ms
type: long
Default: 50
Valid Values: [0,…]
Importance: low
尝试重新连接到给定主机前等待的基本时间。这可避免在紧凑循环中重复连接主机。这个后端适用于客户端对代理的所有连接尝试。
retries
type: int
Default: 2147483647
Valid Values: [0,…,21473647]
Importance: low
设置大于零的值将导致客户端重新发送任何失败且出现可能瞬时错误的请求。建议将值设置为零或
MAX_VALUE
,并使用对应的超时参数来控制客户端重试请求的时间。retry.backoff.ms
type: long
Default: 100
Valid Values: [0,…]
Importance: low
尝试重试失败请求前等待的时间。这可避免在某些故障情况下在紧凑循环中重复发送请求。
sasl.kerberos.kinit.cmd
type: string
Default: /usr/bin/kinit
Importance: low
Kerberos kinit 命令路径.
sasl.kerberos.min.time.before.relogin
type: long
Default: 60000
Importance: low
刷新尝试之间的登录线程睡眠时间.
sasl.kerberos.ticket.renew.jitter
type: double
Default: 0.05
Importance: low
添加到续订时间的随机 jitter 百分比.
sasl.kerberos.ticket.renew.window.factor
type: double
Default: 0.8
Importance: low
登录线程将休眠,直到达到上次刷新到票据过期时间的指定窗口因素,此时将尝试续订票据。
sasl.login.refresh.buffer.seconds
type: short
Default: 300
Valid Values: [0,…,3600]
Importance: low
刷新凭证时凭据过期前的缓冲时间(以秒为单位)。否则,如果刷新的时间比缓冲区秒数接近到期,则将移动刷新以尽可能保留缓冲区时间。法律值介于 0 到 3600(1 小时)之间;如果没有指定值,则使用默认值 300(5 分钟)。如果总和超过凭证剩余生命周期,则这个值和 sasl.login.refresh.min.period.seconds 都会被忽略。目前仅适用于 OAUTHBEARER。
sasl.login.refresh.min.period.seconds
type: short
Default: 60
Valid Values: [0,…,900]
Importance: low
登录刷新线程在刷新凭据前所需的最短时间(以秒为单位)。法律值介于 0 到 900(15 分钟)之间;如果没有指定值,则使用默认值 60(1 分钟)。如果值和 sasl.login.refresh.buffer.seconds 的剩余生命周期超过其剩余生命周期,则该值和 sasl.login.refresh.buffer.seconds 都会被忽略。目前仅适用于 OAUTHBEARER。
sasl.login.refresh.window.factor
type: double
Default: 0.8
Valid Values: [0.5,…,1.0]
Importance: low
登录刷新线程将休眠,直到达到相对于凭证生命周期的指定窗口因子,此时将尝试刷新凭证。法律值介于 0.5(50%)和 1.0(100%)之间;如果没有指定值,则使用默认值 0.8(80%)。目前仅适用于 OAUTHBEARER。
sasl.login.refresh.window.jitter
type: double
Default: 0.05
Valid Values: [0.0,…,0.25]
Importance: low
与凭证生命周期相关的最大随机 jitter 数量,添加到登录刷新线程的睡眠时间。法律值介于 0 到 0.25(25%)之间;如果没有指定值,则使用默认值 0.05(5%)。目前仅适用于 OAUTHBEARER。
security.providers
type: string
Default: null
Importance: low
可配置创建者列表每个返回实施安全算法的供应商。这些类应该实施
org.apache.kafka.common.security.auth.SecurityProviderCreator
接口。ssl.cipher.suites
type: list
Default: null
Importance: low
密码套件列表。这是身份验证、加密、MAC 和密钥交换算法的命名组合,用于使用 TLS 或 SSL 网络协议协商网络连接的安全设置。默认情况下,支持所有可用的密码套件。
ssl.endpoint.identification.algorithm
type: string
Default: https
Importance: low
使用服务器证书验证服务器主机名的端点识别算法。
ssl.engine.factory.class
type: class
Default: null
Importance: low
kind org.apache.kafka.common.security.auth.SslEngineFactory 的类型,以提供 SSLEngine 对象。Default value is org.apache.kafka.common.security.ssl.DefaultSslEngineFactory.
ssl.keymanager.algorithm
type: string
Default: SunX509
Importance: low
密钥管理器工厂用于 SSL 连接的算法。默认值为为 Java 虚拟机配置的关键管理器工厂算法。
ssl.secure.random.implementation
type: string
Default: null
Importance: low
用于 SSL 加密操作的 SecureRandom PRNG 实施。
ssl.trustmanager.algorithm
type: string
Default: PKIX
Importance: low
信任管理器用于 SSL 连接的算法。默认值为为 Java 虚拟机配置的信任管理器工厂算法。