conf/sidecar.yaml (169 lines of code) (raw):

# # Licensed to the Apache Software Foundation (ASF) under one # or more contributor license agreements. See the NOTICE file # distributed with this work for additional information # regarding copyright ownership. The ASF licenses this file # to you under the Apache License, Version 2.0 (the # "License"); you may not use this file except in compliance # with the License. You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. # # # Cassandra Sidecar configuration file # cassandra_instances: - id: 1 host: localhost1 port: 9042 # The instance's storage directory as defined per the cassandra.storagedir property # which defaults to the $CASSANDRA_HOME/data directory, but can be configured to any # directory. By default, storage directory is the parent directory of data dirs, # commitlog dir, cdc dir, hints dir and saved caches dir. If data_dirs, commitlog_dir, # cdc_dir, hints_dir and saved_caches_dir are configured explicitly, then they will be used. # Otherwise, default paths based on storage directory will be used. storage_dir: /var/lib/cassandra # List of directories where Cassandra stores data on disk. If not set, the default directory # is <storage_dir>/data #data_dirs: # - /var/lib/cassandra/data # A temporary directory used to stage sstables before importing them into Cassandra. staging_dir: /var/lib/cassandra/sstable-staging # Directory where Cassandra stores mutations. If not set, the default directory is # <storage_dir>/cdc_raw. #cdc_dir: /var/lib/cassandra/cdc_raw # Directory where Cassandra stores the commit logs. If not set, the default directory # is <storage_dir>/commitlog #commitlog_dir: /var/lib/cassandra/commitlog # Directory where Cassandra stores hints. If not set, the default directory is # <storage_dir>/hints. #hints_dir: /var/lib/cassandra/hints # Directory where Cassandra stores the saved caches. If not set, the default directory # is <storage_dir>/saved_caches #saved_caches_dir: /var/lib/cassandra/saved_caches # Directory where Cassandra stores the data of the local system keyspaces. # By default, Cassandra stores the data of the local system keyspaces in the # first of the data directories specified by data_file_directories. # local_system_data_file_directory: jmx_host: 127.0.0.1 jmx_port: 7199 jmx_ssl_enabled: false # jmx_role: # jmx_role_password: sidecar: host: 0.0.0.0 port: 9043 request_idle_timeout: 5m request_timeout: 5m tcp_keep_alive: false accept_backlog: 1024 server_verticle_instances: 1 throttle: stream_requests_per_sec: 5000 timeout: 10s traffic_shaping: inbound_global_bandwidth_bps: 0 # 0 implies unthrottled, the inbound bandwidth in bytes per second outbound_global_bandwidth_bps: 0 # 0 implies unthrottled, the outbound bandwidth in bytes per second peak_outbound_global_bandwidth_bps: 419430400 # the peak outbound bandwidth in bytes per second. The default is 400 mebibytes per second max_delay_to_wait: 15s # 15 seconds check_interval_for_stats: 1s # 1 second inbound_global_file_bandwidth_bps: 0 # 0 implies unthrottled, the inbound bandwidth allocated for incoming files in bytes per second, upper-bounded by inbound_global_bandwidth_bps sstable_upload: concurrent_upload_limit: 80 min_free_space_percent: 10 # file_permissions: "rw-r--r--" # when not specified, the default file permissions are owner read & write, group & others read # The maximum allowable time skew between the server and the client. # Resolution is in minutes. The minimum configurable value is 1 minute. allowable_time_skew: 1h sstable_import: execute_interval: 100ms cache: expire_after_access: 2h # 2 hours maximum_size: 10000 sstable_snapshot: snapshot_list_cache: expire_after_access: 2h # 2 hours maximum_size: 10000 cdc: segment_hardlink_cache_expiry: 5m # 5 minutes worker_pools: service: name: "sidecar-worker-pool" size: 20 max_execution_time: 1m # 1 minute internal: name: "sidecar-internal-worker-pool" size: 20 max_execution_time: 15m # 15 minutes jmx: max_retries: 3 retry_delay: 200ms schema: is_enabled: false keyspace: sidecar_internal replication_strategy: SimpleStrategy replication_factor: 1 # The TTL in seconds used to insert entries into the sidecar_lease schema lease_schema_ttl: 5m coordination: # Captures configuration parameters for the task that performs the cluster lease claim process cluster_lease_claim: # The name of the strategy used to determine the electorate membership (defaults to MostReplicatedKeyspaceTokenZeroElectorateMembership) # Out of the box Sidecar provides the MostReplicatedKeyspaceTokenZeroElectorateMembership, and # SidecarInternalTokenZeroElectorateMembership implementations. # - MostReplicatedKeyspaceTokenZeroElectorateMembership the current Sidecar will be determined to be part # of the electorate iff one of the Cassandra instances it # manages owns token 0 for the user keyspace that has the # highest replication factor. If multiple keyspaces have # the highest replication factor, the keyspace to be used # is decided by the keyspace with the name that sorts # first in the lexicographic sort order. If no user # keyspaces are created, the internal sidecar keyspace will # be used. # - SidecarInternalTokenZeroElectorateMembership the current Sidecar will be determined to be part of the # electorate iff one of the Cassandra instances it manages # owns token {@code 0} for the {@code sidecar_internal} # keyspace. electorate_membership_strategy: MostReplicatedKeyspaceTokenZeroElectorateMembership # Whether the process is enabled enabled: true # The initial delay for the first execution of the cluster lease claim process task after being # scheduled or rescheduled. # The minimum value for the initial delay is 0ms. initial_delay: 1s # A random delta value to add jitter to the initial delay for the first execution of the cluster # lease claim process. The actual initial delay for the task will be a millisecond value of the # initial_delay + RANDOM(initial_delay_random_delta) configuration. # The minimum value for the initial delay random delta is 0ms, which in practice disables the jitter. initial_delay_random_delta: 30s # How often the cluster lease claim process task will execute after the previous task has completed # the execution. # The minimum value allowed for the cluster lease claim process task implementation is 30 seconds execute_interval: 100s vertx: filesystem_options: classpath_resolving_enabled: false file_caching_enabled: false schema_reporting: # Schema Reporting configuration enabled: false # Disabled by default initial_delay: 6h # Maximum delay before the first schema report (actual delay is randomized) execute_interval: 12h # Exact interval between two sequential schema reports endpoint: http://localhost/schema # Endpoint address for schema reporting method: PUT # HTTP verb to use for schema reporting max_retries: 3 # Number of times a failing schema report is retried retry_delay: 1m # Delay before a failing schema report is retried # # Enable SSL configuration (Disabled by default) # # ssl: # enabled: true # use_openssl: true # handshake_timeout: 10s # client_auth: NONE # valid options are NONE, REQUEST, REQUIRED # accepted_protocols: # - TLSv1.2 # - TLSv1.3 # cipher_suites: [] # keystore: # type: PKCS12 # path: "path/to/keystore.p12" # password: password # check_interval: 5m # truststore: # path: "path/to/truststore.p12" # password: password access_control: # When enabled requests need to be authenticated and authorized before servicing. enabled: false # Supports setting multiple authenticators, request is authenticated when the first authenticator allows the request # to go through. # Out of the box, Cassandra Sidecar provides following authenticator provider factories # org.apache.cassandra.sidecar.acl.authentication.{MutualTlsAuthenticationHandlerFactory, JwtAuthenticationHandlerFactory}. # - MutualTlsAuthenticationHandlerFactory allows authenticating based on user certificates # - JwtAuthenticationHandlerFactory allows authenticating with user JWT tokens authenticators: - class_name: org.apache.cassandra.sidecar.acl.authentication.MutualTlsAuthenticationHandlerFactory parameters: # Certificate validator is used to validate details within a certificate, such as issuer organization, # issuer country, CNs, certificate expiry etc. # # io.vertx.ext.auth.mtls.impl.AllowAllCertificateValidator performs no checks, it marks all certificates as valid. # other options are, io.vertx.ext.auth.mtls.impl.CertificateValidatorImpl certificate_validator: io.vertx.ext.auth.mtls.impl.AllowAllCertificateValidator # CertificateIdentityExtractor is used to extract valid identities from certificates. These identities will be # used for authorizing users. # # org.apache.cassandra.sidecar.acl.authentication.CassandraIdentityExtractor verifies that identity # extracted from certificate is present in identity_to_role table. Identities in identity_to_role table in # Cassandra are authenticated identities in Cassandra. # # other options are, io.vertx.ext.auth.mtls.impl.SpiffeIdentityExtractor. certificate_identity_extractor: org.apache.cassandra.sidecar.acl.authentication.CassandraIdentityExtractor # JwtAuthenticationHandlerFactory adds support to authenticate users with their JWT tokens. It also includes # supports for OpenID discovery. - class_name: org.apache.cassandra.sidecar.acl.authentication.JwtAuthenticationHandlerFactory parameters: # To selectively enable or disable JWT authentication enabled: false # Site for sidecar to dynamically retrieve the configuration information of an OpenID provider, without # having to manually configure settings like issuer etc. site: https://authorization.com # Client Id is a unique identifier assigned by OpenID provider. It is used to identity applications/users # trying to connect. client_id: recognized_client_id config_discover_interval: 1h authorizer: # Authorization backend, implementing io.vertx.ext.auth.authorization.AuthorizationProvider; used to # provide permissions a user holds. # Out of the box, Cassandra Sidecar provides # org.apache.cassandra.sidecar.acl.authorization.{AllowAllAuthorizationProvider, RoleBasedAuthorizationProvider}. # # - AllowAllAuthorizationProvider allows any action to any user - use it to disable authorization. # - RoleBasedAuthorizationProvider validates role associated with authenticated user has permission # for resource it accesses. - class_name: org.apache.cassandra.sidecar.acl.authorization.AllowAllAuthorizationProvider # Identities that are authenticated and authorized. admin_identities: # - spiffe://authorized/admin/identities permission_cache: enabled: true expire_after_access: 5m maximum_size: 1000 warmup_retries: 5 warmup_retry_interval: 2s driver_parameters: contact_points: - "127.0.0.1:9042" username: cassandra password: cassandra ssl: enabled: false keystore: type: PKCS12 path: path/to/keystore.p12 password: password truststore: type: PKCS12 path: path/to/keystore.p12 password: password num_connections: 6 # local_dc: datacenter1 healthcheck: initial_delay: 0ms execute_interval: 30s # Sidecar Peer Health Monitor settings # Enables a periodic task checking for the health of adjacent Sidecar peers in the token ring sidecar_peer_health: # Determines if the peer health monitor periodic task is enabled or not enabled: false # Time between peer health checks execute_interval: 30s # The amount of retries the client will attempt a request max_retries: 5 # The initial delay between the retries the client will attempt a request retry_delay: 10s # Sidecar client settings used to interact with other sidecars sidecar_client: request_timeout: 30s # Time in which a request made by the sidecar client will time out request_idle_timeout: 30s # How long the request can be idle # More advanced options to configure the sidecar client #connection_pool_max_size: 10 # Max size of the client connection pool #connection_pool_clearing_period: 5s # Period of time for the connection pool to clear #connection_pool_event_loop_size: 0 # Defines the size of the event loop pool, set to 0 to reuse current event-loop #connection_pool_max_wait_queue_size: -1 # Connection pool max time to wait on the queue size, set to -1 for an unbounded queue #max_retries: 5 # The amount of retries the client will attempt a request #retry_delay: 500ms # The initial delay between the retries the client will attempt a request #max_retry_delay: 10s # The max delay between the retries the client will attempt a request #ssl: # if ssl is enabled, this is the ssl configuration used for the sidecar client # enabled: false # keystore: # type: PKCS12 # Keystore type # path: path/to/client/keystore.p12 # Path to the client keystore file # password: password # Keystore password # truststore: # type: PKCS12 # Truststore type # path: path/to/truststore.p12 # Path to the truststore file # password: password # Truststore password metrics: registry_name: cassandra_sidecar vertx: enabled: true expose_via_jmx: false jmx_domain_name: sidecar.vertx.jmx_domain include: # empty include list means include all - type: "regex" # possible filter types are "regex" and "equals" value: "Sidecar.*" - type: "regex" value: "vertx.*" exclude: # empty exclude list means exclude nothing # - type: "regex" # possible filter types are "regex" and "equals" # value: "vertx.eventbus.*" # exclude all metrics starts with vertx.eventbus cassandra_input_validation: forbidden_keyspaces: - system_schema - system_traces - system_distributed - system - system_auth - system_views - system_virtual_schema - sidecar_internal allowed_chars_for_directory: "[a-zA-Z][a-zA-Z0-9_]{0,47}" allowed_chars_for_quoted_name: "[a-zA-Z_0-9]{1,48}" allowed_chars_for_component_name: "[a-zA-Z0-9_-]+(.db|.cql|.json|.crc32|TOC.txt)" allowed_chars_for_restricted_component_name: "[a-zA-Z0-9_-]+(.db|TOC.txt)" blob_restore: job_discovery_active_loop_delay: 5m job_discovery_idle_loop_delay: 10m job_discovery_recency_days: 5 slice_process_max_concurrency: 20 restore_job_tables_ttl: 90d slow_task_threshold: 10m slow_task_report_delay: 1m ring_topology_refresh_delay: 1m s3_client: concurrency: 4 thread_name_prefix: s3-client thread_keep_alive: 1m api_call_timeout: 1m # 1 minute range_get_object_bytes_size: 5242880 # 5 MiB # proxy_config: # uri: # username: # password: