Skip to main content

节点配置

节点配置允许您为集群中的各个节点自定义和优化设置。它被分为几个部分:

一个带注释的例子可在此处找到:quickwit.yaml

常规配置

属性描述环境变量默认值
version配置文件版本。0.7 是唯一可用的值,并且与 0.50.4 版本向后兼容。
cluster_id节点将加入的集群的唯一标识符。共享同一网络的集群应使用不同的集群ID。QW_CLUSTER_IDquickwit-default-cluster
node_id节点的唯一标识符。它必须与集群中其他节点的标识符不同。如果未设置,则默认为实例的短主机名。QW_NODE_ID短主机名
enabled_services已启用的服务(控制平面、索引器、清理程序、元存储、搜索器)QW_ENABLED_SERVICES所有服务
listen_addressQuickwit 服务绑定的 IP 地址或主机名,用于启动 REST 和 gRPC 服务器以及连接此节点到其他节点。默认情况下,Quickwit 绑定到 127.0.0.1(本地主机)。当尝试形成集群时,此默认值无效。QW_LISTEN_ADDRESS127.0.0.1
advertise_address节点广播的 IP 地址,即对等节点用于连接到该节点进行远程过程调用的 IP 地址。QW_ADVERTISE_ADDRESSlisten_address
gossip_listen_port监听 Gossip 集群成员服务(UDP)的端口。QW_GOSSIP_LISTEN_PORTrest.listen_port
grpc_listen_portgRPC 服务监听流量的端口。QW_GRPC_LISTEN_PORTrest.listen_port + 1
peer_seeds用于引导集群并发现完整节点集的 IP 地址或主机名列表。此列表可以包含当前节点的地址,并不需要详尽无遗。如果 peer_seeds 列表中包含主机名,Quickwit 将通过每分钟查询 DNS 来解析它。例如,在 Kubernetes 中,最好将其设置为 无头服务QW_PEER_SEEDS
data_dir用于持久化数据(临时数据、用于缓存目的的切片)的目录路径。这主要用于索引操作。QW_DATA_DIR./qwdata
metastore_uri元存储 URI。可以是本地目录或 s3://my-bucket/indexespostgres://username:password@localhost:5432/metastore了解更多关于元存储配置的信息QW_METASTORE_URI{data_dir}/indexes
default_index_root_uri定义存储索引数据(切片)位置的默认索引根 URI。索引 URI 的构建遵循以下模式:{default_index_root_uri}/{index-id}QW_DEFAULT_INDEX_ROOT_URI{data_dir}/indexes
仅环境变量Quickwit 的日志级别。可以是直接的日志级别,或者是由逗号分隔的 module_name=level 列表。RUST_LOGinfo

REST 配置

此部分包含 REST API 的配置选项。

属性描述环境变量默认值
listen_portREST API 监听 HTTP 流量的端口。QW_REST_LISTEN_PORT7280
cors_allow_origins配置允许访问 API 的 CORS 来源。了解更多
extra_headers头名称和值的列表

配置 CORS(跨源资源共享)

CORS(跨源资源共享)描述了哪些地址或来源可以从浏览器访问 REST API。 默认情况下,不允许跨源共享资源。

可以在 cors_allow_origins 参数中指定通配符、单一来源或多个来源:

REST 配置示例:

rest:
listen_port: 1789
extra_headers:
x-header-1: header-value-1
x-header-2: header-value-2
cors_allow_origins: '*'

# cors_allow_origins: https://my-hdfs-logs.domain.com # Optionally we can specify one domain
# cors_allow_origins: # Or allow multiple origins
# - https://my-hdfs-logs.domain.com
# - https://my-hdfs.other-domain.com

gRPC 配置

此部分包含用于节点间内部通信的 gRPC 服务和客户端的配置选项。

属性描述环境变量默认值
max_message_size内部 gRPC 客户端和服务之间交换的消息的最大大小(字节)。20 MiB

gRPC 配置示例:

grpc:
max_message_size: 30 MiB
warning

我们建议只有在遇到以下错误时才更改 20 MiB 的默认值: Error, message length too large: found 24732228 bytes, the limit is: 20971520 bytes.(错误,消息长度过大:找到 24732228 字节,限制是:20971520 字节。) 在这种情况下,请逐步增加 max_message_size,每次增加 10 MiB,直到问题消失。这是一个临时解决方案:Quickwit 的下一个版本 0.8 将完全依赖于 gRPC 流式传输端点,并能处理任意长度的消息。

存储配置

请参阅专门的 存储配置 页面,了解如何为各种存储提供商配置 Quickwit 的更多信息。

这里还有一些如何使用 Amazon S3 或 Alibaba OSS 配置 Quickwit 的最小示例:

AWS_ACCESS_KEY_ID=<your access key ID>
AWS_SECRET_ACCESS_KEY=<your secret access key>

Amazon S3

storage:
s3:
region: us-east-1

Alibaba

storage:
s3:
region: us-east-1
endpoint: https://oss-us-east-1.aliyuncs.com

元存储配置

此部分可能包含每个可用元存储实现的一个配置子部分。每个实现的具体配置参数可能会有所不同。目前可用的元存储实现包括:

  • File-backed
  • PostgreSQL

文件支持型元存储配置

文件支持型元存储没有节点级别的配置。您可以在 索引级别 配置轮询间隔。

PostgreSQL 元存储配置

