Docker Variables

The Reaper Docker container has been designed to be highly configurable. Many of the environment variables map directly or indirectly to a settings in the cassandra-reaper.yaml configuration file.

Direct Mapping to Reaper Specific Configuration Settings

The Docker environment variables listed in this section map directly to Reaper specific settings in the cassandra-reaper.yaml configuration file. The following table below lists the Docker environment variables, their associated Reaper specific setting in the cassandra-reaper.yaml configuration file, and the default value assigned by the Docker container (if any). Definitions for each Docker environment variable can be found via the link to the associated setting.

Environment Variable Configuration Setting Default Value
REAPER_AUTO_SCHEDULING_ENABLED enabled false
REAPER_AUTO_SCHEDULING_EXCLUDED_KEYSPACES excludedKeyspaces []
REAPER_AUTO_SCHEDULING_EXCLUDED_CLUSTERS excludedClusters []
REAPER_AUTO_SCHEDULING_INITIAL_DELAY_PERIOD initialDelayPeriod PT15S
REAPER_AUTO_SCHEDULING_PERIOD_BETWEEN_POLLS periodBetweenPolls PT10M
REAPER_AUTO_SCHEDULING_SCHEDULE_SPREAD_PERIOD scheduleSpreadPeriod PT6H
REAPER_AUTO_SCHEDULING_TIME_BEFORE_FIRST_SCHEDULE timeBeforeFirstSchedule PT5M
REAPER_AUTO_SCHEDULING_ADAPTIVE adaptive true
REAPER_AUTO_SCHEDULING_INCREMENTAL incremental false
REAPER_AUTO_SCHEDULING_PERCENT_UNREPAIRED_THRESHOLD percentUnrepairedThreshold 10
REAPER_BLACKLIST_TWCS blacklistTwcsTables false
REAPER_DATACENTER_AVAILABILITY datacenterAvailability ALL
REAPER_ENABLE_CROSS_ORIGIN enableCrossOrigin true
REAPER_ENABLE_DYNAMIC_SEED_LIST enableDynamicSeedList true
REAPER_HANGING_REPAIR_TIMEOUT_MINS hangingRepairTimeoutMins 30
REAPER_INCREMENTAL_REPAIR incrementalRepair false
REAPER_SUBRANGE_INCREMENTAL subrangeIncrementalRepair false
REAPER_JMX_AUTH_PASSWORD password
REAPER_JMX_AUTH_USERNAME username
REAPER_JMX_CREDENTIALS jmxCredentials
REAPER_JMX_CONNECTION_TIMEOUT_IN_SECONDS jmxConnectionTimeoutInSeconds 20
REAPER_JMX_PORTS jmxPorts {}
REAPER_LOGGING_APPENDERS_CONSOLE_LOG_FORMAT logFormat “%-6level [%d] [%t] %logger{5} - %msg %n”
REAPER_LOGGING_APPENDERS_CONSOLE_THRESHOLD threshold INFO
REAPER_LOGGING_LOGGERS loggers {}
REAPER_LOGGING_ROOT_LEVEL level INFO
REAPER_MAX_PENDING_COMPACTIONS maxPendingCompactions 20
REAPER_METRICS_FREQUENCY fequency 1 minute
REAPER_METRICS_REPORTERS reporters []
REAPER_REPAIR_INTENSITY repairIntensity 0.9
REAPER_REPAIR_MANAGER_SCHEDULING_INTERVAL_SECONDS repairManagerSchedulingIntervalSeconds 30
REAPER_REPAIR_PARALELLISM repairParallelism DATACENTER_AWARE
REAPER_REPAIR_RUN_THREADS repairRunThreadCount 15
REAPER_SCHEDULE_DAYS_BETWEEN scheduleDaysBetween 7
REAPER_SEGMENT_COUNT_PER_NODE segmentCountPerNode 64
REAPER_SERVER_ADMIN_BIND_HOST bindHost 0.0.0.0
REAPER_SERVER_ADMIN_PORT port 8081
REAPER_SERVER_APP_BIND_HOST bindHost 0.0.0.0
REAPER_SERVER_APP_PORT port 8080
REAPER_STORAGE_TYPE storageType memory
REAPER_USE_ADDRESS_TRANSLATOR useAddressTranslator false
REAPER_MAX_PARALLEL_REPAIRS maxParallelRepairs 2
CRYPTO_SYSTEM_PROPERTY_SECRET cryptograph/systemPropertySecret Unset
REAPER_HTTP_MANAGEMENT_ENABLE httpManagement/enabled false
REAPER_HTTP_MANAGEMENT_KEYSTORE_PATH httpManagement/keystorePath
REAPER_HTTP_MANAGEMENT_TRUSTSTORE_PATH httpManagement/truststorePath
REAPER_HTTP_MANAGEMENT_TRUSTSTORES_DIR httpManagement/truststoresDir
REAPER_MGMT_API_METRICS_PORT mgmtApiMetricsPort 9000
REAPER_PURGE_RECORDS_AFTER_IN_DAYS purgeRecordsAfterInDays 30

Runtime Configuration Variables

The following Docker environment variables control runtime behavior and do not map directly to configuration file settings:

Environment Variable Description Default Value
REAPER_HEAP_SIZE JVM heap size for the Reaper process 1G
REAPER_TMP_DIRECTORY Temporary directory for Reaper operations /var/tmp/cassandra-reaper
REAPER_MEMORY_STORAGE_DIRECTORY Directory for memory storage persistence /var/lib/cassandra-reaper/storage
JAVA_OPTS Additional JVM options to pass to the Reaper process

Cluster Registration Variables

The following Docker environment variables are used when running the register-clusters command:

Environment Variable Description Default Value
REAPER_AUTO_SCHEDULING_SEEDS Comma-separated list of ‘host:port’ entries for Cassandra nodes
REAPER_HOST Hostname of the Reaper instance
REAPER_PORT Port of the Reaper instance 8080

Using Address translator mapping

The Docker environment variables listed in this section are those related to the feature address translator mapping.

Environment Variable Configuration Setting Example Values
REAPER_CASS_ADDRESS_TRANSLATOR_TYPE addressTranslator ec2MultiRegion or multiIpPerNode
REAPER_CASS_ADDRESS_TRANSLATOR_MAPPING addressTranslator host1:ip1,host2:ip2,host3:ip3
JMX_ADDRESS_TRANSLATOR_TYPE jmxAddressTranslator ec2MultiRegion or multiIpPerNode
JMX_ADDRESS_TRANSLATOR_MAPPING jmxAddressTranslator host1:ip1,host2:ip2,host3:ip3

Example :

REAPER_CASS_ADDRESS_TRANSLATOR_TYPE=multiIpPerNode
REAPER_CASS_ADDRESS_TRANSLATOR_MAPPING=host1:ip1,host2:ip2

config bloc at the container startup file ‘/etc/cassandra-reaper/cassandra-reaper.yml’ :

 addressTranslator:
    type: multiIpPerNode
    ipTranslations:
    - from: "host1"
      to: "ip1"
    - from: "host2"
      to: "ip2"

and the same thing for the jmx mapping

JMX_ADDRESS_TRANSLATOR_TYPE=multiIpPerNode
JMX_ADDRESS_TRANSLATOR_MAPPING=host1:ip1,host2:ip2

result

jmxAddressTranslator:
  type: multiIpPerNode
  ipTranslations:
    - from: "host1"
      to: "ip1"
    - from: "host2"
      to: "ip2"

Note:

Authentication Configuration Variables

The following Docker environment variables control authentication settings. These variables are handled specially by configuration scripts that run at container startup.

Environment Variable Description Required
REAPER_AUTH_ENABLED Enable/disable authentication globally No (default: true)
REAPER_AUTH_USER Username for the admin user with operator role Yes (when auth is enabled)
REAPER_AUTH_PASSWORD Password for the admin user Yes (when auth is enabled)
REAPER_READ_USER Username for optional read-only user No (only configured if both user and password are set)
REAPER_READ_USER_PASSWORD Password for optional read-only user No (only configured if both user and password are set)

Note: The read-only user (REAPER_READ_USER and REAPER_READ_USER_PASSWORD) is configured conditionally. The user is only added to the authentication configuration if both environment variables are set to non-empty values. This prevents environment variable resolution errors while maintaining security.

Associated Reaper Specific Configuration Settings

The following Docker environment variables have no direct mapping to a setting in the cassandra-reaper.yaml configuration file. However, they do affect the content contained in the file that is Reaper specific.

