Cassandra最佳实践(3)配置篇

本篇文章我们主要介绍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里面再进行配置即可。

系统级别的配置则是别的章节介绍。

上一篇:【MaxCompute 常见问题】 工具及下载


下一篇:Cassandra 最佳实践系列(1) - CQL 基本数据类型