属性描述默认值
min_connections池中始终维护的最小连接数。0
max_connections池中维护的最大连接数。10
acquire_connection_timeout在放弃查询之前等待可用连接的最大时间。10s
idle_connection_timeout关闭单个连接前的最大空闲持续时间。10min
max_connection_lifetime单个连接的最大生命周期。30min

PostgreSQL 元存储配置的 YAML 格式示例:

metastore:
postgres:
min_connections: 10
max_connections: 50
acquire_connection_timeout: 30s
idle_connection_timeout: 1h
max_connection_lifetime: 1d

Indexer(索引器)配置

此部分包含索引器的配置选项。分片存储在 索引文档 中有详细说明。

属性描述默认值
split_store_max_num_bytes分片存储中允许的最大字节数。100G
split_store_max_num_splits分片存储中允许的最大文件数。1000
max_concurrent_split_uploads节点上允许的最大并发分片上传数。12
merge_concurrency节点上可以同时执行的最大合并操作数。(2 x 可用线程数) / 3
enable_otlp_endpoint如果为真,则启用通过 OpenTelemetry 协议 (OTLP) 接收日志和跟踪的 OpenTelemetry 导出端点。false
cpu_capacity控制平面使用的咨询参数。值可以用线程表示(例如 2),也可以用 millicpus 表示(例如 2000m)。控制平面将尝试根据索引器声明的 CPU 容量,在不同节点上按比例调度索引管道。它不是作为限制使用。无论集群是否有足够的容量,所有管道都将被调度。当负载远低于 cpu_capacity 时,控制平面不会试图平均分配工作。需要在所有索引器节点上均衡负载的用户可以将 cpu_capacity 设置为一个任意低的值,只要它与可用线程数成比例即可。可用线程数

示例:

indexer:
split_store_max_num_bytes: 100G
split_store_max_num_splits: 1000
max_concurrent_split_uploads: 12
enable_otlp_endpoint: true

Ingest API 配置

属性描述默认值
max_queue_memory_usageIngest 队列在内存中的最大大小(字节)。2GiB
max_queue_disk_usageIngest 队列占用的最大磁盘空间(字节)。最小大小至少为 256M 并且至少为 max_queue_memory_usage4GiB

示例:

ingest_api:
max_queue_memory_usage: 2GiB
max_queue_disk_usage: 4GiB

Searcher(搜索器)配置

此部分包含搜索器的配置选项。

属性描述默认值
aggregation_memory_limit控制聚合阶段前可以使用的最大内存量。此限制适用于每个请求和单个叶查询(叶查询是指并发查询一个或多个分片)。它用于防止聚合阶段中过度使用内存,这可能导致性能下降或崩溃。由于它是针对每个请求的,因此并发请求可能会超过此限制。500M
aggregation_bucket_limit确定返回给客户端的最大桶数。65000
fast_field_cache_capacity搜索器上的快速字段内存缓存容量。如果您按日期过滤、运行聚合、范围查询,或者使用搜索流 API,甚至进行追踪,可能值得增加此参数。以 quickwit_cache_fastfields_cache 开头的 指标 可帮助您在设置此值时做出明智的选择。1G
split_footer_cache_capacity搜索器上的分片尾部内存缓存容量(本质上是热缓存)。500M
partial_request_cache_capacity搜索器上的部分请求内存缓存容量。为请求缓存中间状态,可能使后续请求更快。可以通过将其大小设置为 0 来禁用它。64M
max_num_concurrent_split_searches在搜索器上运行的最大并发分片搜索请求数。100
max_num_concurrent_split_streams在搜索器上运行的最大并发分片流请求数。100
split_cache下面定义的搜索器分片缓存配置选项。如果未指定,则禁用缓存。

Searcher(搜索器)分片缓存配置

此部分包含磁盘上搜索器分片缓存的配置选项。

属性描述默认值
max_num_bytes分片缓存中允许的最大磁盘大小(字节)。可能会被单个分片的大小超过。
max_num_splits分片缓存中允许的最大分片数。10000
num_concurrent_downloads最大并发下载分片数。1

示例:

searcher:
fast_field_cache_capacity: 1G
split_footer_cache_capacity: 500M
partial_request_cache_capacity: 64M
split_cache:
max_num_bytes: 1G
max_num_splits: 10000
num_concurrent_downloads: 1

Jaeger 配置

属性描述默认值
enable_endpoint如果为真,则启用允许 Jaeger 查询服务连接并检索跟踪的 gRPC 端点。false

示例:

searcher:
enable_endpoint: true

在配置中使用环境变量

您可以在配置文件中使用环境变量引用,以设置在部署期间需要可配置的值。为此,请使用:

${VAR_NAME}

其中 VAR_NAME 是环境变量的名称。

每个变量引用在启动时都会被环境变量的值替换。替换过程区分大小写,并且在解析配置文件之前发生。除非您指定了默认值或自定义错误文本,否则引用未定义的变量会抛出错误。

为了指定默认值,请使用:

${VAR_NAME:-default_value}

其中 default_value 是如果环境变量未设置时要使用的值。

<config_field>: ${VAR_NAME}
or
<config_field>: ${VAR_NAME:-default value}

例如:

export QW_LISTEN_ADDRESS=0.0.0.0
# config.yaml
version: 0.7
cluster_id: quickwit-cluster
node_id: my-unique-node-id
listen_address: ${QW_LISTEN_ADDRESS}
rest:
listen_port: ${QW_LISTEN_PORT:-1111}

将被 Quickwit 理解为:

version: 0.7
cluster_id: quickwit-cluster
node_id: my-unique-node-id
listen_address: 0.0.0.0
rest:
listen_port: 1111