Cassandra3.x官⽅⽂档_cassandra.yaml配置⽂件cassandra.yaml是Cassandra的主要配置⽂件
重要: 修改完cassandra.yaml⽂件配置以后,你必须重启节点使他⽣效。它位于下⾯的⽬录中:
· Cassandra package 安装: /etc/cassandra
· Cassandra tarball 安装: install_location/conf
配置属性分为以下⼏个部分:
·快速开始
配置集所需的最⼩属性
· 常⽤的
配置Cassandra时最常⽤的属性
·性能调优
与月亮有关的神话故事性能调优以及系统资源调⽤,包括commit log,compaction,内存,硬盘I/O,CPU,读和写。
·
⾼级的
⾼级⽤户或者不常⽤的属性的属性配置
·安全
服务器和客户端安全设置。
注:带注释的值表⽰内部定义,缺少,注释或者实现取决于cassandra.yaml⽂件⾥的其他属性。此外,⼀些注释的值并不符合实际默认值,这些值仅推荐于默认值改变时。
快速开始配置属性
配置集所需的最⼩属性
相关信息:在111页的初始化⼀个多节点集(单数据中⼼)和在114页的初始化⼀个多节点集(多数据中⼼)。
cluster_name
(默认: Test Cluster) 集名称。这个设置防⽌⼀个逻辑集的节点加⼊另外⼀个集。⼀个集中所
有节点必须使⽤相同的名称。
listen_address
(默认: localhost) Cassandra绑定的,⽤来连接其他Cassandra节点的IP地址或者主机名称。设置这个参数或者listen_interface,不需要同时。当在多节点间通信时,必须修改默认配置:
· ⼀般设置为空。如果节点是正确设置的(主机名称,名称解析等),Cassandra通过LocalHost()可以从系统获取本地地址
· 如果是单节点集,你可以使⽤默认配置(localhost)
·如果Cassandra不到正确的地址,你可以指定IP地址或者主机名称。
·永远不要指定0.0.0.0,总是错的。
· 如果你使⽤多个物理⽹络接⼝,把listen_address和listen_on_broadcast_address设为true
listen_interface
(默认: eth0)注Cassandra绑定的接⼝,⽤于连接其他Cassandra节点。接⼝必须对应⼀个地址,不⽀
持IP别名。参考listen_address。
listen_interface_prefer_ipv6
(默认: false) 默认情况下,如果⼀个接⼝有⼀个ipv4和ipv6的地址,第⼀个被使⽤的是ipv4地址。如果该选项设置为true,第⼀个被使⽤的就是ipv6地址。
如果安装过程中修改了任何默认的⽬录,请确保你有root权限来设置这些属性。
commitlog_directory
这个⽬录是commit log 存放的地⽅:
为了获得最佳的写⼊性能,将commit log放在单独的磁盘分区,或者(理想情况下)和data⽂件⽬录分开的物理设备上。由于commit log只能追加的,因此HDD已经可以达到这个⽬的了。
data_file_directories
这个⽬录位置就是表数据存储的地⽅(在SSTables⾥)。Cassandra将数据均匀的分布在这个位置,受配置的压缩策略粒度的限制。
作为⽣产的最佳实践,使⽤RAID 0 and SSDs
saved_caches_directory
这个⽬录是table key和row缓存存放的地⽅。默认位置:
· Package 安装: /var/lib/cassandra/saved_caches
· Tarball 安装: install_location/data/saved_caches
常⽤的属性
配置Cassandra最常⽤的的属性。
第⼀次启动节点之前,你应该仔细评估你的要求。
常见的初始化属性
韩寒方舟子事件结果注:请务必在快速启动选项中设置好属性。
commit_failure_policy
(默认: stop)提交磁盘故障策略:
· die
关闭gossip和Thrift,然后杀掉JVM进程,这样节点就可以被替换。
· stop
关闭gossip和Thrift,使节点实际上死亡了,但是可以使⽤JMX检查。
· stop_commit
关闭commit log,让写聚集,但继续提供读服务(就像Cassandra 2.0.5之前的版本)。
· ignore
忽略致命错误,并让批失败。
disk_optimization_strategy
(默认: ssd)优化磁盘读取策略可以设置成固态硬盘或者旋转的。
disk_failure_policy
(默认: stop)设置Cassandra如何响应磁盘故障。建议设置成stop或者best_effort。
· die
关闭gossip和Thrift,然后对于任何系统错误或者仅仅是SSTable错误,都杀掉JVM进程,这样节点就可以被替换。
· stop_paranoid
关闭gossip和Thrift,即使仅仅是SSTable错误。
· stop
关闭gossip和Thrift,让节点实际上死亡了,但是可以使⽤JVX检查。
· best_effort
停⽌使⽤故障磁盘,然后基于剩余可⽤的SSTables来响应请求。这意味着你会在⼀致性级别为1的基础上看到过时的数据。
· ignore
忽略致命错误,并允许请求失败;所有⽂件系统错误都会被记录,但是忽略。在Cassandra 1.2版本之前是这种情况。
相关信息:在133页,在Cassandra 1.2处理磁盘故障博客和使⽤JBOD从单磁盘故障恢复。
endpoint_snitch
(默认: org.apache.cassandra.locator.SimpleSnitch) 设置成⼀个实现IEndpointSnitch接⼝的类。Cassandra使⽤告密者来定位节点和路由请求。
· SimpleSnitch
⽤于单数据中⼼部署或者公共云中的单个区域。不识别数据中⼼或者机架信息。它视策略顺序为接近,当忽略读修复时可以提⾼缓存局部性。
·GossipingPropertyFileSnitch
建议⽣产使⽤。本地节点机架和数据中⼼定义在cassandra-rackdc.properties⽂件⾥,通过⼋卦协议传播到其他节点。为了便于
从PropertyFileSnitch移植,它也使⽤cassandra-topology.properties,如果存在的话。
· PropertyFileSnitch
决定于机架和数据中⼼的距离,这是明确的在cassandratopology.properties⽂件⾥配置的。
· Ec2Snitch
EC2部署在⼀个单⼀区域。从亚马逊的EC2 API加载区域和可⽤区域信息。该区域被视为数据中⼼和作为机架可⽤区域,⽽且使⽤私有IP。它不跨多个区域⼯作。
· Ec2MultiRegionSnitch
使⽤共有IP作为broadcast_address,以此来允许跨区域连通。这意味着你也必须把种⼦节点地址设置为共有IP,⽽且开放公共IP防⽕墙的storage_port端⼝或者l_storage_port端⼝。对于区域内通信,Cassandra在连接建⽴之后切换到私有IP。
· RackInferringSnitch:
快递费用Proximity由机架和数据中⼼决定的,假定符合每个节点IP地址的第三个和第⼆个字节。使⽤这个告密者最好的例⼦是写⼀个定制的告密者类(除⾮这恰好符合你的部署)
· GoogleCloudSnitch:
在跨⼀个或者多个区域的Google云平台上部署Cassandra时,使⽤GoogleCloudSnitch。这个区域被视为⼀个数据中⼼和被视为数据中⼼内机架的可⽤区域。所有通信发⽣在相同逻辑⽹络内的私有IP地址。
· CloudstackSnitch
在Apache Cloudstack环境中使⽤CloudstackSnitch
相关信息:在20页的Snitches
rpc_address
(默认: localhost) 客户端连接的监听地址: (Thrift RPC 服务和本地运输). 有效值:
· unset:
通过节点的主机名和配置来决定地址。如果不设置,必须由主机名来决定这个节点的IP地址,使⽤/etc/hostname, /etc/hosts, 或者DNS。
·
0.0.0.0:
监听所有配置的接⼝,但是你必须把broadcast_rpc_address设置成0.0.0.0.以外的值。
读取配置文件失败· IP address
· hostname
相关信息: Network
rpc_interface
(默认: eth1)注客户端连接监听地址。接⼝必须对应⼀个单⼀地址,不⽀持IP别名。参考rpc_address.
rpc_interface_prefer_ipv6
(默认: false) 默认情况下,如果⼀个接⼝有⼀个ipv4和⼀个ipv6地址,那么ipv4地址会被优先使⽤。如果设置成true,ipv6地址会被优先使⽤。
seed_provider
这些主机地址被视为联系⼈地址。Cassandra节点使⽤种⼦列表来发现对⽅以及学习环的拓扑结构。
· class_name (默认: org.apache.cassandra.locator.SimpleSeedProvider)
Cassandra⽤来处理种⼦逻辑的类。它可以定制,但是通常不需要。
· - seeds (默认: 127.0.0.1)
⼀个逗号分隔的IP地址列表,gossip⽤来引导新节点加⼊集中去。
当多个节点在运⾏时,你必须修改默认的列表。在多数据中⼼的集中,种⼦节点⾄少包含⼀个每个数据中⼼的⼀个地址是个不错的主意。为了容错考虑,推荐每个数据中⼼指定超过⼀个种⼦节点。
成立公司否则,gossip在引导⼀个新节点时不得不和另外⼀个数据中⼼通信了。不推荐把每个节点都当成种⼦节点,因为增加了维护成本和减少
了gossip的性能。Gossip优化不是关键,但建议使⽤较少的种⼦列表。
(⼤概每个数据中⼼三个种⼦节点).
相关信息:在111页,初始化多节点集(单数据中⼼)在114页,初始化多节点集(多数据中⼼)
enable_user_defined_functions
(默认: false)⽤户⾃定义函数存在安全风险,因为它们是在服务器端执⾏。在Cassandra 3.0和后来版本中,⽤户⾃定义函数在含有恶意执⾏代码的沙箱中执⾏的。它们默认是禁⽌的。
杨采钰个人资料enable_scripted_user_defined_functions
(默认: false) 如果enable_user_defined_functions为true,那么Java的⽤户⾃定义函数始终启⽤。启⽤该选项来使⽤javascript和任何⾃定义的JSR-223的⽤户⾃定义函数。如果enable_user_defined_functions为false,那么这个选项就没有效果。
常见的compaction设置
compaction_throughput_mb_per_sec
(默认: 16) compaction指定的总吞吐量的阀值。你插⼊速度越快,越需要在规定时间内更快的压缩速度。推荐的值是16到32的写吞吐
量(单位:Mb/s)。设为0,表⽰禁⽤compaction throttling。
相关信息:154页的,配置compaction
compaction_large_partition_warning_threshold_mb
(默认: 100) 在压缩分区⼤于设定值时记录警告。
常见的 memtable 设置
memtable_heap_space_in_mb
(默认: 1/4 堆⼤⼩)注
设置在堆内存⾥分配的memtables的⼤⼩。Cassandra使⽤这个和memtable_offheap_space_in_mb的值总和来决定何时⾃动刷
新memtables。更多详细信息,参考memtable_cleanup_threshold.
相关信息:Java堆的优化
发布评论