REAPER_METRICS_ENABLED

Type: Boolean

Default: false

Allows the sending of Reaper metrics to a metrics reporting system such as Graphite. If enabled, the other associated environment variables REAPER_METRICS_FREQUENCY and REAPER_METRICS_REPORTERS must be set to appropriate values in order for metrics reporting to function correctly.

Metrics reporter definition syntax

REAPER_METRICS_REPORTERS

Type: List

Default: []

Defines the metrics reporters, using a JSON syntax instead of a YAML one. To activate graphite metrics reporting, run the container with the following sample arguments :

docker run \
    -p 8080:8080 \
    -p 8081:8081 \
    -e "REAPER_METRICS_ENABLED=true" \
    -e "REAPER_METRICS_FREQUENCY=10 second" \
    -e "REAPER_METRICS_REPORTERS=[{type: graphite, host: my.graphite.host.com, port: 2003, prefix: my.prefix}]" \
    thelastpickle/cassandra-reaper:master

Direct Mapping to Cassandra Backend Specific Configuration Settings

The Docker environment variables listed in this section map directly to Cassandra backend specific settings in the cassandra-reaper.yaml configuration file. The following table below lists the Docker environment variables, their associated Cassandra backend specific setting in the cassandra-reaper.yaml configuration file, and the default value assigned by the Docker container (if any). Definitions for each Docker environment variable can be found via the link to the associated setting.

In order for the Cassandra backend to be used, REAPER_STORAGE_TYPE must be set to cassandra.

Environment Variable Configuration Setting Default Value
REAPER_CASS_ACTIVATE_QUERY_LOGGER activateQueryLogger false
REAPER_CASS_CLUSTER_NAME clusterName clustername
REAPER_CASS_CONTACT_POINTS contactPoints {“host”: “127.0.0.1”, “port”: “9042”}, {“host”: “127.0.0.2”, “port”: “9042”}
REAPER_CASS_KEYSPACE keyspace reaper_db
REAPER_CASS_LOCAL_DC localDC
REAPER_CASS_AUTH_USERNAME username cassandra
REAPER_CASS_AUTH_PASSWORD password cassandra
REAPER_CASS_SCHEMA_AGREEMENT_INTERVAL agreementIntervalMilliseconds 2000
REAPER_CASS_SCHEMA_AGREEMENT_TIMEOUT agreementTimeoutSeconds 10
REAPER_CASS_REQUEST_TIMEOUT requestTimeout 10s

Note:

Some variable names and defaults have changed between the release of Docker-support and Reaper for Apache Cassandra 1.0. The following Cassandra Backend specific variable name changes have occurred in an effort to match closely with our YAML parameter names:

Pre Reaper 1.0 Post Reaper 1.0
REAPER_ACTIVATE_QUERY_LOGGER REAPER_CASS_ACTIVATE_QUERY_LOGGER

The following default values have changed:

Environment Variable Previous Default New Default
REAPER_CASS_KEYSPACE cassandra-reaper reaper_db
REAPER_CASS_SCHEMA_AGREEMENT_TIMEOUT 2000 10

Associated Cassandra Backend Specific Configuration Settings

The following Docker environment variables have no direct mapping to a setting in the cassandra-reaper.yaml configuration file. However, the do affect the content contained in the file that is Cassandra backend specific.

REAPER_CASS_AUTH_ENABLED

Type: Boolean

Default: false

Allows Reaper to send authentication credentials when establishing a connection with Cassandra via the native protocol. When enabled, authentication credentials must be specified by setting values for REAPER_CASS_AUTH_USERNAME and REAPER_CASS_AUTH_PASSWORD.

REAPER_CASS_ADDRESS_TRANSLATOR_ENABLED

Type: Boolean

Default: false

Enables the use of address translation for Cassandra connections. When enabled, REAPER_CASS_ADDRESS_TRANSLATOR_TYPE and REAPER_CASS_ADDRESS_TRANSLATOR_MAPPING must be set appropriately.

REAPER_CASS_NATIVE_PROTOCOL_SSL_ENCRYPTION_ENABLED

Type: Boolean

Default: false

Allows Reaper to establish an encrypted connection when establishing a connection with Cassandra via the native protocol.