Cassandra

Cassandra 命名數據中心

  • March 19, 2020

經過一天的研究,我提出了一個問題。

我無法重命名 cassandra 節點。我想在 D1 上放置一個節點,在機架 1 中的 D2 上放置另一個節點。

但這是我得到的結果

$ nodetool status
Datacenter: datacenter1
=======================
Status=Up/Down
|/ State=Normal/Leaving/Joining/Moving
--  Address     Load       Tokens       Owns (effective)  Host ID                               Rack
UN  10.0.0.1  185.58 KiB  256          100.0%            21d6f3db-79d3-4b3b-9fb8-7da42c82610e  rack1
UN  10.0.0.2  75.07 KiB  256          100.0%            2bb2e75e-23a6-4dc4-a279-ab28b739255d  rack1

兩個節點都在“datacenter1”中這是我在第一台設備上的配置:

cassandra.yaml:

cluster_name: 'kban'
num_tokens: 256
hinted_handoff_enabled: true
max_hint_window_in_ms: 10800000
hinted_handoff_throttle_in_kb: 1024
max_hints_delivery_threads: 2
hints_flush_period_in_ms: 10000
max_hints_file_size_in_mb: 128
batchlog_replay_throttle_in_kb: 1024
authenticator: AllowAllAuthenticator
authorizer: AllowAllAuthorizer
role_manager: CassandraRoleManager
roles_validity_in_ms: 2000
permissions_validity_in_ms: 2000
credentials_validity_in_ms: 2000
partitioner: org.apache.cassandra.dht.Murmur3Partitioner
data_file_directories:
   - /var/lib/cassandra/data
commitlog_directory: /var/lib/cassandra/commitlog
cdc_enabled: false
disk_failure_policy: stop
commit_failure_policy: stop
prepared_statements_cache_size_mb:
thrift_prepared_statements_cache_size_mb:
key_cache_size_in_mb:
key_cache_save_period: 14400
row_cache_size_in_mb: 0
row_cache_save_period: 0
counter_cache_size_in_mb:
counter_cache_save_period: 7200
saved_caches_directory: /var/lib/cassandra/saved_caches
commitlog_sync: periodic
commitlog_sync_period_in_ms: 10000
commitlog_segment_size_in_mb: 32
seed_provider:
   - class_name: org.apache.cassandra.locator.SimpleSeedProvider
     parameters:
         - seeds: "10.0.0.2"
concurrent_reads: 32
concurrent_writes: 32
concurrent_counter_writes: 32
concurrent_materialized_view_writes: 32
memtable_allocation_type: heap_buffers
index_summary_capacity_in_mb:
index_summary_resize_interval_in_minutes: 60
trickle_fsync: false
trickle_fsync_interval_in_kb: 10240
storage_port: 7000
ssl_storage_port: 7001
listen_address: 10.0.0.1
start_native_transport: true
native_transport_port: 9042
start_rpc: false
rpc_address: 10.0.0.1
rpc_port: 9160
rpc_keepalive: true
rpc_server_type: sync
thrift_framed_transport_size_in_mb: 15
incremental_backups: false
snapshot_before_compaction: false
auto_snapshot: true
column_index_size_in_kb: 64
column_index_cache_size_in_kb: 2
compaction_throughput_mb_per_sec: 16
sstable_preemptive_open_interval_in_mb: 50
read_request_timeout_in_ms: 5000
range_request_timeout_in_ms: 10000
write_request_timeout_in_ms: 2000
counter_write_request_timeout_in_ms: 5000
cas_contention_timeout_in_ms: 1000
truncate_request_timeout_in_ms: 60000
request_timeout_in_ms: 10000
slow_query_log_timeout_in_ms: 500
cross_node_timeout: false
endpoint_snitch: SimpleSnitch
dynamic_snitch_update_interval_in_ms: 100
dynamic_snitch_reset_interval_in_ms: 600000
dynamic_snitch_badness_threshold: 0.1
request_scheduler: org.apache.cassandra.scheduler.NoScheduler
server_encryption_options:
   internode_encryption: none
   keystore: conf/.keystore
   keystore_password: cassandra
   truststore: conf/.truststore
   truststore_password: cassandra
client_encryption_options:
   enabled: false
   optional: false
   keystore: conf/.keystore
   keystore_password: cassandra
internode_compression: dc
inter_dc_tcp_nodelay: false
tracetype_query_ttl: 86400
tracetype_repair_ttl: 604800
enable_user_defined_functions: false
enable_scripted_user_defined_functions: false
windows_timer_interval: 1
transparent_data_encryption_options:
   enabled: false
   chunk_length_kb: 64
   cipher: AES/CBC/PKCS5Padding
   key_alias: testing:1
   key_provider:
     - class_name: org.apache.cassandra.security.JKSKeyProvider
       parameters:
         - keystore: conf/.keystore
           keystore_password: cassandra
           store_type: JCEKS
           key_password: cassandra
tombstone_warn_threshold: 1000
tombstone_failure_threshold: 100000
batch_size_warn_threshold_in_kb: 5
batch_size_fail_threshold_in_kb: 50
unlogged_batch_across_partitions_warn_threshold: 10
compaction_large_partition_warning_threshold_mb: 100
gc_warn_threshold_in_ms: 1000
back_pressure_enabled: false
back_pressure_strategy:
   - class_name: org.apache.cassandra.net.RateBasedBackPressure
     parameters:
       - high_ratio: 0.90
         factor: 5
         flow: FAST
