Groups

November 30, 2020 ยท View on GitHub

GroupDescription
General SettingsCommon settings for the Operator.
NodesCommon configuration for Cassandra Nodes.
Liveness checksParameters to configure the liveness of a Cassandra Node. When a Node fails liveness checks, it is automatically restarted by Kubernetes.
Readiness checksParameters to configure the readiness of a Cassandra Node. When a Node fails readiness checks, it is automatically removed from the service by Kubernetes.
Backup and RestoreConfiguration related to backup and restore of the Cassandra Cluster.
RestoreOptions only required if a backup should be restored on installation.
External Cluster AccessAllow access to the Cassandra Cluster from outside Kubernetes.
Metrics ExportMetrics can be exported with the Prometheus Metrics Exporter.
Recovery ControllerThe Recovery Controller allows the Cluster to autoheal when a Kubernetes node fails.
RepairOptions to repair a node in the cluster.
Advanced ConfigurationAdvanced configuration that is only required for very advanced usecases.
Advanced NodesAdvanced configuration options for Cassandra nodes. These are not-commonly modifed settings. See https://cassandra.apache.org/doc/latest/configuration/cassandra_config_file.html and other Cassandra documentation for details on parameters.
SecuritySecurity related settings.
CachesCache related settings.
Racks and Datacenter AwarenessOptions related to Rack Awareness and Multi-Datacenter options.
Optimization SettingsSettings to fine-tune the Cassandra cluster and optimize the performance.
Safety ThresholdsWarning and Failure Thresholds.
NetworkNetwork related settings.
TimeoutsTimeouts.
Java Virtual Machine SettingsSettings related to the Java JVM and the Garbage Collector.
DirectoriesDirectory configurations. These should usually not be changed, as they probably require changes to the used docker image.

General Settings

Common settings for the Operator.

NameDescriptionDefault
NODE_COUNTThe number of Cassandra nodes to create for the cluster. Should be an odd number of nodes and at least 3 to create a useful quorum.3
NODE_CPU_MCCPU request for the Cassandra node containers.1000
NODE_CPU_LIMIT_MCCPU limit for the Cassandra node containers.1000
NODE_MEM_MIBMemory request for the Cassandra node containers.4096
NODE_MEM_LIMIT_MIBMemory limit for the Cassandra node containers.4096
NODE_DISK_SIZE_GIBDisk size (in GiB) for the Cassandra node containers.20
NODE_STORAGE_CLASSThe storage class to be used in volumeClaimTemplates. By default, it is not required and the default storage class is used.
NODE_DOCKER_IMAGECassandra node Docker image.mesosphere/cassandra:3.11.7-1.0.3
NODE_DOCKER_IMAGE_PULL_POLICYCassandra node Docker image pull policy.Always
POD_MANAGEMENT_POLICYParallel startup may decrease the startup time of big clusters but lead to failing pods in the beginning when two nodes try to join at the very same time.OrderedReady
OVERRIDE_CLUSTER_NAMEOverride the name of the Cassandra cluster set by the operator. This shouldn't be explicit set, unless you know what you're doing.

Nodes

Common configuration for Cassandra Nodes.

NameDescriptionDefault
NODE_TOLERATIONSA list of kubernetes tolerations to let pods get scheduled on tainted nodes.

Liveness checks

Parameters to configure the liveness of a Cassandra Node. When a Node fails liveness checks, it is automatically restarted by Kubernetes.

NameDescriptionDefault
NODE_LIVENESS_PROBE_INITIAL_DELAY_SNumber of seconds after the container has started before the liveness probe is initiated.15
NODE_LIVENESS_PROBE_PERIOD_SHow often (in seconds) to perform the liveness probe.20
NODE_LIVENESS_PROBE_TIMEOUT_SHow long (in seconds) to wait for a liveness probe to succeed.60
NODE_LIVENESS_PROBE_SUCCESS_THRESHOLDMinimum consecutive successes for the liveness probe to be considered successful after having failed.1
NODE_LIVENESS_PROBE_FAILURE_THRESHOLDWhen a pod starts and the liveness probe fails, failure_threshold attempts will be made before restarting the pod.3

Readiness checks

Parameters to configure the readiness of a Cassandra Node. When a Node fails readiness checks, it is automatically removed from the service by Kubernetes.

NameDescriptionDefault
NODE_READINESS_PROBE_INITIAL_DELAY_SNumber of seconds after the container has started before the readiness probe is initiated.0
NODE_READINESS_PROBE_PERIOD_SHow often (in seconds) to perform the readiness probe.5
NODE_READINESS_PROBE_TIMEOUT_SHow long (in seconds) to wait for a readiness probe to succeed.60
NODE_READINESS_PROBE_SUCCESS_THRESHOLDMinimum consecutive successes for the readiness probe to be considered successful after having failed.1
NODE_READINESS_PROBE_FAILURE_THRESHOLDWhen a pod starts and the readiness probe fails, failure_threshold attempts will be made before marking the pod as 'unready'.3

Backup and Restore

