Config file reference
This is a reference of all available options that can be set in an Astra config file, and recommended values.
nodeRoles
Defines the mode to operate a node in. Astra ships as a single binary to simplify deployments, and this configuration is used to select which operating mode to run in.
nodeRoles: [QUERY,INDEX,CACHE,MANAGER,RECOVERY,PREPROCESSOR]Warning: Multiple node role support is deprecated and will be removed in a future release
QUERY
A query node provides http API for querying cluster and aggregates results from indexers and cache nodes.
INDEX
An indexer node reads from Kafka to create a Lucene index on disk, which is then uploaded to S3.
CACHE
A cache node receives chunk assignments from the manager node, which are downloaded from S3.
MANAGER
The manager node is responsible for cluster orchestration,
RECOVERY
A recovery node indexes data that is skipped by an indexer, publishing snapshots.
PREPROCESSOR
A preprocessor node serves a bulk ingest HTTP api, which is then transformed, rate limited, and sent to Kafka.
indexerConfig
Configuration options for the indexer node.
maxMessagesPerChunk
Maximum number of messages that are created per chunk before closing and uploading to S3. This should be roughly
equivalent to the maxBytesPerChunk, such that a rollover is triggered at roughly the same time regardless of
messages or bytes.
indexerConfig:
maxMessagesPerChunk: 100000maxBytesPerChunk
Maximum bytes that are created per chunk before closing and uploading to S3. This should be roughly
equivalent to the maxMessagesPerChunk, such that a rollover is triggered at roughly the same time regardless of
messages or bytes.
indexerConfig:
maxBytesPerChunk: 1000000maxTimePerChunkSeconds
Maximum time that a chunk can be open before closing and uploading to S3. Defaults to 90 minutes. This configuration is useful for ensuring that chunks are uploaded to S3 within a set time frame, during non-peak hours when we don’t hit maxMessagesPerChunk or maxBytesPerChunk for several hours
indexerConfig:
maxTimePerChunkSeconds: 5400luceneConfig
indexerConfig:
luceneConfig:
commitDurationSecs: 30
refreshDurationSecs: 10
enableFullTextSearch: falsecommitDurationSecs
How often Lucene commits to disk. This value will impact the accuracy of calculating the chunk size on disk for rollovers, so should be set conservatively to keep chunk sizes consistent.
refreshDurationSecs
How often Lucene refreshes the index, or makes results visible to search.
enableFullTextSearch
Indexes the contents of each message to the _all field, which is set as the default query field if not specified by
the user. Enables queries such as value instead of specifying the field name explicitly, field:value.
staleDurationSecs
indexerConfig:
staleDurationSecs: 7200How long a stale chunk, or a chunk no longer being written to, can remain on an indexer before being deleted. If the indexerConfig.maxChunksOnDisk limit is reached prior to this value the chunk will be removed.
dataDirectory
indexerConfig:
dataDirectory: /mnt/localdiskPath of data directory to use. Generally recommended to be instance storage backed by NVMe disks, or a memory mapped storage like tmpfs for best performance.
maxOffsetDelayMessages
indexerConfig:
maxOffsetDelayMessages: 300000Maximum amount of messages that the indexer can lag behind on startup before creating an async recovery tasks. If the current message lag exceeds this the indexer will immediately start indexing at the current time, and create a task to be indexed by a recover node from the last persisted offset to where the indexer started from.
defaultQueryTimeoutMs
indexerConfig:
defaultQueryTimeoutMs: 6500Timeout for searching an individual chunk. Should be set to some value below the
serverConfig.requestTimeoutMs to ensure that post-processing can occur before reaching the overall request timeout.
readFromLocationOnStart
indexerConfig:
readFromLocationOnStart: LATESTDefines where to read from Kafka when initializing a new cluster.
EARLIEST
Use the oldest Kafka offset when initializing cluster to include all messages currently on Kafka.
LATEST
Use the latest Kafka offset when initializing cluster, will start indexing new messages from the cluster initialization
time onwards. See indexerConfig.createRecoveryTasksOnStart for
an additional config parameter related to using LATEST.
Tip: This config is only used when initializing a new cluster, when no existing offsets are found in Zookeeper.
createRecoveryTasksOnStart
indexerConfig:
createRecoveryTasksOnStart: trueDefines if recovery tasks should be created when initializing a new cluster.
Note: This only applies when indexerConfig.readFromLocationOnStart is set to
LATEST.
Tip: This config is only used when initializing a new cluster, when no existing offsets are found in Zookeeper.
maxChunksOnDisk
indexerConfig:
maxChunksOnDisk: 3How many stale chunks, or chunks no longer being written to, can remain on an indexer before being deleted. If the indexerConfig.staleDurationSecs limit is reached prior to this value the chunk will be removed.
serverConfig
indexerConfig:
serverConfig:
serverPort: 8081
serverAddress: 10.0.100.1
requestTimeoutMs: 7000serverPort
Port used for application HTTP traffic.
serverAddress
Address at which this instance is accessible by other Astra components. Used for inter-node communication and is registered to Zookeeper.
requestTimeoutMs
Request timeout for all HTTP traffic after which the request is cancelled.
kafkaConfig
indexerConfig:
kafkaConfig:
kafkaTopic: test-topic
kafkaTopicPartition: 0
kafkaBootStrapServers: localhost:9092
kafkaClientGroup: astra-test
enableKafkaAutoCommit: true
kafkaAutoCommitInterval: 5000
kafkaSessionTimeout: 30000
additionalProps: "{isolation.level: read_committed}"kafkaTopic
Kafka topic to consume messages from
kafkaBootStrapServers
Address of the kafka server, or servers comma separated.
additionalProps
String value of JSON encoded properties to set on Kafka consumer. Any valid Kafka property can be used. Conflent Kafka Producer Configuration Reference
s3Config
S3 configuration options common to indexer, recovery, cache, and manager nodes.
Tip: S3 compatible APIs from vendors other than Amazon may work, but are not guaranteed. Astra uses the AWS CRT client for improved performance, but this library has less expected compatibility with other vendors.
s3Config:
s3AccessKey: access
s3SecretKey: key
s3Region: us-east-1
s3EndPoint: localhost:9090
s3Bucket: test-s3-bucket
s3TargetThroughputGbps: 25s3AccessKey
AWS access key. If both access key and secret key are empty will use the AWS default credentials provider.
s3SecretKey
AWS secret key. If both access key and secret key are empty will use the AWS default credentials provider.
s3Region
AWS region, ie us-east-1, us-west-2
s3EndPoint
S3 endpoint to use. If this setting is null or empty will not attempt to override the endpoint and will use the default provided by the AWS client.
s3Bucket
AWS S3 bucket name
Tip: Separate buckets per cluster is recommended for better cost tracking and improved performance.
s3TargetThroughputGbps
Throughput target in gigabits per second. This configuration controls how many concurrent connections will be established in the AWS CRT client. Recommended to be set to match the maximum bandwidth of the underlying host.
Tip: See also astra.s3CrtBlobFs.maxNativeMemoryLimitBytes system properties config.
tracingConfig
tracingConfig:
zipkinEndpoint: http://localhost:9411/api/v2/spans
commonTags:
clusterName: astra-local
env: localhost
samplingRate: 0.01zipkinEndpoint
Fully path to the Zipkin POST spans endpoint. Will be submitted as a JSON array of span data.
commonTags
Optional common tags to annotate on all submitted Zipkin traces. Can be overwritten by spans at runtime, if keys collide.
Tip: Recommended common tags:
clusterName,env
samplingRate
Rate at which to sample astra’s traces. A value of 1.0 will send all traces, 0.01 will send 1% of traces, etc.
queryConfig
Configuration options for the query node.
serverConfig
queryConfig:
serverConfig:
serverPort: 8081
serverAddress: 10.0.100.2
requestTimeoutMs: 60000defaultQueryTimeout
queryConfig:
defaultQueryTimeout: 55000Query timeout for individual indexer and cache nodes when performing a query. This value should be set lower than the queryConfig.serverConfig.requestTimeoutMs and equal-to or greater-than the indexerConfig.serverConfig.requestTimeoutMs and cacheConfig.serverConfig.requestTimeoutMs.
Tip: When setting a timeout ensure that the queryConfig.serverConfig.requestTimeoutMs is at least a few seconds higher than the queryConfig.serverConfig.defaultQueryTimeout to allow for aggregation post-processing to occur.
zipkinDefaultMaxSpans
queryConfig:
zipkinDefaultMaxSpans: 25000Max spans that the zipkin endpoint will return when the API call does not include maxSpans. A trace with more than
this amount of spans will be truncated.
managerConnectString
queryConfig:
managerConnectString: 10.0.100.2:8085experimental
Host address for manager node, used for on-demand recovery requests.
metadataStoreConfig
metadataStoreConfig:
zookeeperConfig:
zkConnectString: localhost:2181
zkPathPrefix: astra
zkSessionTimeoutMs: 5000
zkConnectionTimeoutMs: 500
sleepBetweenRetriesMs: 100zookeeperConfig
zkConnectString
Zookeeper connection string - list of servers to connect to or a common service discovery endpoint (ie, consul endpoint).
zkPathPrefix
Common prefix to use for Astra data. Useful when using a common Zookeeper installation.
Tip: A shared Zookeeper cluster is only recommended for very small Astra clusters.
zkSessionTimeoutMs
Zookeeper session timeout in milliseconds.
zkConnectionTimeoutMs
Zookeeper connection timeout in milliseconds.
sleepBetweenRetriesMs
How long to wait between retries when attempting to reconnect a Zookeeper session. Will retry up to the
zkSessionTimeoutMs.
cacheConfig
Configuration options for the cache node.
slotsPerInstance
cacheConfig:
slotsPerInstance: 200Defines how many cache slots are registered per cache node. This should be set so that the slotsPerInstance multiplied
by the indexerConfig.maxBytesPerChunk is less than the total available space at
the cacheConfig.dataDirectory path, plus a small buffer.
Tip: The chunk size on disk can overshoot the configured
indexerConfig.maxBytesPerChunk, depending on how frequently lucene is set to flush to disk in theindexerConfig.luceneConfig.commitDurationSecsconfig.
replicaSet
experimental
cacheConfig:
replicaSet: rep1Unique identifier for this deployment of cache nodes. This setting, in combination with managerConfig.replicaCreationServiceConfig.replicaSets, managerConfig.replicaAssignmentServiceConfig.replicaSets and managerConfig.replicaRestoreServiceConfig.replicaSets allow running multiple deployments of cache nodes in a high availability deployment.
dataDirectory
cacheConfig:
dataDirectory: /mnt/localdiskdefaultQueryTimeoutMs
cacheConfig:
defaultQueryTimeoutMs: 50000serverConfig
cacheConfig:
serverConfig:
serverPort: 8081
serverAddress: 10.0.100.3
requestTimeoutMs: 55000managerConfig
Configuration options for the manager node.
eventAggregationSecs
managerConfig:
eventAggregationSecs: 10Configures how long change events are batched before triggering an event executor. This helps improve performance in clusters with a large amounts of change events (chunk rollovers, pod turnover).
scheduleInitialDelayMins
managerConfig:
scheduleInitialDelayMins: 1How long after manager startup before scheduled services should start executing.
serverConfig
managerConfig:
serverConfig:
serverPort: 8081
serverAddress: 10.0.100.10
requestTimeoutMs: 30000replicaCreationServiceConfig
managerConfig:
replicaCreationServiceConfig:
schedulePeriodMins: 15
replicaLifespanMins: 1440
replicaSets: [rep1]Configuration options controlling replica creation after a chunk is uploaded from an indexer.
schedulePeriodMins
How frequently this task is scheduled to execute. If the time to complete the scheduled task exceeds the period, the previous invocation will be cancelled and restarted at the scheduled time.
replicaLifespanMins
How long a replica associated with a chunk will exist before expiring.
Note: This is the primary configuration for the cluster’s searchable retention.
Tip: Changing this will apply to future replicas, and does not apply to previously created replicas.
Array of cache replica set identifiers (cacheConfig.replicaSet) for this task to operate on.
replicaAssignmentServiceConfig
managerConfig:
replicaAssignmentServiceConfig:
schedulePeriodMins: 15
replicaSets: [rep1]
maxConcurrentPerNode: 2Configuration options controlling replica assignments to available cache nodes.
maxConcurrentPerNode
Controls how many assignment will concurrently execute. Setting this to a low value allows replicas to become available quicker as they do not compete for download bandwidth, and allows newly created replicas of higher priority to be downloaded before a long list of lower priority replicas.
replicaEvictionServiceConfig
managerConfig:
replicaEvictionServiceConfig:
schedulePeriodMins: 15Configuration options controlling replica evictions from cache nodes due to expiration.
replicaDeletionServiceConfig
managerConfig:
replicaDeletionServiceConfig:
schedulePeriodMins: 15Configuration options controlling replica deletion once expired.
recoveryTaskAssignmentServiceConfig
managerConfig:
recoveryTaskAssignmentServiceConfig:
schedulePeriodMins: 15Configuration options controlling recovery tasks assignments to recovery nodes.
snapshotDeletionServiceConfig
managerConfig:
snapshotDeletionServiceConfig:
schedulePeriodMins: 15
snapshotLifespanMins: 10080Configuration options controlling snapshot deletion once expired.
snapshotLifespanMins
Configures how long a snapshot can exist before being deleted from S3. This must be
set to a value larger than the
managerConfig.replicaCreationServiceConfig.replicaLifespanMins. When
this is larger than the replicaLifespan it enables restoring replicas from cold
storage (see managerConfig.replicaRestoreServiceConfig).
replicaRestoreServiceConfig
experimental
managerConfig:
replicaRestoreServiceConfig:
schedulePeriodMins: 15
maxReplicasPerRequest: 200
replicaLifespanMins: 60
replicaSets: [rep1]Configurations controlling on-demand restores for snapshots that exist that do not have corresponding replicas.
maxReplicasPerRequest
Maximum allowable replicas to be restored in a single request. When a request exceeds this value, and error will be returned to the user.
replicaLifespanMins
How long the restored replica will exist before expiring.
See indexerConfig.replicaCreationServiceConfig.replicaLifespanMins
clusterConfig
Cluster configuration options common to all node type.
clusterConfig:
clusterName: astra_local
env: localclusterName
Unique name assigned to this cluster. Should be identical for all node types in the cluster, and is used for metrics instrumentation.
env
Environment string for this cluster. Should be identical for all node types deployed to a single environment, and is used for metrics instrumentation.
recoveryConfig
Configuration options for the recovery indexer node.
serverConfig
recoveryConfig:
serverConfig:
serverPort: 8081
serverAddress: 10.0.100.4
requestTimeoutMs: 10000kafkaConfig
kafkaConfig:
kafkaTopic: test-topic
kafkaTopicPartition: 0
kafkaBootStrapServers: localhost:9092
kafkaClientGroup: astra-test
enableKafkaAutoCommit: true
kafkaAutoCommitInterval: 5000
kafkaSessionTimeout: 30000
additionalProps: "{isolation.level: read_committed}"preprocessorConfig
Configuration options for the preprocessor node.
kafkaConfig
preprocessorConfig:
kafkaConfig:
kafkaTopic: test-topic
kafkaBootStrapServers: localhost:9092
additionalProps: "{max.block.ms: 28500, linger.ms: 10, batch.size: 512000, buffer.memory: 1024000000, compression.type: snappy}"kafkaTopic
Kafka topic to produce messages to
kafkaBootStrapServers
Address of the kafka server, or servers comma separated.
additionalProps
String value of JSON encoded properties to set on Kafka producer. Any valid Kafka property can be used. Conflent Kafka Producer Configuration Reference
schemaFile
preprocessorConfig:
schemaFile: schema.yamlFor valid formatting options refer to Schema documentation.
serverConfig
preprocessorConfig:
serverConfig:
serverPort: 8081
serverAddress: 10.0.100.5
requestTimeoutMs: 55000preprocessorInstanceCount
preprocessorConfig:
preprocessorInstanceCount: 2Indicates how many instances of the preprocessor are currently deployed. Used for scaling rate limiters such that each
preprocessor instance will allow the total rate limit / preprocessor instance count through before applying.
rateLimiterMaxBurstSeconds
preprocessorConfig:
rateLimiterMaxBurstSeconds: 1Defines how many seconds rate limiting unused permits can be accumulated before no longer increasing.
Tip: Must be greater than or equal to 1.
rateLimitExceededErrorCode
preprocessorConfig:
rateLimitExceededErrorCode: 400Error code to return when the rate limit of the preprocessor is exceeded. If using OpenSearch
Data Prepper a return code of 400 or 404 would mark the request
as unable to be retried and sent to the dead letter queue.