enable_materialized_views: true
enable_sasi_indexes: true

cassandra-rackdc.properties :

dc=D1
rack=RACK1

在第二台設備上:

cassandra.yaml:

cluster_name: 'kban'
num_tokens: 256
hinted_handoff_enabled: true
max_hint_window_in_ms: 10800000
hinted_handoff_throttle_in_kb: 1024
max_hints_delivery_threads: 2
hints_flush_period_in_ms: 10000
max_hints_file_size_in_mb: 128
batchlog_replay_throttle_in_kb: 1024
authenticator: AllowAllAuthenticator
authorizer: AllowAllAuthorizer
role_manager: CassandraRoleManager
roles_validity_in_ms: 2000
permissions_validity_in_ms: 2000
credentials_validity_in_ms: 2000
partitioner: org.apache.cassandra.dht.Murmur3Partitioner
data_file_directories:
   - /var/lib/cassandra/data
commitlog_directory: /var/lib/cassandra/commitlog
cdc_enabled: false
disk_failure_policy: stop
commit_failure_policy: stop
prepared_statements_cache_size_mb:
thrift_prepared_statements_cache_size_mb:
key_cache_size_in_mb:
key_cache_save_period: 14400
row_cache_size_in_mb: 0
row_cache_save_period: 0
counter_cache_size_in_mb:
counter_cache_save_period: 7200
saved_caches_directory: /var/lib/cassandra/saved_caches
commitlog_sync: periodic
commitlog_sync_period_in_ms: 10000
commitlog_segment_size_in_mb: 32
seed_provider:
   - class_name: org.apache.cassandra.locator.SimpleSeedProvider
     parameters:
         - seeds: "10.0.0.1"
concurrent_reads: 32
concurrent_writes: 32
concurrent_counter_writes: 32
concurrent_materialized_view_writes: 32
memtable_allocation_type: heap_buffers
index_summary_capacity_in_mb:
index_summary_resize_interval_in_minutes: 60
trickle_fsync: false
trickle_fsync_interval_in_kb: 10240
storage_port: 7000
ssl_storage_port: 7001
listen_address: 10.0.0.2
start_native_transport: true
native_transport_port: 9042
start_rpc: false
rpc_address: 10.0.0.2
rpc_port: 9160
rpc_keepalive: true
rpc_server_type: sync
thrift_framed_transport_size_in_mb: 15
incremental_backups: false
snapshot_before_compaction: false
auto_snapshot: true
column_index_size_in_kb: 64
column_index_cache_size_in_kb: 2
compaction_throughput_mb_per_sec: 16
sstable_preemptive_open_interval_in_mb: 50
read_request_timeout_in_ms: 5000
range_request_timeout_in_ms: 10000
write_request_timeout_in_ms: 2000
counter_write_request_timeout_in_ms: 5000
cas_contention_timeout_in_ms: 1000
truncate_request_timeout_in_ms: 60000
request_timeout_in_ms: 10000
slow_query_log_timeout_in_ms: 500
cross_node_timeout: false
endpoint_snitch: SimpleSnitch
dynamic_snitch_update_interval_in_ms: 100
dynamic_snitch_reset_interval_in_ms: 600000
dynamic_snitch_badness_threshold: 0.1
request_scheduler: org.apache.cassandra.scheduler.NoScheduler
server_encryption_options:
   internode_encryption: none
   keystore: conf/.keystore
   keystore_password: cassandra
   truststore: conf/.truststore
   truststore_password: cassandra
client_encryption_options:
   enabled: false
   optional: false
   keystore: conf/.keystore
   keystore_password: cassandra
internode_compression: dc
inter_dc_tcp_nodelay: false
tracetype_query_ttl: 86400
tracetype_repair_ttl: 604800
enable_user_defined_functions: false
enable_scripted_user_defined_functions: false
windows_timer_interval: 1
transparent_data_encryption_options:
   enabled: false
   chunk_length_kb: 64
   cipher: AES/CBC/PKCS5Padding
   key_alias: testing:1
   key_provider:
     - class_name: org.apache.cassandra.security.JKSKeyProvider
       parameters:
         - keystore: conf/.keystore
           keystore_password: cassandra
           store_type: JCEKS
           key_password: cassandra
tombstone_warn_threshold: 1000
tombstone_failure_threshold: 100000
batch_size_warn_threshold_in_kb: 5
batch_size_fail_threshold_in_kb: 50
unlogged_batch_across_partitions_warn_threshold: 10
compaction_large_partition_warning_threshold_mb: 100
gc_warn_threshold_in_ms: 1000
back_pressure_enabled: false
back_pressure_strategy:
   - class_name: org.apache.cassandra.net.RateBasedBackPressure
     parameters:
       - high_ratio: 0.90
         factor: 5
         flow: FAST
enable_materialized_views: true
enable_sasi_indexes: true

cassandra-rackdc.properties :

dc=D2
rack=RACK1

你的問題是你使用SimpleSnitchendpoint_snitch: SimpleSnitch- 它不允許有多個 DC - 所有節點總是在datacenter1.

要將節點放入不同的 DC,您需要更改配置以使用GossipingPropertyFileSnitch- 之後它將從中選擇 DC 和機架名稱cassandra-rackdc.properties。但由於初始化 Cassandra 後無法輕易更改 snitch,因此您需要刪除 Cassandra 數據目錄,然後再次執行初始化。

引用自:https://serverfault.com/questions/1007523