Configuration related to backup and restore of the Cassandra Cluster.

NameDescriptionDefault
BACKUP_RESTORE_ENABLEDGlobal flag that enables the medusa sidecar for backups.False
BACKUP_TRIGGERTrigger parameter to start a backup. Simply needs to be changed from the current value to start a backup.
BACKUP_AWS_CREDENTIALS_SECRETIf set, can be used to provide the access_key, secret_key and security_token with a secret.
BACKUP_AWS_S3_BUCKET_NAMEThe name of the AWS S3 bucket to store the backups.
BACKUP_AWS_S3_STORAGE_PROVIDERShould be one of the s3_* values from https://github.com/apache/libcloud/blob/trunk/libcloud/storage/types.py .s3_us_west_oregon
BACKUP_PREFIXIf a prefix is given, multiple different backups can be stored in the same S3 bucket.
BACKUP_MEDUSA_CPU_MCCPU request for the Medusa backup containers.100
BACKUP_MEDUSA_CPU_LIMIT_MCCPU limit for the Medusa backup containers.500
BACKUP_MEDUSA_MEM_MIBMemory request for the Medusa backup containers.256
BACKUP_MEDUSA_MEM_LIMIT_MIBMemory limit for the Medusa backup containers.512
BACKUP_MEDUSA_DOCKER_IMAGEMedusa backup Docker image which is used to make backups.mesosphere/kudo-cassandra-medusa:0.6.0-1.0.3
BACKUP_MEDUSA_DOCKER_IMAGE_PULL_POLICYThe Pull policy for the Medusa Docker Image.Always
BACKUP_NAMEThe name of the backup to create or restore.

Restore

Options only required if a backup should be restored on installation.

NameDescriptionDefault
RESTORE_FLAGWhen this is true, all backup configuration must point to an existing backup which is restored as a new cluster.False
RESTORE_OLD_NAMESPACEThe namespace from the operator that was used to create the backup.
RESTORE_OLD_NAMEThe instance name from the operator that was used to create the backup.

External Cluster Access

Allow access to the Cassandra Cluster from outside Kubernetes.

NameDescriptionDefault
EXTERNAL_SERVICENeeds to be true for either EXTERNAL_NATIVE_TRANSPORT or EXTERNAL_RPC to work.False
EXTERNAL_NATIVE_TRANSPORTThis exposes the Cassandra cluster via an external service so it can be accessed from outside the Kubernetes cluster.False
EXTERNAL_RPCThis exposes the Cassandra cluster via an external service so it can be accessed from outside the Kubernetes cluster. Works only if START_RPC is true.False
EXTERNAL_NATIVE_TRANSPORT_PORTThe external port to use for Cassandra native transport protocol.9042
EXTERNAL_RPC_PORTThe external port to use for Cassandra rpc protocol.9160
EXTERNAL_SERVICE_ANNOTATIONSCustom annotations for the external service.

Metrics Export

Metrics can be exported with the Prometheus Metrics Exporter.

NameDescriptionDefault
PROMETHEUS_EXPORTER_ENABLEDA toggle to enable the prometheus metrics exporter.False
PROMETHEUS_EXPORTER_CUSTOM_CONFIG_CM_NAMEThe properties present in this configmap will be appended to the prometheus configuration properties.
PROMETHEUS_EXPORTER_PORTPrometheus exporter port.7200
PROMETHEUS_EXPORTER_CPU_MCCPU request for the Prometheus exporter containers.500
PROMETHEUS_EXPORTER_CPU_LIMIT_MCCPU limit for the Prometheus exporter containers.1000
PROMETHEUS_EXPORTER_MEM_MIBMemory request for the Prometheus exporter containers.512
PROMETHEUS_EXPORTER_MEM_LIMIT_MIBMemory limit for the Prometheus exporter containers.512
PROMETHEUS_EXPORTER_DOCKER_IMAGEThe docker image of the Prometheus exporter.mesosphere/cassandra-prometheus-exporter:2.3.4-1.0.3
PROMETHEUS_EXPORTER_DOCKER_IMAGE_PULL_POLICYPrometheus exporter Docker image pull policy.Always

Recovery Controller

The Recovery Controller allows the Cluster to autoheal when a Kubernetes node fails.

NameDescriptionDefault
RECOVERY_CONTROLLERNeeds to be true for automatic failure recovery and node eviction.False
RECOVERY_CONTROLLER_DOCKER_IMAGEDocker image for the recovery controller.mesosphere/kudo-cassandra-recovery:0.0.2-1.0.3
RECOVERY_CONTROLLER_DOCKER_IMAGE_PULL_POLICYRecovery controller Docker image pull policy.Always
RECOVERY_CONTROLLER_CPU_MCCPU request for the Recovery controller container.50
RECOVERY_CONTROLLER_CPU_LIMIT_MCCPU limit for the Recovery controller container.200
RECOVERY_CONTROLLER_MEM_MIBMemory request for the Recovery controller container.50
RECOVERY_CONTROLLER_MEM_LIMIT_MIBMemory limit for the Recovery controller container.256

