Merge "Configuration Groups for Cassandra"
This commit is contained in:
commit
b88ed1f961
249
specs/liberty/cassandra-configuration-groups.rst
Normal file
249
specs/liberty/cassandra-configuration-groups.rst
Normal file
@ -0,0 +1,249 @@
|
||||
..
|
||||
This work is licensed under a Creative Commons Attribution 3.0 Unported
|
||||
License.
|
||||
|
||||
http://creativecommons.org/licenses/by/3.0/legalcode
|
||||
|
||||
Sections of this template were taken directly from the Nova spec
|
||||
template at:
|
||||
https://github.com/openstack/nova-specs/blob/master/specs/template.rst
|
||||
|
||||
==============================
|
||||
Cassandra Configuration Groups
|
||||
==============================
|
||||
|
||||
Launchpad blueprint:
|
||||
|
||||
https://blueprints.launchpad.net/trove/+spec/cassandra-configuration-groups
|
||||
|
||||
Problem Description
|
||||
===================
|
||||
|
||||
The Cassandra datastore currently does not support configuration groups.
|
||||
|
||||
Proposed Change
|
||||
===============
|
||||
|
||||
The patch set will implement configuration groups for Cassandra 2.1.
|
||||
|
||||
Configuration
|
||||
-------------
|
||||
|
||||
The configuration template will be updated to the default template for the
|
||||
target platform.
|
||||
|
||||
* templates/cassandra/config.template
|
||||
|
||||
Database
|
||||
--------
|
||||
|
||||
None
|
||||
|
||||
Public API
|
||||
----------
|
||||
|
||||
None
|
||||
|
||||
Public API Security
|
||||
-------------------
|
||||
|
||||
None
|
||||
|
||||
Internal API
|
||||
------------
|
||||
|
||||
None
|
||||
|
||||
Guest Agent
|
||||
-----------
|
||||
|
||||
Cassandra stores its configuration in 'cassandra.yaml' file
|
||||
(commonly in '/etc/cassandra').
|
||||
The node (datastore service) has to be restarted for any changes to the
|
||||
configuration file to take effect. All configuration changes will therefore be
|
||||
requiring database restart and 'apply_overrides' will be implemented as no-op.
|
||||
|
||||
Overrides will be implemented by replacing the current file with an
|
||||
updated one.
|
||||
The old file will be backed up in the same directory (as *\*.old*) and
|
||||
restored on configuration reset.
|
||||
|
||||
Most configuration properties will be available via configuration groups.
|
||||
Some, however, do not make sense in the Trove context.
|
||||
|
||||
These include:
|
||||
|
||||
- irrelevant options (like automatic snapshots, since the Trove user cannot
|
||||
retrieve them)
|
||||
- guestagent specific (e.g. file paths, passwords)
|
||||
- items that Trove needs to control (replication/clustering properties)
|
||||
|
||||
See `Available Configuration Properties`_ for the full list of supported
|
||||
options.
|
||||
|
||||
The user should be able to specify configurations properties as standard Python
|
||||
YAML objects - key-value pairs and dicts.
|
||||
|
||||
Available Configuration Properties
|
||||
----------------------------------
|
||||
|
||||
Properties not included in the lists are kept at their default values
|
||||
and are not configurable via Trove.
|
||||
|
||||
The properties configurable by the user via the Trove API:
|
||||
|
||||
- cluster_name
|
||||
- listen_address
|
||||
- commit_failure_policy
|
||||
- disk_failure_policy
|
||||
- endpoint_snitch
|
||||
- seed_provider
|
||||
- compaction_throughput_mb_per_sec
|
||||
- memtable_total_space_in_mb
|
||||
- concurrent_reads
|
||||
- concurrent_writes
|
||||
- phi_convict_threshold
|
||||
- commitlog_sync
|
||||
- commitlog_segment_size_in_mb
|
||||
- commitlog_total_space_in_mb
|
||||
- compaction_preheat_key_cache
|
||||
- concurrent_compactors
|
||||
- in_memory_compaction_limit_in_mb
|
||||
- preheat_kernel_page_cache
|
||||
- sstable_preemptive_open_interval_in_mb
|
||||
- memtable_allocation_type
|
||||
- memtable_cleanup_threshold
|
||||
- file_cache_size_in_mb
|
||||
- memtable_flush_queue_size
|
||||
- memtable_flush_writers
|
||||
- memtable_heap_space_in_mb
|
||||
- memtable_offheap_space_in_mb
|
||||
- column_index_size_in_kb
|
||||
- index_summary_capacity_in_mb
|
||||
- index_summary_resize_interval_in_minutes
|
||||
- reduce_cache_capacity_to
|
||||
- reduce_cache_sizes_at
|
||||
- stream_throughput_outbound_megabits_per_sec
|
||||
- inter_dc_stream_throughput_outbound_megabits_per_sec
|
||||
- trickle_fsync
|
||||
- trickle_fsync_interval_in_kb
|
||||
- auto_bootstrap
|
||||
- batch_size_warn_threshold_in_kb
|
||||
- broadcast_address
|
||||
- initial_token
|
||||
- initial_token
|
||||
- num_tokens
|
||||
- partitioner
|
||||
- key_cache_keys_to_save
|
||||
- key_cache_save_period
|
||||
- key_cache_size_in_mb
|
||||
- row_cache_keys_to_save
|
||||
- row_cache_size_in_mb
|
||||
- row_cache_save_period
|
||||
- memory_allocator
|
||||
- counter_cache_size_in_mb
|
||||
- counter_cache_save_period
|
||||
- counter_cache_keys_to_save
|
||||
- counter_cache_keys_to_save
|
||||
- tombstone_warn_threshold
|
||||
- tombstone_failure_threshold
|
||||
- range_request_timeout_in_ms
|
||||
- read_request_timeout_in_ms
|
||||
- counter_write_request_timeout_in_ms
|
||||
- cas_contention_timeout_in_ms
|
||||
- truncate_request_timeout_in_ms
|
||||
- write_request_timeout_in_ms
|
||||
- request_timeout_in_ms
|
||||
- cross_node_timeout
|
||||
- internode_send_buff_size_in_bytes
|
||||
- internode_recv_buff_size_in_bytes
|
||||
- internode_compression
|
||||
- inter_dc_tcp_nodelay
|
||||
- streaming_socket_timeout_in_ms
|
||||
- native_transport_max_threads
|
||||
- native_transport_max_frame_size_in_mb
|
||||
- broadcast_rpc_address
|
||||
- rpc_keepalive
|
||||
- rpc_max_threads
|
||||
- rpc_min_threads
|
||||
- rpc_recv_buff_size_in_bytes
|
||||
- rpc_send_buff_size_in_bytes
|
||||
- rpc_server_type
|
||||
- dynamic_snitch_badness_threshold
|
||||
- dynamic_snitch_reset_interval_in_ms
|
||||
- dynamic_snitch_update_interval_in_ms
|
||||
- hinted_handoff_enabled
|
||||
- hinted_handoff_throttle_in_kb
|
||||
- max_hint_window_in_ms
|
||||
- max_hints_delivery_threads
|
||||
- batchlog_replay_throttle_in_kb
|
||||
- request_scheduler
|
||||
- request_scheduler_id
|
||||
- request_scheduler_options
|
||||
- thrift_framed_transport_size_in_mb
|
||||
- thrift_max_message_length_in_mb
|
||||
- permissions_validity_in_ms
|
||||
- permissions_update_interval_in_ms
|
||||
|
||||
Non-configurable properties with updated default values:
|
||||
|
||||
- *authenticator*: **org.apache.cassandra.auth.PasswordAuthenticator**
|
||||
- *authorizer*: **org.apache.cassandra.auth.CassandraAuthorizer**
|
||||
- *snapshot_before_compaction*: **false**
|
||||
- *auto_snapshot*: **false**
|
||||
- *rpc_address*: **(controlled-by guestagent)**
|
||||
- *broadcast_rpc_address*: **(controlled-by guestagent)**
|
||||
- *listen_address*: **(controlled-by guestagent)**
|
||||
- *seed_provider.parameters.seeds*: **(controlled-by guestagent)**
|
||||
|
||||
Alternatives
|
||||
------------
|
||||
|
||||
None
|
||||
|
||||
Implementation
|
||||
==============
|
||||
|
||||
Assignee(s)
|
||||
-----------
|
||||
|
||||
Petr Malik <pmalik@tesora.com>
|
||||
|
||||
Milestones
|
||||
----------
|
||||
|
||||
Liberty
|
||||
|
||||
Work Items
|
||||
----------
|
||||
|
||||
1. Implement functionality to handle (read/write/update) YAML files.
|
||||
2. Implement configuration-related manager API calls.
|
||||
|
||||
Upgrade Implications
|
||||
====================
|
||||
|
||||
None
|
||||
|
||||
Dependencies
|
||||
============
|
||||
|
||||
The patch set will be building on functionality implemented in blueprint:
|
||||
cassandra-database-user-functions
|
||||
|
||||
Testing
|
||||
=======
|
||||
|
||||
Unittests will be added to validate implemented functions and non-trivial
|
||||
codepaths.
|
||||
|
||||
Documentation Impact
|
||||
====================
|
||||
|
||||
The datastore documentation should be updated to reflect the enabled features.
|
||||
|
||||
References
|
||||
==========
|
||||
|
||||
.. [1] Documentation on Cassandra 2.1: http://docs.datastax.com/en/cassandra/2.1/cassandra/gettingStartedCassandraIntro.html
|
||||
.. [2] Documentation on Cassandra 2.1 configuration properties: http://docs.datastax.com/en/cassandra/2.1/cassandra/configuration/configTOC.html
|
Loading…
x
Reference in New Issue
Block a user