本篇文章我們主要介紹cassandra的相關配置,我把cassandra的相關配置中個人覺得相對比較重要的按照叢集、節點這個橫向次元進行介紹,可能有的配置我不會列在這裡,那麼具有見cassandra.yaml裡面的詳細介紹;如何配置cassandra,需要在叢集啟動的時候在conf目錄下面的cassandra.yaml裡面進行配置即可。此外我們的配置需要遵守yaml檔案配置規則。本處以3.11.4進行介紹
叢集次元
cluster_name: //叢集的名字,預設是Test Cluster,用''括起來。不同的cluster name的節點無法組成一個叢集
num_tokens: 256 //叢集中單節點的的配置設定token數,因為使用vnode,也就是vnode的個數,每個token是随機生成的,此外如果不使用vnode的話,可以使用每個節點預配置設定一個初始的token,通過下面的配置下;
initial_token: //如果叢集不想使用vnode的話,需要手工給每個節點進行token配置,手工計算節點的token數,但是擴容的時候建議是成倍擴容。vnode不需要
partitioner: //叢集的資料配置設定算法,也就是常見的一緻性hash算法中計算hash的那個子產品,其中預設使用org.apache.cassandra.dht.Murmur3Partitioner,也就是現在比較推薦的mum3的hash政策,也有别的RandomPartitioner(md5),OrderPreservingPartitioner,ByteOrderedPartitioner(字典序),對scan比較親和,但是會有key傾斜
seed_provider:
- class_name: org.apache.cassandra.locator.SimpleSeedProvider
parameters:
# seeds is actually a comma-delimited list of addresses.
# Ex: "<ip1>,<ip2>,<ip3>"
- seeds: "127.0.0.1"
//這個配置相對比較重要,主要是叢集種seed節點配置,需要所有節點一樣,而且數量有一定限制,取決于叢集規模,如果是10個節點,推薦2個是ok的。
endpoint_snitch: //叢集的snitch政策,涉及到叢集的副本節點管理的測,預設SimpleSnitch
單節點次元
涉及到單節點的相關配置:
hints_directory: //涉及到的hint的目錄,預設的使用 /var/lib/cassandra/hints,如果某個節點挂掉,且這個節點負責挂掉節點hint記錄,那麼資料就會記到這個目錄下面
authenticator: //認證相關,預設是AllowAllAuthenticator,所有都可以通過認證,還有使用賬戶密碼認證,這個需要叢集種所有節點使用一種相同配置
authorizer: //鑒權,預設是所有都可以有任何操作,可以通過配置CassandraAuthorizer進行不同鑒權,同樣各個節點配置需要一樣;
data_file_directories: //資料檔案的放置目錄,預設是使用/var/lib/cassandra/data,推薦多快盤組合使用。
commitlog_directory: //commitlog的配置目錄,預設是 /var/lib/cassandra/commitlog,推薦較好的磁盤配置
cdc_enabled: //是否使用cdc 功能,預設是關閉,如果開啟,需要表配置也進行開啟
disk_failure_policy: //單機資料盤磁盤壞盤處理配置,預設stop,不接受gossip響應以及停掉cilent的服務。但是可以通過jmx通路
commit_failure_policy: //commitlog資料盤的壞盤政策,預設是stop
commitlog_sync: //commitlog的 資料sync政策,預設是periodic,這個會影響系統的寫性能;
commitlog_sync_period_in_ms: // period模式下的flush 頻率10000ms;也可以使用另一種sync政策,與period是二選一的;
commitlog_sync: //如果是batch 下面就是batch sync的時間配置。
commitlog_sync_batch_window_in_ms: 2
commitlog_segment_size_in_mb: //commitlog每隔多大切一下,預設是32m
commitlog_compression: //支援commitlog的壓縮,預設是lz4
concurrent_reads: //節點讀線程池線程數,預設32,io bound,建議是16*磁盤數
concurrent_writes: //節點寫線程池線程數,預設32,cpu bound,建議是8*cpu core數
concurrent_counter_writes: //counter線程池數,預設32,與read一樣
memtable_allocation_type: //memtable 的記憶體管理,預設是heap_buffers,也就是on heap的buffer管理
listen_address: //節點監聽服務的位址,本地節點的bind位址接口,如果配置檔案不容易管理,可以使用統一的網卡bind配置:listen_interface: eth0
rpc_address: //4.0之前需要thrift,所有這個可以配置下,預設localhost
其他
當然如果叢集需要别的配置,比如安全相關的,client 到server,server與server的ssl配置,等等則可以yam裡面再進行配置即可。
系統級别的配置則是别的章節介紹。