Repair

Options to repair a node in the cluster.

NameDescriptionDefault
REPAIR_PODName of the pod on which 'nodetool repair' should be run.

Advanced Configuration

Advanced configuration that is only required for very advanced usecases.

NameDescriptionDefault
BOOTSTRAP_TIMEOUTTimeout for the bootstrap binary to join the cluster with the new IP. .12h30m
SHUTDOWN_OLD_REACHABLE_NODEWhen a node replace is done, try to connect to the old node and shut it down before starting up the old node.False
JOLOKIA_PORTThe internal port for the Jolokia Agent. This port is not exposed, but can be changed if it conflicts with another port.7777
CUSTOM_CASSANDRA_YAML_BASE64Base64-encoded Cassandra properties are appended to cassandra.yaml and overwrite the default values.
KUBECTL_VERSIONVersion of 'bitnami/kubectl' image. This image is used for some functionality of the operator.1.18.4

Advanced Nodes

Advanced configuration options for Cassandra nodes. These are not-commonly modifed settings. See https://cassandra.apache.org/doc/latest/configuration/cassandra_config_file.html and other Cassandra documentation for details on parameters.

NameDescriptionDefault
STORAGE_PORTThe port for inter-node communication.7000
SSL_STORAGE_PORTThe port for inter-node communication over SSL.7001
START_NATIVE_TRANSPORTIf true, CQL is enabled.True
NATIVE_TRANSPORT_PORTThe port for CQL communication.9042
NATIVE_TRANSPORT_MAX_THREADSThe maximum number of thread handling requests.
NATIVE_TRANSPORT_MAX_FRAME_SIZE_IN_MBThe maximum allowed size of a frame. If you're changing this parameter, you may want to adjust max_value_size_in_mb accordingly. This should be positive and less than 2048.
NATIVE_TRANSPORT_MAX_CONCURRENT_CONNECTIONSThe maximum number of concurrent client connections. Defaults to -1, meaning unlimited.
NATIVE_TRANSPORT_MAX_CONCURRENT_CONNECTIONS_PER_IPThe maximum number of concurrent client connections per source IP address. Defaults to -1, meaning unlimited.
RPC_PORTThe port for Thrift RPC communication.9160
JMX_PORTThe JMX port that will be used to interface with the Cassandra application.7199
RMI_PORTThe RMI port that will be used to interface with the Cassandra application when TRANSPORT_ENCRYPTION_ENABLED is set.7299
JMX_LOCAL_ONLYIf true, the JMX port will only be opened on localhost and not be available inside the Kubernetes cluster.True
START_RPCIf true, Thrift RPC is enabled. This is deprecated but may be necessary for legacy applications.False
RPC_SERVER_TYPECassandra provides two options for the RPC server. sync and hsha performance is about the same, but hsha uses less memory. (https://docs.datastax.com/en/dse/5.1/dse-dev/datastax_enterprise/config/configCassandra_yaml.html#configCassandra_yaml__rpc_server_type).sync
RPC_KEEPALIVEEnables or disables keepalive on client connections (RPC or native).True
RPC_MIN_THREADSThe minimum thread pool size for remote procedure calls.
RPC_MAX_THREADSThe maximum thread pool size for remote procedure calls.
RPC_SEND_BUFF_SIZE_IN_BYTESThe sending socket buffer size in bytes for remote procedure calls.
RPC_RECV_BUFF_SIZE_IN_BYTESThe receiving socket buffer size for remote procedure calls.
PARTITIONERThe partitioner used to distribute rows across the cluster. Murmur3Partitioner is the recommended setting. RandomPartitioner and ByteOrderedPartitioner are supported for legacy applications.org.apache.cassandra.dht.Murmur3Partitioner
SEED_PROVIDER_CLASSThe class within Cassandra that handles the seed logic. (https://cassandra.apache.org/doc/latest/configuration/cassandra_config_file.html#seed-provider)org.apache.cassandra.locator.SimpleSeedProvider
NUM_TOKENSThe number of tokens assigned to each node.256
HINTED_HANDOFF_ENABLEDIf true, hinted handoff is enabled for the cluster. (https://cassandra.apache.org/doc/latest/operating/hints.html#hinted-handoff)True
MAX_HINT_WINDOW_IN_MSThe maximum amount of time, in ms, that hints are generated for an unresponsive node.10800000
HINTED_HANDOFF_THROTTLE_IN_KBThe maximum throttle per delivery thread in KBs per second.1024
MAX_HINTS_DELIVERY_THREADSThe maximum number of delivery threads for hinted handoff.2
BATCHLOG_REPLAY_THROTTLE_IN_KBThe total maximum throttle for replaying failed logged batches in KBs per second.1024
MAX_HINTS_FILE_SIZE_IN_MBThe maximum size of a single hints file in Mb.128
COMMITLOG_TOTAL_SPACE_IN_MBThe total size of the commit log in Mb.
AUTO_SNAPSHOTTake a snapshot of the data before truncating a keyspace or dropping a table.True
MEMTABLE_HEAP_SPACE_IN_MBThe amount of on-heap memory allocated for memtables.
MEMTABLE_OFFHEAP_SPACE_IN_MBThe total amount of off-heap memory allocated for memtables.
STREAMING_KEEP_ALIVE_PERIOD_IN_SECSInterval to send keep-alive messages. The stream session fails when a keep-alive message is not received for 2 keep-alive cycles.
PHI_CONVICT_THRESHOLDThe sensitivity of the failure detector on an exponential scale.
REQUEST_SCHEDULERThe scheduler to handle incoming client requests according to a defined policy. This scheduler is useful for throttling client requests in single clusters containing multiple keyspaces.org.apache.cassandra.scheduler.NoScheduler
INCREMENTAL_BACKUPSBacks up data updated since the last snapshot was taken. When enabled, Cassandra creates a hard link to each SSTable flushed or streamed locally in a backups subdirectory of the keyspace data.False
SNAPSHOT_BEFORE_COMPACTIONEnables or disables taking a snapshot before each compaction. A snapshot is useful to back up data when there is a data format change.False
COMMIT_FAILURE_POLICYPolicy for commit disk failures. (https://cassandra.apache.org/doc/latest/configuration/cassandra_config_file.html#commit-failure-policy).stop
INDEX_SUMMARY_CAPACITY_IN_MBFixed memory pool size in MB for SSTable index summaries.
ENDPOINT_SNITCHSet to a class that implements the IEndpointSnitch interface. Cassandra uses the snitch to locate nodes and route requests.SimpleSnitch
DISK_FAILURE_POLICYThe policy for how Cassandra responds to disk failure. (https://cassandra.apache.org/doc/latest/configuration/cassandra_config_file.html#disk-failure-policy).stop
ENABLE_USER_DEFINED_FUNCTIONSUser defined functions (UDFs) present a security risk, since they are executed on the server side. UDFs are executed in a sandbox to contain the execution of malicious code.False
ENABLE_SCRIPTED_USER_DEFINED_FUNCTIONSJava UDFs are always enabled, if enable_user_defined_functions is true. Enable this option to use UDFs with language javascript or any custom JSR-223 provider. This option has no effect if enable_user_defined_functions is false.False
ENABLE_MATERIALIZED_VIEWSEnables materialized view creation on this node. Materialized views are considered experimental and are not recommended for production use.False
CDC_ENABLEDEnable / disable CDC functionality on a per-node basis. This modifies the logic used for write path allocation rejection.False
CDC_TOTAL_SPACE_IN_MBTotal space to use for change-data-capture (CDC) logs on disk. .
CDC_FREE_SPACE_CHECK_INTERVAL_MSInterval between checks for new available space for CDC-tracked tables when the cdc_total_space_in_mb threshold is reached and the CDCCompactor is running behind or experiencing back pressure.
COLUMN_INDEX_SIZE_IN_KBThe granularity of the index of rows within a partition. For huge rows, decrease this setting to improve seek time. If you use key cache, be careful not to make this setting too large because key cache will be overwhelmed.64
ALLOCATE_TOKENS_FOR_KEYSPACETriggers automatic allocation of num_tokens tokens for this node. The allocation algorithm attempts to choose tokens in a way that optimizes replicated load over the nodes in the datacenter for the replication strategy used by the specified keyspace.
REPAIR_SESSION_MAX_TREE_DEPTHLimits the maximum Merkle tree depth to avoid consuming too much memory during repairs.
ENABLE_SASI_INDEXESEnables SASI index creation on this node. SASI indexes are considered experimental and are not recommended for production use.
JVM_OPT_JOIN_RINGSet to false to start Cassandra on a node but not have the node join the cluster.
JVM_OPT_LOAD_RING_STATESet to false to clear all gossip state for the node on restart. Use when you have changed node information in cassandra.yaml (such as listen_address).
JVM_OPT_REPLAYLISTAllow restoring specific tables from an archived commit log.
JVM_OPT_RING_DELAY_MSAllows overriding of the default RING_DELAY (30000ms), which is the amount of time a node waits before joining the ring.
JVM_OPT_WRITE_SURVEYFor testing new compaction and compression strategies. It allows you to experiment with different strategies and benchmark write performance differences without affecting the production workload.
JVM_OPT_FORCE_DEFAULT_INDEXING_PAGE_SIZETo disable dynamic calculation of the page size used when indexing an entire partition (during initial index build/rebuild). If set to true, the page size will be fixed to the default of 10000 rows per page.
JVM_OPT_EXPIRATION_DATE_OVERFLOW_POLICYDefines how to handle INSERT requests with TTL exceeding the maximum supported expiration date. (https://docs.datastax.com/en/dse/6.0/dse-dev/datastax_enterprise/config/cassandraSystemProperties.html)

Security

Security related settings.

NameDescriptionDefault
TRANSPORT_ENCRYPTION_ENABLEDEnable node-to-node encryption.False
TRANSPORT_ENCRYPTION_CLIENT_ENABLEDEnable client-to-node encryption.False
TRANSPORT_ENCRYPTION_CIPHERSComma-separated list of JSSE Cipher Suite Names. Might require changes to the installed Java Runtime.TLS_RSA_WITH_AES_128_CBC_SHA,TLS_RSA_WITH_AES_256_CBC_SHA,TLS_DHE_RSA_WITH_AES_128_CBC_SHA,TLS_DHE_RSA_WITH_AES_256_CBC_SHA,TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA,TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA
TRANSPORT_ENCRYPTION_CLIENT_ALLOW_PLAINTEXTEnable Server-Client plaintext communication alongside encrypted traffic.False
TRANSPORT_ENCRYPTION_REQUIRE_CLIENT_AUTHEnable client certificate authentication on node-to-node transport encryption.True
TRANSPORT_ENCRYPTION_CLIENT_REQUIRE_CLIENT_AUTHEnable client certificate authentication on client-to-node transport encryption.True
TLS_SECRET_NAMEThe TLS secret that contains the self-signed certificate (cassandra.crt) and the private key (cassandra.key). The secret will be mounted as a volume to make the artifacts available.cassandra-tls
AUTHENTICATORAuthentication backend, implementing IAuthenticator; used to identify users. (https://cassandra.apache.org/doc/latest/operating/security.html#authentication)AllowAllAuthenticator
AUTHENTICATION_SECRET_NAMEThe secret must contain the credentials used by the operator when running 'nodetool' for its functionality. Only relevant if AUTHENTICATOR is set to 'PasswordAuthenticator'. The secret needs to have a 'username' and a 'password' entry.
AUTHORIZERAuthorization backend, implementing IAuthorizer; used to limit access/provide permissions. (https://cassandra.apache.org/doc/latest/operating/security.html#authorization)AllowAllAuthorizer
ROLE_MANAGERPart of the Authentication & Authorization backend that implements IRoleManager to maintain grants and memberships between roles, By default, the value set is Apache Cassandra's out of the box Role Manager: CassandraRoleManager. (https://cassandra.apache.org/doc/latest/operating/security.html#roles)CassandraRoleManager
ROLES_VALIDITY_IN_MSValidity period for roles cache; set to 0 to disable.2000
ROLES_UPDATE_INTERVAL_IN_MSAfter this interval, cache entries become eligible for refresh. Upon next access, Cassandra schedules an async reload, and returns the old value until the reload completes. If roles_validity_in_ms is non-zero, then this must be also.
CREDENTIALS_VALIDITY_IN_MSThis cache is tightly coupled to the provided PasswordAuthenticator implementation of IAuthenticator. If another IAuthenticator implementation is configured, Cassandra does not use this cache, and these settings have no effect. Set to 0 to disable.2000
CREDENTIALS_UPDATE_INTERVAL_IN_MSAfter this interval, cache entries become eligible for refresh. The next time the cache is accessed, the system schedules an asynchronous reload of the cache. Until this cache reload is complete, the cache returns the old values. If credentials_validity_in_ms is nonzero, this property must also be nonzero.
PERMISSIONS_VALIDITY_IN_MSHow many milliseconds permissions in cache remain valid. Fetching permissions can be resource intensive. To disable the cache, set this to 0.2000
PERMISSIONS_UPDATE_INTERVAL_IN_MSIf enabled, sets refresh interval for the permissions cache. After this interval, cache entries become eligible for refresh. On next access, Cassandra schedules an async reload and returns the old value until the reload completes. If permissions_validity_in_ms is nonzero, permissions_update_interval_in_ms must also be non-zero.
INTERNODE_AUTHENTICATORThe internode authentication backend.
JVM_OPT_DISABLE_AUTH_CACHES_REMOTE_CONFIGURATIONTo disable configuration via JMX of auth caches (such as those for credentials, permissions and roles). This will mean those config options can only be set (persistently) in cassandra.yaml and will require a restart for new values to take effect.

Caches

Cache related settings.

NameDescriptionDefault
KEY_CACHE_SIZE_IN_MBA global cache setting for the maximum size of the key cache in memory (for all tables). .
KEY_CACHE_SAVE_PERIODThe duration in seconds that keys are saved in cache. Saved caches greatly improve cold-start speeds and has relatively little effect on I/O.14400
KEY_CACHE_KEYS_TO_SAVEThe number of keys from the key cache to save.
COUNTER_CACHE_SIZE_IN_MBMaximum size of the counter cache in memory. When no value is set, Cassandra uses the smaller of minimum of 2.5% of Heap or 50MB.
COUNTER_CACHE_SAVE_PERIODThe amount of time after which Cassandra saves the counter cache (keys only).7200
COUNTER_CACHE_KEYS_TO_SAVEThe number of keys from the counter cache to save.
ROW_CACHE_SIZE_IN_MBMaximum size of the row cache in memory. Row cache can save more time than key_cache_size_in_mb, but is space-intensive because it contains the entire row. Use the row cache only for hot rows or static rows. 0 disables the row cache.0
ROW_CACHE_SAVE_PERIODDuration in seconds that rows are saved in cache. 0 disables saving .0
ROW_CACHE_KEYS_TO_SAVEThe number of keys from the row cache to save.
FILE_CACHE_SIZE_IN_MBThe total memory to use for SSTable-reading buffers. Defaults to the smaller of 1/4 of heap or 512MB.
ROW_CACHE_CLASS_NAMERow cache implementation class name. Can be 'org.apache.cassandra.cache.OHCProvider' (default) or 'org.apache.cassandra.cache.SerializingCacheProvider'.
BUFFER_POOL_USE_HEAP_IF_EXHAUSTEDAllocate on-heap memory when the SSTable buffer pool is exhausted.
PREPARED_STATEMENTS_CACHE_SIZE_MBMaximum size of the native protocol prepared statement cache.
THRIFT_PREPARED_STATEMENTS_CACHE_SIZE_MBMaximum size of the Thrift prepared statement cache. Leave empty if you do not use Thrift/RPC.
COLUMN_INDEX_CACHE_SIZE_IN_KBA threshold for the total size of all index entries for a partition that the database stores in the partition key cache.2

Racks and Datacenter Awareness

Options related to Rack Awareness and Multi-Datacenter options.

NameDescriptionDefault
NODE_TOPOLOGYThis describes a multi-datacenter setup. When set it has precedence over NODE_COUNT. See docs/multidatacenter.md for more details.
SERVICE_ACCOUNT_INSTALLIf true, the operator automatically installs a cluster role, service account and role binding. This is required for advanced functionality of multi-datacenter setups.False
NODE_ANTI_AFFINITYEnsure that every Cassandra node is deployed on a separate Kubernetes node. (https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#inter-pod-affinity-and-anti-affinity)False
EXTERNAL_SEED_NODESList of seed nodes external to this instance to add to the cluster. This allows clusters spanning multiple Kubernetes clusters.
INTER_DC_TCP_NODELAYEnable or disable tcp_nodelay for inter-dc communication. Disabling it will result in larger (but fewer) network packets being sent, reducing overhead from the TCP protocol itself, at the cost of increasing latency if you block for cross-datacenter responses.

Optimization Settings

Settings to fine-tune the Cassandra cluster and optimize the performance.

NameDescriptionDefault
COMMITLOG_SYNCThe method that Cassandra uses to acknowledge writes in milliseconds.periodic
COMMITLOG_SYNC_PERIOD_IN_MSThe number of milliseconds between disk fsync calls.5000
COMMITLOG_SYNC_BATCH_WINDOW_IN_MSTime to wait between batch fsyncs, if commitlog_sync is in batch mode then default value should be: 2.
COMMITLOG_SEGMENT_SIZE_IN_MBThe size of each commit log segment in Mb.32
CONCURRENT_READSFor workloads with more data than can fit in memory, the bottleneck is reads fetching data from disk. Setting to (16 times the number of drives) allows operations to queue low enough in the stack so that the OS and drives can reorder them.16
CONCURRENT_WRITESWrites in Cassandra are rarely I/O bound, so the ideal number of concurrent writes depends on the number of CPU cores in your system. The recommended value is 8 times the number of cpu cores.32
CONCURRENT_COUNTER_WRITESCounter writes read the current values before incrementing and writing them back. The recommended value is (16 times the number of drives) .16
CONCURRENT_MATERIALIZED_VIEW_WRITESThe maximum number of concurrent writes to materialized views.32
MEMTABLE_ALLOCATION_TYPEThe type of allocations for the Cassandra memtable. heap_buffers keep all data on the JVM heap. offheap_buffers may reduce heap utilization for large string or binary values. offheap_objects may improve heap size for small integers or UUIDs as well. Both off heap options will increase read latency. (https://cassandra.apache.org/doc/latest/configuration/cassandra_config_file.html#memtable-allocation-type ).heap_buffers
INDEX_SUMMARY_RESIZE_INTERVAL_IN_MINUTESHow frequently index summaries should be re-sampled in minutes. This is done periodically to redistribute memory from the fixed-size pool to SSTables proportional their recent read rates.60
TRICKLE_FSYNCWhen set to true, causes fsync to force the operating system to flush the dirty buffers at the set interval.false
TRICKLE_FSYNC_INTERVAL_IN_KBThe size of the fsync in kilobytes.10240
COMPACTION_THROUGHPUT_MB_PER_SECThrottles compaction to the specified total throughput across the node. Compaction frequency varies with direct proportion to write throughput and is necessary to limit the SSTable size. The recommended value is 16 to 32 times the rate of write throughput (in MB/second).64
SSTABLE_PREEMPTIVE_OPEN_INTERVAL_IN_MBWhen compacting, the replacement opens SSTables before they are completely written and uses in place of the prior SSTables for any range previously written. This setting helps to smoothly transfer reads between the SSTables by reducing page cache churn and keeps hot rows hot.50
DYNAMIC_SNITCH_UPDATE_INTERVAL_IN_MSThe time, in ms, the snitch will wait before updating node scores.100
DYNAMIC_SNITCH_RESET_INTERVAL_IN_MSThe time, in ms, the snitch will wait before resetting node scores allowing bad nodes to recover.600000
DYNAMIC_SNITCH_BADNESS_THRESHOLDSets the performance threshold for dynamically routing client requests away from a poorly performing node.0.1
HINTS_FLUSH_PERIOD_IN_MSThe time, in ms, for the period in which hints are flushed to disk.10000
MEMTABLE_CLEANUP_THRESHOLDThe ratio used for automatic memtable flush.
MEMTABLE_FLUSH_WRITERSThe number of memtable flush writer threads.
CONCURRENT_COMPACTORSThe number of concurrent compaction processes allowed to run simultaneously on a node.
DISK_OPTIMIZATION_STRATEGYThe strategy for optimizing disk reads. (https://cassandra.apache.org/doc/latest/configuration/cassandra_config_file.html#disk-optimization-strategy).
TRACETYPE_QUERY_TTLTTL for different trace types used during logging of the query process.
TRACETYPE_REPAIR_TTLTTL for different trace types used during logging of the repair process.
JVM_OPT_AVAILABLE_PROCESSORSIn a multi-instance deployment, multiple Cassandra instances will independently assume that all CPU processors are available to it. This setting allows you to specify a smaller set of processors and perhaps have affinity.

Safety Thresholds

Warning and Failure Thresholds.

NameDescriptionDefault
TOMBSTONE_WARN_THRESHOLDThe maximum number of tombstones a query can scan before warning.1000
TOMBSTONE_FAILURE_THRESHOLDThe maximum number of tombstones a query can scan before aborting.100000
BATCH_SIZE_WARN_THRESHOLD_IN_KBWarn the operator on a batch size exceeding this value in kilobytes. Caution should be taken on increasing the size of this threshold as it can lead to node instability.5
BATCH_SIZE_FAIL_THRESHOLD_IN_KBFail batch sizes exceeding this value in kilobytes. Caution should be taken on increasing the size of this threshold as it can lead to node instability.50
UNLOGGED_BATCH_ACROSS_PARTITIONS_WARN_THRESHOLDCauses Cassandra to log a WARN message on any batches not of type LOGGED that span across more partitions than this limit.10
COMPACTION_LARGE_PARTITION_WARNING_THRESHOLD_MBCassandra logs a warning when compacting partitions larger than the set value.100
GC_WARN_THRESHOLD_IN_MSAny GC pause longer than this interval is logged at the WARN level.1000
GC_LOG_THRESHOLD_IN_MSGC Pauses greater than this interval will be logged at INFO level. This threshold can be adjusted to minimize logging if necessary.200
MAX_VALUE_SIZE_IN_MBThe maximum size of any value in SSTables.
SLOW_QUERY_LOG_TIMEOUT_IN_MSHow long before a node logs slow queries. Select queries that exceed this value generate an aggregated log message to identify slow queries. To disable, set to 0.500

Network

Network related settings.

NameDescriptionDefault
THRIFT_FRAMED_TRANSPORT_SIZE_IN_MBFrame size (maximum field length) for Thrift.15
INTERNODE_SEND_BUFF_SIZE_IN_BYTESSet socket buffer size for internode communication Note that when setting this, the buffer size is limited by net.core.wmem_max and when not setting it it is defined by net.ipv4.tcp_wm.
INTERNODE_RECV_BUFF_SIZE_IN_BYTESSet socket buffer size for internode communication Note that when setting this, the buffer size is limited by net.core.wmem_max and when not setting it it is defined by net.ipv4.tcp_wmem.
INTERNODE_COMPRESSIONControls whether traffic between nodes is compressed. all compresses all traffic. none compresses no traffic. dc compresses between datacenters.dc
OTC_COALESCING_STRATEGYThe strategy to use for coalescing network messages. (https://cassandra.apache.org/doc/latest/configuration/cassandra_config_file.html#otc-coalescing-strategy).
OTC_COALESCING_WINDOW_USHow many microseconds to wait for coalescing.
OTC_COALESCING_ENOUGH_COALESCED_MESSAGESDo not try to coalesce messages if we already got that many messages. This should be more than 2 and less than 128.
OTC_BACKLOG_EXPIRATION_INTERVAL_MSHow many milliseconds to wait between two expiration runs on the backlog (queue) of the OutboundTcpConnection.
LISTEN_ON_BROADCAST_ADDRESSListen on the address set in broadcast_address property.
STREAM_THROUGHPUT_OUTBOUND_MEGABITS_PER_SECThe maximum throughput of all outbound streaming file transfers on a node.
INTER_DC_STREAM_THROUGHPUT_OUTBOUND_MEGABITS_PER_SECThe maximum throughput of all streaming file transfers between datacenters.
JVM_OPT_PREFER_IPV4_STACKPrefer binding to IPv4 network intefaces (when net.ipv6.bindv6only=1). See http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6342561 (short version: comment out this entry to enable IPv6 support).True

Timeouts

Timeouts.

NameDescriptionDefault
READ_REQUEST_TIMEOUT_IN_MSThe time that the coordinator waits for read operations to complete in ms.5000
RANGE_REQUEST_TIMEOUT_IN_MSThe time that the coordinator waits for range scans complete in ms.10000
WRITE_REQUEST_TIMEOUT_IN_MSThe time that the coordinator waits for write operations to complete in ms.2000
COUNTER_WRITE_REQUEST_TIMEOUT_IN_MSThe time that the coordinator waits for counter write operations to complete in ms.5000
CAS_CONTENTION_TIMEOUT_IN_MSThe time for which the coordinator will retry CAS operations on the same row in ms.1000
TRUNCATE_REQUEST_TIMEOUT_IN_MSThe time that the coordinator waits for truncate operations to complete in ms.60000
REQUEST_TIMEOUT_IN_MSThe default timeout for all other requests in ms.10000
CROSS_NODE_TIMEOUTOperation timeout information exchange between nodes (to accurately measure request timeouts).False

Java Virtual Machine Settings

Settings related to the Java JVM and the Garbage Collector.

NameDescriptionDefault
NODE_MIN_HEAP_SIZE_MBThe minimum JVM heap size in MB. This has a smart default and doesn't need to be explicitly set.
NODE_MAX_HEAP_SIZE_MBThe maximum JVM heap size in MB. This has a smart default and doesn't need to be explicitly set.
NODE_NEW_GENERATION_HEAP_SIZE_MBThe JVM new generation heap size in MB.
JVM_OPT_THREAD_PRIORITY_POLICYAllows lowering thread priority without being root on linux - probably not necessary on Windows but doesn't harm anything.0
JVM_OPT_THREAD_STACK_SIZEPer-thread stack size.256k
JVM_OPT_STRING_TABLE_SIZELarger interned string table, for gossip's benefit (CASSANDRA-6410).1000003
JVM_OPT_SURVIVOR_RATIOThe Ratio between eden and survivor space parts of the heap. A value of 6 sets the ratio between eden and a survivor space to 1:6. In other words, each survivor space will be one-sixth the size of eden, and thus one-eighth the size of the young generation (not one-seventh, because there are two survivor spaces).
JVM_OPT_MAX_TENURING_THRESHOLDThe number of times an object is moved between eden spaces before it is promoted to the survivor (old-gen) space.
JVM_OPT_CMS_INITIATING_OCCUPANCY_FRACTIONThe amount of heap that needs to be full before a CMS GC cycle is triggered.
JVM_OPT_USE_CMS_INITIATING_OCCUPANCY_ONLYIf set to true, the GC will not autodetect when to trigger a GC cycle, only the defined CMSInitiatingOccupancyFraction.
JVM_OPT_CMS_WAIT_DURATIONOnce CMS collection is triggered, it will wait for next young collection to perform initial mark right after. This parameter specifies how long CMS can wait for young collection.
JVM_OPT_PARALLEL_GC_THREADSFor systems with > 8 cores, the default ParallelGCThreads is 5/8 the number of logical cores. Otherwise equal to the number of cores when 8 or less. Machines with > 10 cores should try setting these to <= full cores.
JVM_OPT_CONC_GC_THREADSBy default, ConcGCThreads is 1/4 of ParallelGCThreads. Setting both to the same value can reduce STW durations.
JVM_OPT_NUMBER_OF_GC_LOG_FILESGC logging options: NumberOfGCLogFiles.10
JVM_OPT_GC_LOG_FILE_SIZEGC logging options: GCLOGFILESIZE.10M
JVM_OPT_GC_LOG_DIRECTORYGC logging options: GC_LOG_DIRECTORY.
JVM_OPT_PRINT_FLS_STATISTICSGC logging options: PrintFLSStatistics.
CUSTOM_JVM_OPTIONS_BASE64Base64-encoded JVM options are appended to the default jvm.options and overwrite existing values there.

Directories

Directory configurations. These should usually not be changed, as they probably require changes to the used docker image.

NameDescriptionDefault
HINTS_DIRECTORYDirectory where Cassandra should store hints.
COMMITLOG_DIRECTORYWhen running on magnetic HDD, this should be a separate spindle than the data directories. If not set, the default directory is $CASSANDRA_HOME/data/commitlog.
CDC_RAW_DIRECTORYCommitLogSegments are moved to this directory on flush if cdc_enabled: true and the segment contains mutations for a CDC-enabled table.
SAVED_CACHES_DIRECTORYSaved caches. If not set, the default directory is $CASSANDRA_HOME/data/saved_caches.
JVM_OPT_TRIGGERS_DIRSet the default location for the trigger JARs. (Default: conf/triggers).

Ungrouped Parameters

All parameters that are not assigned to a specific group.

NameDescriptionDefault
PERMISSIONS_CACHE_MAX_ENTRIESThe maximum number of entries that are held by the standard authentication cache and row-level access control (RLAC) cache.1000