cassandra.yaml 文件配置
cluster_name
注意:此文件提供两个版本: - cassandra.yaml:包含“兼容”配置的默认配置,该配置使用与运行旧版本 Cassandra 的机器向后兼容且可互操作的设置进行操作。提供此版本是为了方便现有 Cassandra 生产用户轻松无忧地升级,他们希望逐步谨慎地引入新功能。 - cassandra_latest.yaml:包含启用 Cassandra 最新功能的默认配置,包括改进的功能以及更高的性能。此版本适用于希望充分利用其集群的新 Cassandra 用户,以及评估该技术的用户。/注意
集群的名称。这主要用于防止一个逻辑集群中的机器加入另一个集群。
默认值: 'Test Cluster'
num_tokens
这定义了随机分配给此节点在环上的令牌数量。令牌越多,相对于其他节点,此节点将存储的数据比例越大。假设所有节点具有相同的硬件能力,您可能希望所有节点具有相同的令牌数量。
如果您未指定此项,Cassandra 将使用 1 个令牌的默认值以实现向后兼容性,并将使用下面描述的 initial_token。
指定 initial_token 将覆盖节点首次启动时的此设置,在后续启动时,即使设置了 initial_token,此设置也将适用。
有关 num_tokens 的最佳实践信息,请参阅 cassandra.apache.org/doc/latest/getting-started/production.html#tokens。
默认值 16
allocate_tokens_for_keyspace
此选项默认情况下已注释掉。
触发自动为此节点分配 num_tokens 个令牌。分配算法尝试以优化数据中心中节点的复制负载的方式选择令牌,以实现复制因子。
分配给每个节点的负载将接近于其虚拟节点数量的比例。
仅支持 Murmur3Partitioner。
复制因子由指定键空间使用的复制策略确定。
默认值: KEYSPACE
initial_token
此选项默认情况下已注释掉。
initial_token 允许您手动指定令牌。虽然您可以将其与虚拟节点一起使用(num_tokens > 1,如上所示)——在这种情况下,您应该提供一个逗号分隔的列表——但它主要用于将节点添加到没有启用虚拟节点的旧版集群中。
hinted_handoff_disabled_datacenters
此选项默认情况下已注释掉。
当 hinted_handoff_enabled 为 true 时,一个不会执行提示传递的数据中心黑名单
默认值(复杂选项):
# - DC1 # - DC2
hinted_handoff_throttle
每个传递线程的最大节流速度,以 KiB/秒为单位。这将按集群中节点数量的比例减少。(如果集群中有两个节点,每个传递线程将使用最大速率;如果集群中有三个节点,每个线程将节流到最大速率的一半,因为我们预计两个节点会同时传递提示。)最小单位:KiB
默认值: 1024KiB
hints_directory
此选项默认情况下已注释掉。
Cassandra 应该存储提示的目录。如果未设置,默认目录为 $CASSANDRA_HOME/data/hints。
默认值: /var/lib/cassandra/hints
max_hints_size_per_host
此选项默认情况下已注释掉。
为不可达主机存储提示的文件大小限制,以 MiB 为单位。一旦本地提示文件达到限制,将不再创建新的提示。设置非正值将禁用大小限制。
默认值: 0MiB
transfer_hints_on_decommission
此选项默认情况下已注释掉。
启用/禁用在取消分配期间将提示传输到对等节点。即使启用,也不能保证已记录批次的 consistency,并且在与严格的 hinted_handoff_throttle 结合使用时,可能会延迟取消分配。默认值:true
默认值: true
hints_compression
此选项默认情况下已注释掉。
要应用于提示文件的压缩。如果省略,提示文件将以未压缩的方式写入。支持 LZ4、Snappy 和 Deflate 压缩器。
默认值(复杂选项):
# - class_name: LZ4Compressor # parameters: # -
heap_dump_path
此选项默认情况下已注释掉。Cassandra 应该存储针对未捕获异常的一键式故障排除堆转储结果的目录。注意:此值可以通过 -XX:HeapDumpPath JVM 环境参数使用相对本地路径覆盖,以供测试使用(如果需要)。如果未设置,默认目录为 $CASSANDRA_HOME/heapdump
默认值: /var/lib/cassandra/heapdump
hint_window_persistent_enabled
此选项默认情况下已注释掉。
启用/禁用持久提示窗口。
如果设置为 false,则仅在相应的节点(提示针对该节点)失效时间小于或等于 max_hint_window 时,才会存储提示。
如果设置为 true,则在没有早于 max_hint_window 的提示的情况下,才会存储提示。这是为了应对节点不断重启且提示尚未传递的情况,在这种情况下,我们将无限期地保存针对该节点的提示。
默认为 true。
默认值: true
authenticator
身份验证后端,实现 IAuthenticator;用于识别用户。Cassandra 开箱即用地提供 org.apache.cassandra.auth.{AllowAllAuthenticator, PasswordAuthenticator}。
-
AllowAllAuthenticator 不执行任何检查 - 设置它以禁用身份验证。
-
PasswordAuthenticator 依赖于用户名/密码对来验证用户。它将用户名和哈希密码保存在 system_auth.roles 表中。如果您使用此身份验证器,请增加 system_auth 键空间的复制因子。如果使用 PasswordAuthenticator,还必须使用 CassandraRoleManager(见下文)
authorizer
MutualTlsAuthenticator 可以使用以下配置进行配置。您可以添加自己的验证器,该验证器实现 MutualTlsCertificateValidator 类,并提供从证书中提取身份和验证证书的逻辑。class_name : org.apache.cassandra.auth.MutualTlsAuthenticator parameters : validator_class_name: org.apache.cassandra.auth.SpiffeCertificateValidator
授权后端,实现 IAuthorizer;用于限制访问/提供权限。默认情况下,Cassandra 提供 org.apache.cassandra.auth.{AllowAllAuthorizer, CassandraAuthorizer}。
-
AllowAllAuthorizer 允许任何用户执行任何操作 - 设置它以禁用授权。
-
CassandraAuthorizer 将权限存储在 system_auth.role_permissions 表中。如果您使用此授权器,请增加 system_auth keyspace 的复制因子。
默认值: AllowAllAuthorizer
role_manager
身份验证和授权后端的一部分,实现 IRoleManager;用于维护角色之间的授权和成员资格。默认情况下,Cassandra 提供 org.apache.cassandra.auth.CassandraRoleManager,它将角色信息存储在 system_auth keyspace 中。IRoleManager 的大多数功能都需要经过身份验证的登录,因此除非配置的 IAuthenticator 实际上实现了身份验证,否则大多数功能将不可用。
-
CassandraRoleManager 将角色数据存储在 system_auth keyspace 中。如果您使用此角色管理器,请增加 system_auth keyspace 的复制因子。
默认值: CassandraRoleManager
network_authorizer
网络授权后端,实现 INetworkAuthorizer;用于限制用户访问某些数据中心。默认情况下,Cassandra 提供 org.apache.cassandra.auth.{AllowAllNetworkAuthorizer, CassandraNetworkAuthorizer}。
-
AllowAllNetworkAuthorizer 允许任何用户访问任何数据中心 - 设置它以禁用授权。
-
CassandraNetworkAuthorizer 将权限存储在 system_auth.network_permissions 表中。如果您使用此授权器,请增加 system_auth keyspace 的复制因子。
默认值: AllowAllNetworkAuthorizer
cidr_authorizer
CIDR 授权后端,实现 ICIDRAuthorizer;用于限制用户从某些 CIDR 访问。默认情况下,Cassandra 提供 org.apache.cassandra.auth.{AllowAllCIDRAuthorizer, CassandraCIDRAuthorizer}。- AllowAllCIDRAuthorizer 允许任何用户从任何 CIDR 访问 - 设置它以禁用 CIDR 授权。- CassandraCIDRAuthorizer 将用户的 CIDR 权限存储在 system_auth.cidr_permissions 表中。如果您使用此授权器,请增加 system_auth keyspace 的复制因子,否则当主机宕机时,此功能使用的 system_auth 表的任何更改都可能丢失。
traverse_auth_from_root
此选项默认情况下已注释掉。
根据集群的授权策略,从根到表(根 → ks → 表)迭代可能比从表到根(表 → ks → 根)迭代更有益。由于授权条目是白名单,一旦找到权限,您就知道它是有效的。我们默认设置为 false,因为传统行为是在表级别查询,然后向上移动到根。有关详细信息,请参阅 CASSANDRA-17016。
默认值: false
roles_validity
角色缓存的有效期(根据角色管理器获取授予的角色可能是一项昂贵的操作,CassandraRoleManager 就是一个例子)。授予的角色在经过身份验证的会话中被缓存到 AuthenticatedUser 中,并且在指定的时间段后,将有资格进行(异步)重新加载。默认值为 2000,设置为 0 以完全禁用缓存。对于 AllowAllAuthenticator,将自动禁用。对于使用 roles_cache_active_update 的长期运行缓存,请考虑设置为更长的时间,例如每天验证:86400000 最小单位:ms
默认值: 2000ms
roles_update_interval
此选项默认情况下已注释掉。
角色缓存的刷新间隔(如果已启用)。在此间隔后,缓存条目将有资格进行刷新。在下次访问时,将安排异步重新加载,并在完成之前返回旧值。如果 roles_validity 非零,则此值也必须非零。此设置还用于告知使用 roles_cache_active_update 时自动更新的间隔。默认值与 roles_validity 相同。对于长期运行的缓存,请考虑将其设置为 60000(1 小时)等。最小单位:ms
默认值: 2000ms
roles_cache_active_update
此选项默认情况下已注释掉。
如果为 true,则缓存内容将由后台任务以 roles_update_interval 设置的间隔主动更新。如果为 false,则缓存条目将在其更新间隔后有资格进行刷新。在下次访问时,将安排异步重新加载,并在完成之前返回旧值。
默认值: false
permissions_validity
权限缓存的有效期(根据授权器获取权限可能是一项昂贵的操作,CassandraAuthorizer 就是一个例子)。默认值为 2000,设置为 0 以禁用。对于 AllowAllAuthorizer,将自动禁用。对于使用 permissions_cache_active_update 的长期运行缓存,请考虑设置为更长的时间,例如每天验证:86400000ms 最小单位:ms
默认值: 2000ms
permissions_update_interval
此选项默认情况下已注释掉。
权限缓存的刷新间隔(如果已启用)。在此间隔后,缓存条目将有资格进行刷新。在下次访问时,将安排异步重新加载,并在完成之前返回旧值。如果 permissions_validity 非零,则此值也必须非零。此设置还用于告知使用 permissions_cache_active_update 时自动更新的间隔。默认值与 permissions_validity 相同。对于更长期的权限缓存,请考虑将其设置为每小时更新(60000)。最小单位:ms
默认值: 2000ms
permissions_cache_active_update
此选项默认情况下已注释掉。
如果为 true,则缓存内容将由后台任务以 permissions_update_interval 设置的间隔主动更新。如果为 false,则缓存条目将在其更新间隔后有资格进行刷新。在下次访问时,将安排异步重新加载,并在完成之前返回旧值。
默认值: false
credentials_validity
凭据缓存的有效期。此缓存与提供的 IAuthenticator 的 PasswordAuthenticator 实现紧密耦合。如果配置了其他 IAuthenticator 实现,则此缓存不会自动使用,因此以下设置将无效。请注意,凭据以加密形式缓存,因此虽然激活此缓存可能会减少对底层表的查询次数,但它可能不会显着减少单个身份验证尝试的延迟。默认值为 2000,设置为 0 以禁用凭据缓存。对于使用 credentials_cache_active_update 的长期运行缓存,请考虑设置为更长的时间,例如每天验证:86400000 最小单位:ms
默认值: 2000ms
credentials_update_interval
此选项默认情况下已注释掉。
凭据缓存的刷新间隔(如果已启用)。在此间隔后,缓存条目将有资格进行刷新。在下次访问时,将安排异步重新加载,并在完成之前返回旧值。如果 credentials_validity 非零,则此值也必须非零。此设置还用于告知使用 credentials_cache_active_update 时自动更新的间隔。默认值与 credentials_validity 相同。对于更长期的权限缓存,请考虑将其设置为每小时更新(60000)。最小单位:ms
默认值: 2000ms
credentials_cache_active_update
此选项默认情况下已注释掉。
如果为 true,则缓存内容将由后台任务以 credentials_update_interval 设置的间隔主动更新。如果为 false(默认),则缓存条目将在其更新间隔后有资格进行刷新。在下次访问时,将安排异步重新加载,并在完成之前返回旧值。
默认值: false
partitioner
分区器负责将行组(按分区键)分布到集群中的节点。分区器不能在不重新加载所有数据的情况下更改。如果您要添加节点或升级,则应将其设置为当前使用的相同分区器。
默认分区器是 Murmur3Partitioner。为了向后兼容,已包含旧的分区器,例如 RandomPartitioner、ByteOrderedPartitioner 和 OrderPreservingPartitioner。对于新集群,您不应更改此值。
默认值: org.apache.cassandra.dht.Murmur3Partitioner
data_file_directories
此选项默认情况下已注释掉。
Cassandra 应该在磁盘上存储数据的目录。如果指定了多个目录,Cassandra 将通过对令牌范围进行分区,将数据均匀地分布在这些目录中。如果未设置,则默认目录为 $CASSANDRA_HOME/data/data。
默认值(复杂选项):
# - /var/lib/cassandra/data
local_system_data_file_directory
此选项默认情况下已注释掉。Cassandra 应该存储本地系统 keyspace 数据的目录。默认情况下,Cassandra 将在 data_file_directories 指定的第一个数据目录中存储本地系统 keyspace 的数据。这种方法确保如果其他磁盘之一丢失,Cassandra 仍然可以继续运行。为了获得额外的安全性,此设置允许将这些数据存储在提供冗余的不同目录中。
commitlog_directory
此选项默认情况下已注释掉。
提交日志。在磁性硬盘驱动器上运行时,这应该与数据目录位于不同的主轴上。如果未设置,则默认目录为 $CASSANDRA_HOME/data/commitlog。
默认值: /var/lib/cassandra/commitlog
cdc_enabled
在每个节点的基础上启用/禁用 CDC 功能。这将修改用于写入路径分配拒绝的逻辑(标准:从不拒绝。cdc:如果 cdc_raw_directory 中的空间已满,则拒绝包含 CDC 启用表的 Mutation)。
默认值: false
cdc_block_writes
此选项默认情况下已注释掉。
指定当磁盘上的 CDC 数据达到限制时,是否应阻止对 CDC 启用表的写入。当设置为 false 时,写入将不会被阻止,并且将删除磁盘上最旧的 CDC 数据以确保大小约束。默认值为 true。
默认值: true
cdc_on_repair_enabled
此选项默认情况下已注释掉。
指定 CDC 变异是否在流式传输(例如修复)时通过写入路径重放。启用后,流式传输到目标节点的 CDC 数据将首先写入提交日志。当设置为 false 时,流式传输的 CDC 数据将与正常流式传输一样写入 SSTable。默认值为 true。如果将其设置为 false,流式传输将快得多,但是,在极端情况下(在副本集中丢失 > 法定人数的节点),您可能在 SSTable 中有数据,而这些数据从未进入 CDC 日志。
默认值: true
cdc_raw_directory
此选项默认情况下已注释掉。
如果 cdc_enabled: true 并且段包含 CDC 启用表的变异,则 CommitLogSegments 将在刷新时移动到此目录。这应该放在与数据目录不同的主轴上。如果未设置,则默认目录为 $CASSANDRA_HOME/data/cdc_raw。
默认值: /var/lib/cassandra/cdc_raw
disk_access_mode
此选项默认情况下已注释掉。
访问磁盘的策略
auto 在 64 位 JVM 上启用数据文件和索引文件的 mmap。
standard 完全禁用 mmap。
mmap 映射索引文件和数据文件。如果所有正在积极读取的 SSTable 无法容纳在 RAM 中,mmap 会导致过度分页。
mmap_index_only 与 mmap 相似,但仅映射索引文件。如果您观察到大量页面错误或窃取以及延迟增加,使用此设置可能也有所帮助。此设置是默认设置。
默认值: mmap_index_only
disk_failure_policy
数据磁盘故障的策略
die 关闭八卦和客户端传输并杀死 JVM 以应对任何文件系统错误或单个 SSTable 错误,以便可以替换节点。
stop_paranoid 即使是单个 SSTable 错误,也要关闭八卦和客户端传输,在启动期间出现错误时杀死 JVM。
stop 关闭八卦和客户端传输,使节点实际上失效,但仍然可以通过 JMX 进行检查,在启动期间出现错误时杀死 JVM。
best_effort 停止使用故障磁盘,并根据剩余的可用 SSTable 响应请求。这意味着您将在 CL.ONE 看到过时的数据!
ignore 忽略致命错误并让请求失败,就像在 1.2 之前的 Cassandra 中一样
默认值: stop
commit_failure_policy
提交磁盘故障的策略
die 关闭节点并杀死 JVM,以便可以替换节点。
stop 关闭节点,使节点实际上失效,但仍然可以通过 JMX 进行检查。
stop_commit 关闭提交日志,让写入收集,但继续服务读取,就像在 2.0.5 之前的 Cassandra 中一样
ignore 忽略致命错误并让批处理失败
默认值: stop
prepared_statements_cache_size
本地协议准备语句缓存的最大大小
有效值为 "auto"(省略值)或大于 0 的值。
请注意,指定过大的值会导致长时间运行的 GC 以及可能的内存不足错误。请将该值保持在堆的一小部分。
如果您经常看到 "由于缓存限制已达到,在过去一分钟内丢弃的准备语句" 消息,第一步是调查这些消息的根本原因,并检查准备语句是否被正确使用 - 例如,对可变部分使用绑定标记。
只有在您确实拥有超过缓存容量的准备语句时才更改默认值。在大多数情况下,没有必要更改此值。不断重新准备语句会降低性能。
默认值 ("auto") 为堆的 1/256 或 10MiB,以较大者为准。最小单位:MiB
key_cache_size
内存中键缓存的最大大小。
每次键缓存命中都会节省至少 1 次查找,每次行缓存命中都会节省至少 2 次查找,有时甚至更多。键缓存对于节省的时间来说非常小,因此在大量使用时非常值得。行缓存可以节省更多时间,但必须包含整行,因此非常占用空间。最好只在您有热点行或静态行时才使用行缓存。
如果您减小大小,您可能无法在启动时加载最热的键。 |
默认值为 "auto"(min(堆的 5% (以 MiB 为单位),100MiB))。设置为 0 以禁用键缓存。
这仅与使用键缓存的 SSTable 格式相关,例如 BIG。最小单位:MiB
key_cache_save_period
Cassandra 应该保存键缓存的持续时间(以秒为单位)。缓存将保存到此配置文件中指定的 saved_caches_directory。
保存的缓存极大地提高了冷启动速度,并且在键缓存的 I/O 方面相对便宜。行缓存保存要昂贵得多,而且用途有限。
这仅与使用键缓存的 SSTable 格式相关,例如 BIG。默认值为 14400 或 4 小时。最小单位:s
默认值: 4h
key_cache_keys_to_save
此选项默认情况下已注释掉。
要保存的键缓存中的键数。默认情况下禁用,这意味着所有键都将被保存。这仅与使用键缓存的 SSTable 格式相关,例如 BIG。
默认值 100
row_cache_class_name
此选项默认情况下已注释掉。
行缓存实现类名。可用的实现
org.apache.cassandra.cache.OHCProvider 全部非堆行缓存实现(默认)。
org.apache.cassandra.cache.SerializingCacheProvider 这是 Cassandra 以前版本中可用的行缓存实现。
默认值: org.apache.cassandra.cache.OHCProvider
row_cache_size
内存中行缓存的最大大小。请注意,OHC 缓存实现需要一些额外的非堆内存来管理映射结构,以及在操作期间的一些飞行内存,以便在缓存条目可以计入缓存容量之前或之后。此开销通常与整个容量相比很小。不要指定超过系统在最糟糕的正常情况下所能承受的内存,并为操作系统块级缓存留出一些空间。永远不要让您的系统进行交换。
默认值为 0,以禁用行缓存。最小单位:MiB
默认值: 0MiB
row_cache_save_period
Cassandra 应该保存行缓存的持续时间(以秒为单位)。缓存将保存到此配置文件中指定的 saved_caches_directory。
保存的缓存极大地提高了冷启动速度,并且在键缓存的 I/O 方面相对便宜。行缓存保存要昂贵得多,而且用途有限。
默认值为 0,以禁用保存行缓存。最小单位:s
默认值: 0s
counter_cache_size
内存中计数器缓存的最大大小。
计数器缓存有助于减少热点计数器单元的计数器锁争用。在 RF = 1 的情况下,计数器缓存命中会导致 Cassandra 完全跳过写前的读取。对于 RF > 1,计数器缓存命中仍然有助于减少锁保持的持续时间,从而有助于热点计数器单元更新,但不会允许完全跳过读取。计数器单元的本地(时钟、计数)元组保存在内存中,而不是整个计数器,因此它相对便宜。
如果您减小大小,您可能无法在启动时加载最热的键。 |
默认值为 "auto"(min(堆的 2.5% (以 MiB 为单位),50MiB))。设置为 0 以禁用计数器缓存。注意:如果您执行计数器删除并依赖于低 gcgs,您应该禁用计数器缓存。最小单位:MiB
counter_cache_save_period
Cassandra 应该保存计数器缓存(仅限键)的持续时间(以秒为单位)。缓存将保存到此配置文件中指定的 saved_caches_directory。
默认值为 7200 或 2 小时。最小单位:s
默认值: 7200s
saved_caches_directory
此选项默认情况下已注释掉。
保存的缓存。如果未设置,默认目录为 $CASSANDRA_HOME/data/saved_caches。
默认值: /var/lib/cassandra/saved_caches
cache_load_timeout
此选项默认情况下已注释掉。
服务器在启动 Cassandra 进程时等待每个缓存(行、键等)加载的秒数。将其设置为零等同于在启动时禁用所有缓存加载,同时在运行时仍然拥有缓存。最小单位:s
默认值: 30s
commitlog_sync_group_window
此选项默认情况下已注释掉。
commitlog_sync 可以是 "periodic"、"group" 或 "batch"。
在批处理模式下,Cassandra 不会在提交日志被刷新到磁盘之前确认写入。每次传入的写入都会触发刷新任务。
组模式类似于批处理模式,Cassandra 不会在提交日志被刷新到磁盘之前确认写入。不同之处在于组模式将在刷新之间等待最多 commitlog_sync_group_window。
最小单位:ms
默认值: 1000ms
commitlog_sync
默认选项为 "periodic",其中写入可能立即被确认,而 CommitLog 只是每 commitlog_sync_period 毫秒同步一次。
默认值: periodic
commitlog_segment_size
单个提交日志文件段的大小。提交日志段可以在所有数据(可能来自系统中的每个列族)被刷新到 sstable 后被归档、删除或回收。
默认大小为 32,这几乎总是可以的,但是如果您正在归档提交日志段(请参阅 commitlog_archiving.properties),那么您可能需要更精细的归档粒度;8 或 16 MB 是合理的。最大突变大小也可以通过 cassandra.yaml 中的 max_mutation_size 设置进行配置。默认值为 commitlog_segment_size 大小的一半(以字节为单位)。这应该是正数,并且小于 2048。
如果 max_mutation_size 被显式设置,那么 commitlog_segment_size 必须至少设置为 max_mutation_size 大小的两倍。 |
最小单位:MiB
默认值: 32MiB
commitlog_compression
此选项默认情况下已注释掉。
要应用于提交日志的压缩。如果省略,提交日志将以未压缩的方式写入。支持 LZ4、Snappy 和 Deflate 压缩器。
默认值(复杂选项):
# - class_name: LZ4Compressor # parameters: # -
commitlog_disk_access_mode
设置用于写入提交日志段的磁盘访问模式。允许的值为: - auto:版本相关的最佳设置 - legacy:Cassandra 4.x 及更早版本中使用的默认模式(当提交日志被压缩或加密时使用标准 I/O,否则使用 mmap) - mmap:使用内存映射 I/O - 仅在提交日志既未压缩也未加密时可用 - direct:使用直接 I/O - 仅在提交日志既未压缩也未加密时可用 - standard:使用标准 I/O - 仅在提交日志被压缩或加密时可用。当存储兼容性设置为 4 时,默认设置为 legacy,否则设置为 auto。
默认值: legacy
table
此选项默认情况下已注释掉。
对于压缩表,在它们刷新时要应用于 SSTable 的压缩。请注意,没有启用压缩的表不尊重此标志。
由于 LZ4HC、Zstd 和 Deflate 等高比率压缩器可能会阻塞刷新太长时间,因此默认情况下在这些情况下使用已知的快速压缩器进行刷新。选项是
none:在不压缩块的情况下进行刷新,但仍然进行校验和。fast:使用快速压缩器进行刷新。如果表已经在使用快速压缩器,则使用该压缩器。
默认值:始终使用与表相同的压缩器进行刷新。这
seed_provider
任何实现 SeedProvider 接口并具有接受 Map<String, String> 参数的构造函数的类都可以。
默认值(复杂选项):
# Addresses of hosts that are deemed contact points. # Cassandra nodes use this list of hosts to find each other and learn # the topology of the ring. You must change this if you are running # multiple nodes! - 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:7000" # If set to "true", SimpleSeedProvider will return all IP addresses for a DNS name, # based on the configured name service on the system. Defaults to "false". # resolve_multiple_ip_addresses_per_dns_record: "false"
concurrent_reads
对于数据量超过内存容量的工作负载,Cassandra 的瓶颈将是需要从磁盘获取数据的读取。"concurrent_reads" 应该设置为 (16 * 磁盘数量),以便允许操作在堆栈中排队足够低,以便操作系统和驱动器可以重新排序它们。同样适用于 "concurrent_counter_writes",因为计数器写入会在递增并写回之前读取当前值。
另一方面,由于写入几乎从不与 IO 绑定,因此 "concurrent_writes" 的理想数量取决于系统中的核心数量;(8 * 核心数量) 是一个很好的经验法则。
默认值 32
networking_cache_size
此选项默认情况下已注释掉。
用于节点间和客户端-服务器网络缓冲区的最大内存。
默认为堆的 1/16 或 128MB 中较小的一个。此池在非堆中分配,因此是除了为堆分配的内存之外的。缓存还具有堆开销,每个块大约为 128 字节(即如果使用默认的 64k 块大小,则为保留大小的 0.2%)。内存仅在需要时分配。最小单位:MiB
默认值: 128MiB
file_cache_size
此选项默认情况下已注释掉。
用于 sstable 块缓存和缓冲池的最大内存使用量。其中 32MB 预留用于池化缓冲区,其余部分用于存储未压缩 sstable 块的块缓存。默认值为堆大小的 1/4 或 512MB 中的较小值。此池在堆外分配,因此它是在为堆分配的内存之外的。缓存还具有堆内开销,每个块大约为 128 字节(即,如果使用默认的 64k 块大小,则为预留大小的 0.2%)。仅在需要时分配内存。最小单位:MiB
默认值: 512MiB
buffer_pool_use_heap_if_exhausted
此选项默认情况下已注释掉。
指示当 sstable 缓冲池耗尽时是否在堆上或堆外分配内存,即当它超过最大内存 file_cache_size 时,它将不再缓存缓冲区,而是按需分配。
默认值: true
memtable
支持的 memtable 实现和选定的默认值。目前 Cassandra 提供两种 memtable 实现: - SkipListMemtable 是早期 Cassandra 版本提供的传统 memtable 实现。 - TrieMemtable 是一种新的 memtable,它利用了 trie 数据结构。此实现通过将更多 sstable 元数据移出堆来显着减少垃圾回收负载,在相同分配中容纳更多数据,并且可以可靠地处理更高的写入吞吐量。由于 trie memtable 是一种分片的单写入器解决方案,因此当负载分布非常不均匀时,例如当大多数写入访问非常少的分区或使用传统二级索引时,它的性能可能会更差。可以通过在表定义中将 memtable 属性设置为下面指定的配置之一,为每个表选择 memtable 实现。如果未设置 memtable 属性,将使用“默认”配置。有关更多信息,请参阅 src/java/org/apache/cassandra/db/memtable/Memtable_API.md。
memtable_heap_space
此选项默认情况下已注释掉。
允许用于 memtable 的总内存。当超过限制时,Cassandra 将停止接受写入,直到完成刷新,并将根据 memtable_cleanup_threshold 触发刷新。如果省略,Cassandra 将将两者都设置为堆大小的 1/4。最小单位:MiB
默认值: 2048MiB
memtable_cleanup_threshold
此选项默认情况下已注释掉。
memtable_cleanup_threshold 已弃用。默认计算是唯一合理的选择。有关更多信息,请参阅有关 memtable_flush_writers 的注释。
已占用非刷新 memtable 大小与允许的总大小的比率,该比率将触发对最大 memtable 的刷新。较大的 mct 将意味着更大的刷新,因此更少的压缩,但也更少的并发刷新活动,这可能会在繁重的写入负载下难以保持磁盘的供给。
memtable_cleanup_threshold 默认值为 1 / (memtable_flush_writers + 1)
默认值 0.11
memtable_allocation_type
指定 Cassandra 分配和管理 memtable 内存的方式。选项是
heap_buffers 堆上 nio 缓冲区
offheap_buffers 堆外(直接)nio 缓冲区
offheap_objects 堆外对象
默认值: heap_buffers
repair_session_space
此选项默认情况下已注释掉。
限制在修复特定表和公共令牌范围期间用于 Merkle 树计算的内存使用量。针对多个表或虚拟节点的修复命令可能会超过此限制,具体取决于 concurrent_merkle_tree_requests。
默认值为可用堆的 1/16。主要权衡是较小的树具有较低的解析度,这会导致过度流式传输数据。如果您在修复期间看到堆压力,请考虑降低此值,但不能低于 1 兆字节。如果您看到大量过度流式传输,请考虑提高此值或使用子范围修复。
有关更多详细信息,请参阅 issues.apache.org/jira/browse/CASSANDRA-14096。
最小单位:MiB
concurrent_merkle_tree_requests
此选项默认情况下已注释掉。
修复命令可以执行的并发 Merkle 树请求数。每个验证请求的大小受 repair_session_space 属性限制,因此将其设置为 1 将确保修复命令不会超过该限制,即使修复命令正在修复多个表或多个虚拟节点。
为了向后兼容,默认情况下没有限制,但这可能会为修复多个表或多个虚拟节点的命令产生 OOM。通常建议使用单个并发 Merkle 树请求,并且没有虚拟节点,因此 repair_session_space 以及由此产生的 Merkle 树解析度可以很高。对于虚拟节点,使用默认 repair_session_space 值的 1 个值将产生更高解析度的 Merkle 树,但会以速度为代价。或者,在使用虚拟节点时,减少 repair_session_space 并增加 concurrent_merkle_tree_requests 的值可能是有意义的,因为每个范围将包含更少的数据。
有关更多详细信息,请参阅 issues.apache.org/jira/browse/CASSANDRA-19336。
值为零表示没有限制。
默认值 0
commitlog_total_space
此选项默认情况下已注释掉。 # 为支持它的每个修复消息配置重试。从现在开始,重试使用指数算法,其中每次尝试的睡眠时间都根据 base_sleep_time 和尝试次数延长。 retries: max_attempts: 10 base_sleep_time: 200ms max_sleep_time: 1s # 由于它们包含 Merkle 树,因此增加验证响应的超时时间 merkle_tree_response: base_sleep_time: 30s max_sleep_time: 1m
用于磁盘上提交日志的总空间。
如果空间超过此值,Cassandra 将刷新最旧段中的每个脏 CF 并将其删除。因此,较小的总提交日志空间往往会导致对活动较少的列族进行更多刷新活动。
默认值为 8192 和提交日志卷的总空间的 1/4 中的较小值。
默认值: 8192MiB
memtable_flush_writers
此选项默认情况下已注释掉。
这将设置每个磁盘的 memtable 刷新写入器线程数以及可以并发刷新的 memtable 总数。这些通常是计算和 IO 绑定的组合。
Memtable 刷新比 memtable 摄取更有效率,单个线程可以跟上单个快速磁盘上整个服务器的摄取速率,直到它在竞争中暂时变得 IO 绑定,通常与压缩有关。此时,您需要多个刷新线程。在将来的某个时刻,它可能会一直变得 CPU 绑定。
您可以使用 MemtablePool.BlockedOnAllocation 指标判断刷新是否落后,该指标应为 0,但如果线程被阻塞等待刷新释放内存,则该指标将不为 0。
memtable_flush_writers 默认情况下对于单个数据目录为 2。这意味着可以将两个 memtable 并发刷新到单个数据目录。如果您有多个数据目录,则默认情况下一次只刷新一个 memtable,但刷新将使用每个数据目录的线程,因此您将获得两个或多个写入器。
对于作为单个数据目录挂载的快速磁盘 [阵列],两个通常就足够了。添加更多刷新写入器会导致更小、更频繁的刷新,从而引入更多压缩开销。
在可以并发刷新的 memtable 数与刷新大小和频率之间存在直接的权衡。更多并不一定更好,您只需要足够的刷新写入器来避免在等待刷新释放内存时停滞。
默认值 2
cdc_total_space
此选项默认情况下已注释掉。
用于磁盘上更改数据捕获日志的总空间。
如果空间超过此值,Cassandra 将对包含启用 CDC 的表的 Mutations 抛出 WriteTimeoutException。CDCCompactor 负责解析原始 CDC 日志并在解析完成后将其删除。
默认值为 4096 MiB 和 cdc_raw_directory 所在驱动器总空间的 1/8 中的较小值。最小单位:MiB
默认值: 4096MiB
cdc_free_space_check_interval
此选项默认情况下已注释掉。
当我们达到 cdc_raw 限制并且 CDCCompactor 运行缓慢或遇到反压时,我们将以以下间隔检查是否有任何新的空间可用于 cdc 跟踪的表。默认值为 250ms 最小单位:ms
默认值: 250ms
index_summary_capacity
用于 SSTable 索引摘要的固定内存池大小(以 MB 为单位)。如果留空,它将默认为堆大小的 5%。如果所有索引摘要的内存使用量超过此限制,则读取速率低的 SSTable 将缩小其索引摘要以满足此限制。但是,这是一个尽力而为的过程。在极端情况下,Cassandra 可能需要使用超过此内存量的内存。仅与使用索引摘要的格式相关,例如 BIG。最小单位:KiB
index_summary_resize_interval
索引摘要应重新采样的频率。这会定期执行,以便将内存从固定大小的池重新分配到 SSTable,使其与最近的读取速率成比例。设置为 null 值将禁用此过程,使现有索引摘要保持其当前采样级别。仅与使用索引摘要的格式相关,例如 BIG。最小单位:m
默认值: 60m
trickle_fsync
是否在进行顺序写入时,以间隔方式执行 fsync() 以强制操作系统刷新脏缓冲区。启用此选项可避免突然的脏缓冲区刷新影响读取延迟。在 SSD 上几乎总是好的选择;在磁盘上不一定。
默认值: false
ssl_storage_port
用于传统加密通信的 SSL 端口。除非在 server_encryption_options 中启用(见下文),否则此属性不会使用。从 cassandra 4.0 开始,此属性已弃用,因为单个端口可用于安全或不安全连接。出于安全原因,您不应将此端口公开到互联网。如果需要,请对其进行防火墙。
默认值 7001
listen_address
要绑定到的地址或接口,并告诉其他 Cassandra 节点连接到该地址或接口。如果您希望多个节点能够相互通信,则必须更改此设置!
设置 listen_address 或 listen_interface,不要同时设置两者。
留空将由 InetAddress.getLocalHost() 决定。如果节点配置正确(主机名、名称解析等),这将始终执行正确操作,并且正确操作是使用与主机名关联的地址(它可能不是)。如果无法解析,它将回退到 InetAddress.getLoopbackAddress(),这对于生产系统来说是错误的。
将 listen_address 设置为 0.0.0.0 始终是错误的。
默认值: localhost
listen_interface
此选项默认情况下已注释掉。
设置 listen_address 或 listen_interface,不要同时设置两者。接口必须对应于单个地址,不支持 IP 别名。
默认值: eth0
listen_interface_prefer_ipv6
此选项默认情况下已注释掉。
如果您选择按名称指定接口,并且该接口具有 IPv4 和 IPv6 地址,则可以使用 listen_interface_prefer_ipv6 指定要选择哪个地址。如果为 false,则将使用第一个 IPv4 地址。如果为 true,则将使用第一个 IPv6 地址。默认值为 false,优先使用 IPv4。如果只有一个地址,则无论 IPv4/IPv6 如何,都将选择该地址。
默认值: false
listen_on_broadcast_address
此选项默认情况下已注释掉。
当使用多个物理网络接口时,将此设置为 true 以在 broadcast_address 上监听,除了 listen_address 之外,允许节点在两个接口中进行通信。如果网络配置自动在公共网络和私有网络之间路由(例如 EC2),请忽略此属性。
默认值: false
start_native_transport
class_name : org.apache.cassandra.auth.AllowAllInternodeAuthenticator parameters : MutualTlsInternodeAuthenticator can be configured using the following configuration.One can add their own validator which implements MutualTlsCertificateValidator class and provide logic for extracting identity out of certificates and validating certificates. class_name : org.apache.cassandra.auth.MutualTlsInternodeAuthenticator parameters : validator_class_name: org.apache.cassandra.auth.SpiffeCertificateValidator trusted_peer_identities: "spiffe1,spiffe2" node_identity: "spiffe1" Whether to start the native transport server. The address on which the native transport is bound is defined by rpc_address.
默认值: true
native_transport_port_ssl
此选项默认情况下被注释掉。在 client_encryption_options 中启用本机传输加密允许您为标准端口使用加密,或者使用专用附加端口以及未加密的标准 native_transport_port。启用客户端加密并将 native_transport_port_ssl 保持为禁用状态将为 native_transport_port 使用加密。将 native_transport_port_ssl 设置为与 native_transport_port 不同的值将为 native_transport_port_ssl 使用加密,同时保持 native_transport_port 未加密。此功能已在 Cassandra 5.0 中弃用,并将被删除。请参阅 NEWS.txt 中的弃用部分。
默认值 9142
native_transport_max_frame_size
此选项默认情况下已注释掉。
允许的最大帧大小。大于此大小的帧(请求)将被拒绝为无效。默认值为 16MiB。如果您要更改此参数,您可能需要相应地调整 max_value_size。这应该是正数且小于 2048。最小单位:MiB
默认值: 16MiB
native_transport_max_concurrent_connections_per_ip
此选项默认情况下已注释掉。
每个源 IP 的最大并发客户端连接数。默认值为 -1,表示无限制。
默认值 -1
native_transport_allow_older_protocols
控制 Cassandra 是否遵守较旧但当前支持的协议版本。默认值为 true,这意味着将遵守所有支持的协议。
默认值: true
native_transport_idle_timeout
此选项默认情况下已注释掉。
控制何时关闭空闲客户端连接。空闲连接是指在一段时间内既没有读取也没有写入的连接。
客户端可以通过在超时后发送 OPTIONS 本机协议消息来实现心跳,这将在服务器端重置空闲超时计时器。要关闭空闲客户端连接,必须在客户端设置心跳间隔的相应值。
空闲连接超时默认情况下被禁用。最小单位:ms
默认值: 60000ms
native_transport_rate_limiting_enabled
此选项默认情况下已注释掉。
启用后,限制每秒为处理分派的本机传输请求数。一旦超过限制,行为将取决于客户端在连接建立期间发送的 STARTUP 消息中指定的 THROW_ON_OVERLOAD 值。(参见“CQL BINARY PROTOCOL v5”中的“4.1.1. STARTUP”部分。)如果启用了 THROW_ON_OVERLOAD 标志,则超过限制的消息将被丢弃,并且会为客户端抛出 OverloadedException 以供处理。如果未启用该标志,则服务器将停止从通道/套接字中使用消息,对客户端施加反压,同时处理已分派的的消息。
默认值: false
rpc_address
绑定本机传输服务器的地址或接口。
设置 rpc_address 或 rpc_interface,而不是两者都设置。
将 rpc_address 留空与 listen_address 的效果相同(即它将基于节点的配置主机名)。
请注意,与 listen_address 不同,您可以指定 0.0.0.0,但您还必须将 broadcast_rpc_address 设置为除 0.0.0.0 之外的值。
出于安全原因,您不应将此端口公开到互联网。如果需要,请对其进行防火墙。
默认值: localhost
rpc_interface
此选项默认情况下已注释掉。
设置 rpc_address 或 rpc_interface,而不是两者都设置。接口必须对应于单个地址,不支持 IP 别名。
默认值: eth1
rpc_interface_prefer_ipv6
此选项默认情况下已注释掉。
如果您选择按名称指定接口,并且该接口具有 IPv4 和 IPv6 地址,则可以使用 rpc_interface_prefer_ipv6 指定要选择哪个地址。如果为 false,则将使用第一个 IPv4 地址。如果为 true,则将使用第一个 IPv6 地址。默认值为 false,优先使用 IPv4。如果只有一个地址,则无论 IPv4/IPv6 如何,都将选择该地址。
默认值: false
broadcast_rpc_address
此选项默认情况下已注释掉。
广播到驱动程序和其他 Cassandra 节点的 RPC 地址。这不能设置为 0.0.0.0。如果留空,这将设置为 rpc_address 的值。如果 rpc_address 设置为 0.0.0.0,则必须设置 broadcast_rpc_address。
默认值 1.2.3.4
internode_socket_send_buffer_size
此选项默认情况下已注释掉。
取消注释以设置节点间通信的套接字缓冲区大小。请注意,在设置此项时,缓冲区大小受 net.core.wmem_max 限制,而在未设置此项时,它由 net.ipv4.tcp_wmem 定义。另请参见:/proc/sys/net/core/wmem_max /proc/sys/net/core/rmem_max /proc/sys/net/ipv4/tcp_wmem /proc/sys/net/ipv4/tcp_wmem 和 'man tcp' 最小单位:B
internode_socket_receive_buffer_size
此选项默认情况下已注释掉。
取消注释以设置节点间通信的套接字缓冲区大小。请注意,在设置此项时,缓冲区大小受 net.core.wmem_max 限制,而在未设置此项时,它由 net.ipv4.tcp_wmem 定义。最小单位:B
incremental_backups
设置为 true 以使 Cassandra 在此节点的所有键空间数据中的 backups/ 子目录中创建对本地刷新或流式传输的每个 sstable 的硬链接。删除这些链接是操作员的责任。操作员还可以通过将表参数 incremental_backups 设置为 false 来关闭指定表的增量备份,该参数默认设置为 true。参见 CASSANDRA-15402
默认值: false
snapshot_before_compaction
是否在每次压缩之前进行快照。使用此选项时要小心,因为 Cassandra 不会为您清理快照。如果您在数据格式发生更改时感到担心,这将非常有用。
默认值: false
auto_snapshot
在键空间截断或删除列族之前是否对数据进行快照。强烈建议使用默认的 true 以确保数据安全。如果您将此标志设置为 false,您将在截断或删除时丢失数据。
默认值: true
auto_snapshot_ttl
此选项默认情况下已注释掉。
为由表截断或删除(启用时)生成的自动快照添加生存时间 (TTL)。TTL 过期后,快照将自动清除。默认情况下,自动快照 **没有** TTL,取消注释下面的属性以在自动快照上启用 TTL。接受的单位:d(天)、h(小时)或 m(分钟)
默认值: 30d
snapshot_links_per_second
创建或清除快照的操作涉及创建或删除可能数万个链接,这会导致显着的性能影响,尤其是在消费级 SSD 上。这里的值不为零可用于限制这些链接,以避免快照创建和清除的负面性能影响。
默认值 0
sstable
此选项默认情况下已注释掉。
sstable 格式配置。SSTable 格式实现使用服务加载器机制加载。在本节中,可以为创建的 sstable 选择格式,并为类路径上可用的格式传递其他参数。默认格式为“big”,这是自 Cassandra 3.0 以来一直使用的传统 SSTable 格式。Cassandra 5.0 及更高版本还支持使用 trie 索引的“bti”格式,该格式提供更好的性能。
column_index_size
此选项默认情况下被注释掉。 selected_format: big
分区内行排序索引的粒度。适用于 BIG 和 BTI SSTable 格式。在这两种格式中,较小的粒度会导致分区内行的更快查找,但索引文件大小更大。不建议在 BIG 格式中使用较小的粒度,因为如果排序索引变得足够大,则无法有效地缓存或根本无法缓存更大的排序索引。此外,如果存在大型行或每个分区有大量行,建议增加索引粒度或切换到 BTI SSTable 格式。
留空以使用适合所用 SSTable 格式的默认值(BIG 为 64 KiB,BTI 为 16KiB)。最小单位:KiB
默认值: 4KiB
column_index_cache_size
每个 sstable 索引键缓存条目(上面提到的内存中的排序索引)超过此大小将不会保存在堆中。这意味着只有分区信息保存在堆中,索引条目从磁盘读取。
请注意,此大小是指序列化索引信息的尺寸,而不是分区的尺寸。
这仅与使用键缓存的 SSTable 格式相关,例如 BIG。最小单位:KiB
默认值: 2KiB
default_compaction
此选项默认情况下已注释掉。
默认压缩策略,在表的参数未指定压缩时应用。所选压缩策略也将应用于系统表。
如果未指定任何值,则默认使用 SizeTieredCompactionStrategy,并使用其默认压缩参数。
concurrent_compactors
此选项默认情况下被注释掉。 class_name: SizeTieredCompactionStrategy parameters: min_threshold: 4 max_threshold: 32
允许的并发压缩次数,不包括用于反熵修复的验证“压缩”。并发压缩可以通过减轻在单个长时间运行的压缩期间小型 sstable 累积的趋势,帮助在混合读/写工作负载中保持读取性能。默认值通常就足够了,如果您遇到压缩运行速度过慢或过快的问题,您应该首先查看 compaction_throughput。
concurrent_compactors 默认设置为(磁盘数量、核心数量)中较小的值,最小值为 2,最大值为 8。
如果您的数据目录由 SSD 支持,您应该将其增加到核心数量。
默认值 1
concurrent_validations
此选项默认情况下已注释掉。
允许的并发修复验证次数。如果未设置或设置为小于 1 的值,则默认为 concurrent_compactors 的值。要在启动时设置大于 concurrent_compactors 的值,必须将系统属性 cassandra.allow_unlimited_concurrent_validations 设置为 true。要在运行节点上动态调整大小为大于 concurrent_compactors 的值,首先在 org.apache.cassandra.db:type=StorageService mbean 上调用 bypassConcurrentValidatorsLimit 方法。
默认值 0
compaction_throughput
将压缩节流到整个系统中给定的总吞吐量。您插入数据的速度越快,您需要压缩的速度就越快才能将 sstable 数量保持在较低水平,但通常,将其设置为插入数据的 16 到 32 倍就足够了。将其设置为 0 将禁用节流。请注意,这将考虑所有类型的压缩,包括验证压缩(为修复构建 Merkle 树)。
默认值: 64MiB/s
sstable_preemptive_open_interval
在压缩时,可以打开替换 sstable(s),并在它们完全写入之前使用它们,并用于任何已写入的范围,以代替先前的 sstable。这有助于在 sstable 之间平滑地传输读取,减少页面缓存 churn 并保持热行热。将 sstable_preemptive_open_interval 设置为 null 以禁用,这等效于 sstable_preemptive_open_interval_in_mb 为负。最小单位:MiB
默认值: 50MiB
uuid_sstable_identifiers_enabled
从 4.1 开始,sstables 支持基于 UUID 的生成标识符。它们默认情况下是禁用的,因为一旦启用,就没有简单的方法可以降级。当节点重新启动时,此选项设置为 true,每个新创建的 sstable 将具有基于 UUID 的生成标识符,并且此类文件无法被以前的 Cassandra 版本读取。在某个时候,此选项将默认变为 true,并最终从配置中删除。
默认值: false
stream_entire_sstables
此选项默认情况下已注释掉。
启用后,允许 Cassandra 在节点之间零拷贝流式传输所有符合条件的 SSTables,包括每个组件。这会显着加快网络传输速度,前提是受 entire_sstable_stream_throughput_outbound 和 entire_sstable_inter_dc_stream_throughput_outbound(用于跨数据中心传输)指定的节流控制。启用此功能将减少发送和接收节点上的 GC 压力。未设置时,默认情况下启用。虽然此功能试图保持磁盘平衡,但它不能保证它。如果启用节点间加密,此功能将自动禁用。
默认值: true
entire_sstable_stream_throughput_outbound
此选项默认情况下已注释掉。
将此节点上的整个 SSTable 出站流式传输文件传输节流到给定的总吞吐量(以 Mbps 为单位)。将此值设置为 0 将禁用节流。未设置时,默认值为 200 Mbps 或 24 MiB/s。
默认值: 24MiB/s
entire_sstable_inter_dc_stream_throughput_outbound
此选项默认情况下已注释掉。
节流跨数据中心的整个 SSTable 文件流式传输。将此值设置为 0 将禁用整个 SSTable 跨数据中心文件流式传输的节流。未设置时,默认值为 200 Mbps 或 24 MiB/s。
默认值: 24MiB/s
stream_throughput_outbound
此选项默认情况下已注释掉。
将此节点上的所有出站流式传输文件传输节流到给定的总吞吐量(以 Mbps 为单位)。这是必要的,因为 Cassandra 在引导或修复期间流式传输数据时主要执行顺序 IO,这会导致网络连接饱和并降低 rpc 性能。未设置时,默认值为 200 Mbps 或 24 MiB/s。
默认值: 24MiB/s
inter_dc_stream_throughput_outbound
此选项默认情况下已注释掉。
节流数据中心之间所有流式传输文件传输,此设置允许用户除了使用 stream_throughput_outbound_megabits_per_sec 配置的节流所有网络流式传输流量外,还节流跨数据中心流式传输吞吐量。未设置时,默认值为 200 Mbps 或 24 MiB/s。
默认值: 24MiB/s
read_request_timeout
请求的服务器端超时。如果服务器无法在相应的超时时间内完成操作,它将向客户端返回超时异常。这些设置是对以下方面的保护:1)让客户端等待可能永远不会因某些故障而终止的操作。2)通过限制操作执行时间,限制使用过多 CPU/读取过多数据(导致内存累积)的操作。因此,您应该避免将这些设置设置得太高。换句话说,如果您因为底层资源限制而超时请求,那么增加超时只会导致更多问题。当然,将它们设置得太低同样不可取,因为即使对于成功的操作,客户端也可能会超时,仅仅因为超时设置太严格。
协调器应等待读取操作完成的时间。最低可接受值为 10 毫秒。最小单位:毫秒
默认值: 5000ms
truncate_request_timeout
协调器应等待截断完成的时间(这可能要长得多,因为除非禁用 auto_snapshot,否则我们需要先刷新,以便在删除数据之前进行快照)。最低可接受值为 10 毫秒。最小单位:毫秒
默认值: 60000ms
internode_tcp_connect_timeout
此选项默认情况下已注释掉。
保护 Cassandra 免受真正网络分区影响的防御性设置。有关详细信息,请参阅 (CASSANDRA-14358)。
等待节点间 tcp 连接建立的时间。最小单位:毫秒
默认值: 2000ms
internode_tcp_user_timeout
此选项默认情况下已注释掉。
在我们将连接丢弃之前,允许连接上未确认数据的时间。请注意,这仅在 Linux + epoll 上受支持,并且在 Linux 4.12 之后,它在 30000 的设置以上表现奇怪(它比 30 秒长得多)。如果您想要这么高的设置,请将其设置为 0,它将选择操作系统默认值,并将 net.ipv4.tcp_retries2 sysctl 配置为 ~8。最小单位:毫秒
默认值: 30000ms
internode_streaming_tcp_user_timeout
此选项默认情况下已注释掉。
允许流式传输连接上未确认数据的时间。默认值为 5 分钟。增加它或将其设置为 0 以增加超时。最小单位:毫秒
默认值: 300000ms
internode_application_send_queue_capacity
此选项默认情况下已注释掉。
对排队以传递到其他节点的消息以及等待从集群中的其他节点到达时进行处理的消息施加的全局、每个端点和每个连接限制。这些限制适用于正在发送或接收的消息的网络大小。
基本每个链接限制在任何端点或全局限制施加之前单独使用。每个节点对都有三个链接:紧急、小和大型。因此,任何给定节点最多可能具有 N*3*(internode_application_send_queue_capacity+internode_application_receive_queue_capacity) 个消息排队,而它们之间没有任何协调,尽管在实践中,使用令牌感知路由,只有 RF*tokens 个节点需要与重要的带宽进行通信。
每个端点限制对所有超过每个链接限制的消息施加,同时与全局限制一起,对集群中单个节点的所有链接施加。全局限制对所有超过每个链接限制的消息施加,同时与每个端点限制一起,对集群中任何节点的所有链接施加。
最小单位:B
默认值: 4MiB
slow_query_log_timeout
节点记录慢查询之前的时间。执行时间超过此超时的选择查询将生成一个聚合日志消息,以便可以识别慢查询。将此值设置为零以禁用慢查询日志记录。最小单位:毫秒
默认值: 500ms
internode_timeout
此选项默认情况下已注释掉。
启用节点之间操作超时信息交换,以准确测量请求超时。如果禁用,副本将假设请求立即由协调器转发给它们,这意味着在过载条件下,我们将浪费更多时间处理已经超时的请求。
警告:通常假设用户已在其集群上设置了 NTP,并且时钟同步得很好,因为这是最后写入获胜的一般正确性的要求。
默认值: true
streaming_keep_alive_period
此选项默认情况下已注释掉。
设置空闲状态控制消息的周期,以便更早地检测到失败的流。此节点将定期在流的控制通道上发送一个保持活动消息。这确保了任何最终的 SocketTimeoutException 都会在 2 个保持活动周期内发生。如果节点无法发送或超时发送保持活动消息,则流会话将关闭。默认值为 300 秒(5 分钟),这意味着停滞的流将在 10 分钟内检测到。指定 0 以禁用。最小单位:秒
默认值: 300s
streaming_connections_per_host
此选项默认情况下已注释掉。
限制每个主机用于流式传输的连接数量。当您注意到连接是 CPU 绑定的而不是网络绑定的(例如,几个具有大型文件的节点)时,请增加此值。
默认值 1
streaming_state_expires
此选项默认情况下已注释掉。
用于流统计信息跟踪的设置;由 system_views.streaming 表使用。流从跟踪中清除之前的时间;这会影响历史流和当前运行的流。
默认值: 3d
partition_denylist_enabled
此选项默认情况下已注释掉。
允许拒绝对配置的 ks、表和分区进行操作的可配置访问权限(rw/rr),旨在供操作员管理集群运行状况与应用程序访问权限。有关详细信息,请参阅 CASSANDRA-12106 和 CEP-13。
默认值: false
denylist_refresh
此选项默认情况下已注释掉。
拒绝列表缓存中密钥“过期”并从后端数据库异步刷新的间隔。注意:这仅用作故障安全机制,因为预期使用模式是在对基础拒绝列表条目进行任何更改时“修改状态,刷新缓存”。有关详细信息,请参阅文档。最小单位:s
默认值: 600s
denylist_max_keys_per_table
此选项默认情况下已注释掉。
我们限制每个表允许的拒绝列表密钥数量,以防止其无限制增长。节点将在超过此限制时发出警告,同时允许插入新的拒绝列表密钥。拒绝的密钥在溢出时按分区键以自然查询/聚类顺序加载。
默认值 1000
denylist_max_keys_total
此选项默认情况下已注释掉。
我们限制集群中允许的拒绝列表密钥总数,以防止其无限制增长。节点将在初始缓存加载时发出警告,表明密钥过多,并指导操作员将多余的条目修剪到配置的限制范围内。
默认值 10000
denylist_consistency_level
此选项默认情况下已注释掉。
由于拒绝列表在许多方面都用于保护集群的运行状况,使其免受操作员已识别为处于不良状态的分区的影响,因此我们通常希望对这些表的操作具有比 CL.ONE 更强的鲁棒性,以确保这些安全措施到位。也就是说,如果用户愿意,我们允许他们配置此选项。
默认值: QUORUM
endpoint_snitch
endpoint_snitch — 将其设置为实现 IEndpointSnitch 的类。snitch 有两个功能
-
它向 Cassandra 传授有关您的网络拓扑的足够信息,以便有效地路由请求
-
它允许 Cassandra 将副本分散到您的集群中,以避免相关故障。它通过将机器分组到“数据中心”和“机架”中来实现这一点。Cassandra 会尽力避免在同一个“机架”上拥有多个副本(这可能不是实际的物理位置)
一旦数据插入集群,CASSANDRA 就不允许您切换到不兼容的 snitch。这会导致数据丢失。这意味着,如果您从默认的 SimpleSnitch 开始,它将每个节点定位在“数据中心 1”的“机架 1”上,那么如果您需要添加另一个数据中心,您唯一的选择是 GossipingPropertyFileSnitch(以及旧的 PFS)。从那里,如果您想迁移到不兼容的 snitch,例如 Ec2Snitch,您可以通过在 Ec2Snitch 下添加新节点(这将把它们定位到新的“数据中心”)并停用旧节点来实现。
开箱即用,Cassandra 提供
SimpleSnitch:将策略顺序视为邻近性。这可以在禁用读取修复时提高缓存局部性。仅适用于单数据中心部署。
GossipingPropertyFileSnitch 这是生产环境中首选的 snitch。本地节点的机架和数据中心在 cassandra-rackdc.properties 中定义,并通过 gossip 传播到其他节点。如果存在 cassandra-topology.properties,则将其用作后备,允许从 PropertyFileSnitch 迁移。
PropertyFileSnitch:邻近性由机架和数据中心确定,这些机架和数据中心在 cassandra-topology.properties 中明确配置。
AlibabaCloudSnitch:从阿里云元数据服务获取节点的 dc 和机架的 snitch。此 snitch 假设 ECS 区域是 DC,ECS 可用区是机架。
AzureSnitch:从实例元数据服务的“compute”对象的“location”字段获取数据中心,从“zone”字段获取机架。如果可用区未启用,它将使用故障域并获取其相应的值。
CloudstackSnitch:一个 snitch,它假设 Cloudstack 区域遵循典型的约定 country-location-az,并使用国家/地区/位置元组作为数据中心,并将可用区用作机架。警告:此 snitch 已弃用,计划在 Cassandra 的下一个主要版本中删除。
Ec2Snitch:适用于单个区域中的 EC2 部署。从 EC2 API 加载区域和可用区信息。区域被视为数据中心,可用区被视为机架。仅使用私有 IP,因此这将无法跨多个区域工作。
Ec2MultiRegionSnitch:使用公共 IP 作为 broadcast_address 以允许跨区域连接。(因此,您也应该将种子地址设置为公共 IP。)您需要在公共 IP 防火墙上打开 storage_port 或 ssl_storage_port。(对于区域内流量,Cassandra 将在建立连接后切换到私有 IP。)
GoogleCloudSnitch:从 Google 云元数据服务获取节点的 dc 和机架的 snitch。此 snitch 假设 GCE 区域是 DC,GCE 可用区是机架。
RackInferringSnitch:邻近性由机架和数据中心确定,这些机架和数据中心被假定分别对应于每个节点 IP 地址的第 3 个和第 2 个八位字节。除非这恰好与您的部署约定相匹配,否则最好将其用作编写自定义 Snitch 类的示例,并以此精神提供。
您可以通过将此设置为 snitch 的完整类名来使用自定义 Snitch,该类名将被假定在您的类路径上。
默认值: SimpleSnitch
dynamic_snitch_badness_threshold
如果设置为大于零,这将允许将副本“固定”到主机以增加缓存容量。不良阈值将控制固定主机必须比最快的副本差多少,才能使动态 snitch 更喜欢其他副本。这表示为一个双精度数,它表示一个百分比。因此,值为 0.2 表示 Cassandra 将继续优先考虑静态 snitch 值,直到固定主机比最快的副本差 20% 为止。
默认值 1.0
crypto_provider
配置 Java 加密提供程序。默认情况下,它将使用 DefaultCryptoProvider,它将安装 Amazon Correto Crypto Provider。
Amazon Correto Crypto Provider 目前适用于 x86_64 和 aarch_64 平台。如果此提供程序失败,它将回退到 JRE 中的默认加密提供程序。
要强制在提供程序未正确安装时失败,请将属性“fail_on_missing_provider”设置为“true”。
要绕过加密提供程序的安装,请使用类“org.apache.cassandra.security.JREProvider”。
server_encryption_options
配置服务器到服务器节点间加密
可以使用自定义加密选项替换支持的 SSL 套接字协议和密码套件的 JVM 和 netty 默认值。除非您有规定特定设置的策略,或者需要禁用易受攻击的密码或协议(以防无法更新 JVM),否则不建议这样做。
可以在 JVM 级别配置符合 FIPS 的设置,并且不应涉及更改此处的加密设置:docs.oracle.com/javase/8/docs/technotes/guides/security/jsse/FIPS.html
注意 此默认配置是不安全的配置。如果您需要启用服务器到服务器加密,请按照以下步骤生成服务器密钥库(以及用于双向身份验证的信任库):download.oracle.com/javase/8/docs/technotes/guides/security/jsse/JSSERefGuide.html#CreateKeystore 然后执行以下配置更改
步骤 1:设置 internode_encryption=<dc|rack|all> 并明确设置 optional=true。重新启动所有节点
步骤 2:设置 optional=false(或将其删除),如果您生成了信任库并希望使用双向身份验证,请设置 require_client_auth=true。重新启动所有节点
默认值(复杂选项):
# On outbound connections, determine which type of peers to securely connect to. # The available options are : # none : Do not encrypt outgoing connections # dc : Encrypt connections to peers in other datacenters but not within datacenters # rack : Encrypt connections to peers in other racks but not within racks # all : Always use encrypted connections internode_encryption: none # When set to true, encrypted and unencrypted connections are allowed on the storage_port # This should _only be true_ while in unencrypted or transitional operation # optional defaults to true if internode_encryption is none # optional: true # If enabled, will open up an encrypted listening socket on ssl_storage_port. Should only be used # during upgrade to 4.0; otherwise, set to false. legacy_ssl_storage_port_enabled: false # Set to a valid keystore if internode_encryption is dc, rack or all keystore: conf/.keystore #keystore_password: cassandra # Configure the way Cassandra creates SSL contexts. # To use PEM-based key material, see org.apache.cassandra.security.PEMBasedSslContextFactory # ssl_context_factory: # # Must be an instance of org.apache.cassandra.security.ISslContextFactory # class_name: org.apache.cassandra.security.DefaultSslContextFactory # During internode mTLS authentication, inbound connections (acting as servers) use keystore, keystore_password # containing server certificate to create SSLContext and # outbound connections (acting as clients) use outbound_keystore & outbound_keystore_password with client certificates # to create SSLContext. By default, outbound_keystore is the same as keystore indicating mTLS is not enabled. # outbound_keystore: conf/.keystore # outbound_keystore_password: cassandra # Verify peer server certificates require_client_auth: false # Set to a valid trustore if require_client_auth is true truststore: conf/.truststore #truststore_password: cassandra # Verify that the host name in the certificate matches the connected host require_endpoint_verification: false # More advanced defaults: # protocol: TLS # store_type: JKS # cipher_suites: [ # TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384, TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256, # TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256, TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA, # TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA, TLS_RSA_WITH_AES_128_GCM_SHA256, TLS_RSA_WITH_AES_128_CBC_SHA, # TLS_RSA_WITH_AES_256_CBC_SHA # ]
client_encryption_options
配置客户端到服务器加密。
注意 此默认配置是不安全的配置。如果您需要启用客户端到服务器加密,请按照以下步骤生成服务器密钥库(以及用于双向身份验证的信任库):download.oracle.com/javase/8/docs/technotes/guides/security/jsse/JSSERefGuide.html#CreateKeystore 然后执行以下配置更改
步骤 1:设置 enabled=true 并明确设置 optional=true。重新启动所有节点
步骤 2:设置 optional=false(或将其删除),如果您生成了信任库并希望使用双向身份验证,请设置 require_client_auth=true。重新启动所有节点
默认值(复杂选项):
# Enable client-to-server encryption enabled: false # When set to true, encrypted and unencrypted connections are allowed on the native_transport_port # This should _only be true_ while in unencrypted or transitional operation # optional defaults to true when enabled is false, and false when enabled is true. # optional: true # Set keystore and keystore_password to valid keystores if enabled is true keystore: conf/.keystore #keystore_password: cassandra # Configure the way Cassandra creates SSL contexts. # To use PEM-based key material, see org.apache.cassandra.security.PEMBasedSslContextFactory # ssl_context_factory: # # Must be an instance of org.apache.cassandra.security.ISslContextFactory # class_name: org.apache.cassandra.security.DefaultSslContextFactory # Verify client certificates require_client_auth: false # require_endpoint_verification: false # Set trustore and truststore_password if require_client_auth is true # truststore: conf/.truststore # truststore_password: cassandra # More advanced defaults: # protocol: TLS # store_type: JKS # cipher_suites: [ # TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384, TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256, # TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256, TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA, # TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA, TLS_RSA_WITH_AES_128_GCM_SHA256, TLS_RSA_WITH_AES_128_CBC_SHA, # TLS_RSA_WITH_AES_256_CBC_SHA # ]
internode_compression
internode_compression 控制节点之间流量是否压缩。可以是
all 所有流量都压缩
dc 不同数据中心之间的流量压缩
none 没有任何压缩。
默认值: dc
inter_dc_tcp_nodelay
启用或禁用跨数据中心通信的 tcp_nodelay。禁用它会导致发送更大(但更少)的网络数据包,减少 TCP 协议本身的开销,但如果阻塞跨数据中心响应,则会增加延迟。
默认值: false
user_defined_functions_enabled
如果未设置,所有大于 gc_log_threshold 的 GC 暂停将在 INFO 级别记录 UDF(用户定义函数)默认情况下被禁用。从 Cassandra 3.0 开始,有一个沙箱到位,应该可以防止执行恶意代码。
默认值: false
transparent_data_encryption_options
启用对静止数据(磁盘上)进行加密。可以插入不同的密钥提供程序,但默认情况下会从 JCE 样式的密钥库中读取。单个密钥库可以保存多个密钥,但“key_alias”引用的密钥是唯一用于加密操作的密钥;以前使用的密钥仍然(并且应该!)在密钥库中,并且将在解密操作中使用(以处理密钥轮换的情况)。
强烈建议您为您的 JDK 版本下载并安装 Java 加密扩展 (JCE) 无限制强度管辖策略文件。(当前链接:www.oracle.com/technetwork/java/javase/downloads/jce8-download-2133166.html)
目前,只有以下文件类型支持透明数据加密,尽管在未来的 Cassandra 版本中将添加更多类型:commitlog、hints
默认值(复杂选项):
enabled: false chunk_length_kb: 64 cipher: AES/CBC/PKCS5Padding key_alias: testing:1 # CBC IV length for AES needs to be 16 bytes (which is also the default size) # iv_length: 16 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
安全阈值 #
在执行扫描时,无论是在分区内还是跨分区,我们都需要将内存中看到的墓碑保留下来,以便将其返回给协调器,协调器将使用它们来确保其他副本也知道已删除的行。对于生成大量墓碑的工作负载,这会导致性能问题,甚至耗尽服务器堆。 (www.datastax.com/dev/blog/cassandra-anti-patterns-queues-and-queue-like-datasets) 如果你了解其中的风险,并且仍然希望扫描更多墓碑,可以调整这里的阈值。这些阈值也可以使用 StorageService mbean 在运行时进行调整。
默认值 1000
replica_filtering_protection
在高于 ONE/LOCAL_ONE 的读取一致性级别下,过滤和二级索引查询使用一种称为副本过滤保护的机制来确保来自陈旧副本的结果不会违反一致性。(有关更多详细信息,请参阅 CASSANDRA-8272 和 CASSANDRA-15907。)该机制在协调器上按分区在堆上具体化副本结果。副本返回的可能陈旧结果越多,查询期间具体化的行就越多。
batch_size_warn_threshold
对超过此值的任何多分区批次大小记录警告。默认情况下,每个批次 5KiB。在增加此阈值大小时应谨慎,因为它会导致节点不稳定。最小单位:KiB
默认值: 5KiB
gc_log_threshold
此选项默认情况下已注释掉。
大于 200 毫秒的 GC 暂停将在 INFO 级别记录。如果需要,可以调整此阈值以最小化日志记录。最小单位:毫秒
默认值: 200 毫秒
gc_warn_threshold
此选项默认情况下已注释掉。
大于 gc_warn_threshold 的 GC 暂停将在 WARN 级别记录。根据你的应用程序吞吐量要求调整阈值。设置为 0 将停用此功能。最小单位:毫秒
默认值: 1000ms
max_value_size
此选项默认情况下已注释掉。
SSTable 中任何值的最大大小。安全措施,以便尽早检测 SSTable 损坏。任何大于此阈值的价值大小将导致将 SSTable 标记为已损坏。这应该是正数且小于 2GiB。最小单位:MiB
默认值: 256MiB
default_keyspace_rf
此选项默认情况下已注释掉。
-
对键空间创建的影响 ** 如果在键空间创建时没有提到复制因子,则会应用 default_keyspace_rf。更改此配置只会对更改后创建的键空间生效,但不会影响之前创建的现有键空间。
-
对键空间更改的影响 ** 当将键空间从 NetworkTopologyStrategy 更改为 SimpleStrategy 时,如果 rf 没有明确提到,则会应用 default_keyspace_rf。
-
对系统键空间的影响 ** 这也适用于需要复制因子的任何系统键空间。关于系统键空间的进一步说明 - system_traces 和 system_distributed 键空间采用 2 或默认值(以较高者为准)的 RF,system_auth 键空间采用 1 或默认值(以较高者为准)的 RF。建议在生产环境中使用的值:3
默认值 1
ideal_consistency_level
此选项默认情况下已注释掉。
跟踪每个键空间的指标,指示复制是否在不超时的情况下实现了写入的理想一致性级别。这与每次写入请求的一致性级别不同,每次写入请求的一致性级别可能较低,以促进可用性。
默认值: EACH_QUORUM
automatic_sstable_upgrade
此选项默认情况下已注释掉。
升级后自动升级 sstable - 如果没有普通压缩要做,最旧的未升级 sstable 将升级到最新版本
默认值: false
full_query_logging_options
此选项默认情况下已注释掉。
完整查询日志记录的默认选项 - 这些选项可以在执行 nodetool enablefullquerylog 时从命令行覆盖
corrupted_tombstone_strategy
此选项默认情况下已注释掉。
在读取和压缩时验证墓碑可以是“disabled”、“warn”或“exception”
默认值: disabled
diagnostic_events_enabled
诊断事件 # 如果启用,诊断事件有助于解决操作问题。发出的事件包含有关内部状态和事件之间时间关系的详细信息,客户端可以通过 JMX 访问这些信息。
默认值: false
native_transport_flush_in_batches_legacy
此选项默认情况下已注释掉。
使用本机传输 TCP 消息合并。如果你在升级到 4.0 后发现你的吞吐量下降,特别是如果你运行的是旧内核或客户端连接很少,那么这个选项可能值得评估。
默认值: false
repaired_data_tracking_for_range_reads_enabled
启用在读取期间跟踪数据的修复状态,以及副本之间的比较。副本的修复集之间的不匹配可以归类为已确认或未确认。在这种情况下,未确认表示存在挂起的修复会话、未修复的分区墓碑或其他一些条件,这意味着差异不能被认为是结论性的。已确认的不匹配应该是调查的触发因素,因为它们可能表明存在损坏或数据丢失。对于范围读取和分区读取,存在单独的标志,因为只有在 CL > 1 且出现摘要不匹配时才会跟踪单个分区读取。目前,范围查询不使用摘要,因此如果为范围读取启用,所有范围读取都将包含修复数据跟踪。由于这会增加一些开销,因此操作员可能希望在为分区读取启用它的同时禁用它
默认值: false
report_unconfirmed_repaired_data_mismatches
如果为 false,则只报告已确认的不匹配。如果为 true,则还会记录未确认的不匹配的单独指标。这样做是为了避免潜在的信号:噪声问题,因为未确认的不匹配不如已确认的不匹配那么可操作。
默认值: false
auth_cache_warming_enabled
此选项默认情况下已注释掉。
身份验证解析上的延迟会导致重新连接时出现雷鸣般的羊群问题;此选项将在节点完成启动之前启用身份验证缓存的预热。请参阅 CASSANDRA-16958
默认值: false
dynamic_data_masking_enabled
此选项默认情况下已注释掉。
如果启用,动态数据屏蔽允许将 CQL 屏蔽函数附加到表的列。没有 UNMASK 权限的用户将看到带有附加屏蔽的列值的模糊版本。如果禁用动态数据屏蔽,则不允许创建新的列屏蔽,但仍然可以删除任何先前存在的屏蔽。此外,任何现有的屏蔽将在查询时被忽略,因此所有用户都将看到屏蔽列的清晰值。默认为 false 以禁用动态数据屏蔽。
默认值: false
drop_compact_storage_enabled
在该节点上启用使用“ALTER … DROP COMPACT STORAGE”语句。“ALTER … DROP COMPACT STORAGE”被认为是实验性的,不建议在生产环境中使用。
默认值: false
client_error_reporting_exclusions
此选项默认情况下已注释掉。
当客户端触发协议异常或未知问题(Cassandra 错误)时,我们会增加一个显示此问题的客户端指标;此逻辑将排除特定子网以更新这些指标
read_thresholds_enabled
此选项默认情况下被注释掉了。 子网: - 127.0.0.1 - 127.0.0.0/31
启用所有副本的读取阈值(警告/失败),以便向客户端报告。请参阅:CASSANDRA-16850
默认值: false # 计划在 4.2 中设置为 true
coordinator_read_size_warn_threshold
此选项默认情况下被注释掉了。 当 read_thresholds_enabled: true 时,这会跟踪协调器上查询的具体化大小。如果定义了 coordinator_read_size_warn_threshold,这将向客户端发出警告,其中包含有关触发此警告的查询以及结果集大小的详细信息;如果定义了 coordinator_read_size_fail_threshold,这将在查询超过此阈值后使查询失败,并向用户返回读取错误。
local_read_size_warn_threshold
此选项默认被注释掉。 当 read_thresholds_enabled: true 时,它会跟踪本地读取的大小(由堆大小定义),并根据这些阈值发出警告/失败;未定义将禁用这些检查。
row_index_read_size_warn_threshold
此选项默认被注释掉。 当 read_thresholds_enabled: true 时,它会跟踪 RowIndexEntry 的预期内存大小,并根据这些阈值发出警告/失败;未定义将禁用这些检查。
columns_per_table_warn_threshold
此选项默认情况下已注释掉。
当创建/更改表时,每个表中的列数超过阈值时,发出警告或失败的护栏。这两个阈值默认设置为 -1 以禁用。
默认值 -1
secondary_indexes_per_table_warn_threshold
此选项默认情况下已注释掉。
当创建的每个表的辅助索引超过阈值时,发出警告或失败的护栏。这两个阈值默认设置为 -1 以禁用。
默认值 -1
materialized_views_per_table_warn_threshold
此选项默认情况下已注释掉。
当创建的每个表的物化视图超过阈值时,发出警告或失败的护栏。这两个阈值默认设置为 -1 以禁用。
默认值 -1
maximum_timestamp_warn_threshold
此选项默认情况下已注释掉。
护栏以将用户提供的 timestamps 限制在给定范围内。默认值为无限(用 null 表示)。接受的值是 12h、24h 等形式的持续时间。
read_before_write_list_operations_enabled
此选项默认情况下已注释掉。
护栏以允许/不允许需要读前写的列表操作,即按索引设置列表元素和按索引或值删除列表元素。默认值为 true。
默认值: true
partition_keys_in_select_warn_threshold
此选项默认情况下已注释掉。
当使用 IN 限制查询时,选择的分区键数量超过阈值时,发出警告或失败的护栏。这两个阈值默认设置为 -1 以禁用。
默认值 -1
in_select_cartesian_product_warn_threshold
此选项默认情况下已注释掉。
当 IN 查询创建的大小超过阈值的笛卡尔积时,发出警告或失败的护栏,例如 "a in (1,2,…10) and b in (1,2…10)" 会导致 100 的笛卡尔积。这两个阈值默认设置为 -1 以禁用。
默认值 -1
partition_size_warn_threshold
此选项默认情况下已注释掉。
当写入的分区大小大于阈值时,发出警告或失败的护栏,以 100MiB、1GiB 等表示。护栏仅在写入 sstable(刷新和压缩)时检查,并且在该时刻超过失败阈值只会记录错误消息,而不会中断操作。这在每个 sstable 的基础上进行操作,因此如果一个大型分区分布在多个 sstable 中,它将不会检测到。警告阈值替换了已弃用的配置属性 compaction_large_partition_warning_threshold。这两个阈值默认设置为 null 以禁用。
partition_tombstones_warn_threshold
此选项默认情况下已注释掉。
当写入的分区中的墓碑数量超过阈值时,发出警告或失败的护栏。护栏仅在写入 sstable(刷新和压缩)时检查,并且在该时刻超过失败阈值只会记录错误消息,而不会中断操作。这在每个 sstable 的基础上进行操作,因此如果一个大型分区分布在多个 sstable 中,它将不会检测到。警告阈值替换了已弃用的配置属性 compaction_tombstone_warning_threshold。这两个阈值默认设置为 -1 以禁用。
默认值 -1
column_value_size_warn_threshold
此选项默认情况下已注释掉。
当写入的列值大小大于阈值时,发出警告或失败的护栏。此护栏仅应用于常规列的值,因为序列化分区键和聚类键组件的值已经具有 65535 字节的固定、相对较小的尺寸限制,这可能小于此处定义的阈值。删除非冻结集合和映射的单个元素涉及创建包含已删除元素值的墓碑,无论该元素是否存在。该墓碑值也受此护栏保护,以防止插入超过阈值的墓碑。缺点是启用或提高此阈值可能会阻止用户删除在禁用护栏或使用较低值时写入的集合/映射元素。始终允许删除整个列、行或分区,因为为这些操作创建的墓碑不包含 CQL 列值。此护栏与 max_value_size 不同。max_value_size 在反序列化任何值时检查以检测 sstable 损坏,而此护栏在写入时在 CQL 层检查以拒绝插入过大列的常规用户查询。这两个阈值默认设置为 null 以禁用。最小单位:B
collection_size_warn_threshold
此选项默认情况下已注释掉。
当遇到大于阈值的集合数据大小时,发出警告或失败的护栏。在查询时,此护栏仅应用于正在写入的集合片段,即使在非冻结集合的情况下,sstable 上可能存在未计入的集合部分。这样做是为了防止读前写。护栏也在 sstable 写入时检查以检测大型非冻结集合,尽管在这种情况下,超过失败阈值只会记录错误消息,而不会中断操作。这两个阈值默认设置为 null 以禁用。最小单位:B
items_per_collection_warn_threshold
此选项默认情况下已注释掉。
当遇到集合中元素数量超过阈值时,发出警告或失败的护栏。在查询时,此护栏仅应用于正在写入的集合片段,即使在非冻结集合的情况下,sstable 上可能存在未计入的集合部分。这样做是为了防止读前写。护栏也在 sstable 写入时检查以检测大型非冻结集合,尽管在这种情况下,超过失败阈值只会记录错误消息,而不会中断操作。这两个阈值默认设置为 -1 以禁用。
默认值 -1
allow_filtering_enabled
此选项默认情况下已注释掉。
护栏以允许/不允许使用 ALLOW FILTERING 进行查询。默认值为 true。ALLOW FILTERING 可能会访问表中的所有数据,并具有不可预测的性能。
默认值: true
simplestrategy_enabled
此选项默认情况下已注释掉。
护栏以允许/不允许通过 keyspace 创建或更改设置 SimpleStrategy。默认值为 true。
默认值: true
data_disk_usage_percentage_warn_threshold
此选项默认情况下已注释掉。
当本地数据磁盘使用率百分比超过阈值时,发出警告或失败的护栏。有效值在 [1, 100] 之间。这仅用于存储数据目录的磁盘,因此它不会计算用于存储 commitlog、提示或保存的缓存的任何单独磁盘。磁盘使用率是数据目录使用的空间量与该相同空间和磁盘上剩余的可用空间之和的比率。此护栏的主要目的是在磁盘超过定义的使用率百分比时拒绝用户写入,因此由压缩和流式传输等后台进程完成的写入不会因磁盘已满而失败。应根据这些后台进程预期的数据增长来定义限制,例如,如果压缩策略将数据大小增加一倍,则需要将磁盘使用率保持在 50% 以下。这两个阈值默认设置为 -1 以禁用。
默认值 -1
data_disk_usage_max_disk_size
此选项默认情况下已注释掉。
护栏允许用户在计算磁盘使用率百分比警告阈值和磁盘使用率百分比失败阈值时定义数据目录的最大磁盘大小,因此如果它大于零,它们将成为磁盘上固定大小的百分比,而不是物理可用磁盘大小的百分比。当我们有一个大磁盘并且我们只想使用它的一部分用于 Cassandra 的数据目录时,这将很有用。有效值在 [1, 所有数据目录的最大可用磁盘大小] 之间。默认为 null 以禁用并在计算期间使用数据目录的物理可用磁盘大小。最小单位:B
minimum_replication_factor_warn_threshold
此选项默认情况下已注释掉。
当最小副本因子小于阈值时发出警告或失败的护栏。这也适用于系统键空间。建议在生产中使用的值:2 或更高
默认值 -1
zero_ttl_on_twcs_enabled
此选项默认情况下已注释掉。
护栏在使用 TimeWindowCompactionStrategy 压缩或其子类时,在 default_time_to_live 设置为 0 且表使用 TimeWindowCompactionStrategy 压缩或其子类时启用 CREATE 或 ALTER TABLE 语句。使用 default_time_to_live 设置为 0 与这种压缩策略一起使用是可疑的。请记住,数据不会在它们比某个大小的相应压缩窗口单元更旧后自动开始过期。如果您希望数据过期,请为您的 INSERT 或 UPDATE 语句设置 TTL,因为表设置不会这样做。默认为 true。如果设置为 false,此类语句将失败,并且 zero_ttl_on_twcs_warned 标志无关紧要。
默认值: true
zero_ttl_on_twcs_warned
此选项默认情况下被注释掉。护栏在执行 CREATE 或 ALTER TABLE 语句时向用户发出警告,当 default_time_to_live 设置为 0 且表使用 TimeWindowCompactionStrategy 压缩或其子类时。默认为 true。如果 zero_ttl_on_twcs_enabled 设置为 false,此属性无关紧要,因为此类语句将失败。
默认值: true
sai_sstable_indexes_per_query_warn_threshold
此选项默认情况下被注释掉。在执行 SELECT 查询之前发出警告时,副本上引用的 SAI 索引的最大数量(默认为 32)
默认值 32
sai_sstable_indexes_per_query_fail_threshold
此选项默认情况下被注释掉。在执行 SELECT 查询之前发出失败时,副本上引用的 SAI 索引的最大数量(默认为 -1 以禁用)
默认值 -1
default_secondary_index
此选项默认情况下已注释掉。
当 CREATE INDEX 未通过 USING 指定一个时,默认的二级索引实现。例如“legacy_local_table” - (默认)传统二级索引,实现为隐藏表例如“sai” - “存储附加”索引,通过优化的 SSTable/Memtable 附加索引实现
默认值: legacy_local_table
default_secondary_index_enabled
此选项默认情况下已注释掉。
是否允许默认的二级索引实现。如果这是“false”,CREATE INDEX 必须通过 USING 指定索引实现。
默认值: true
startup_checks
此选项默认情况下已注释掉。
启动检查在 Cassandra 启动过程的一部分中执行,并非所有检查都是可配置的(因此您可以禁用它们),但这些列出的检查除外。取消注释启动检查并适当地配置它们以满足您的需求。
storage_compatibility_mode
在启动时验证磁盘上附加位置的正确所有权。有关更多详细信息,请参见 CASSANDRA-16879。check_filesystem_ownership: enabled: false ownership_token: "sometoken" # (由“CassandraOwnershipToken”系统属性覆盖)ownership_filename: ".cassandra_fs_ownership" # (由“cassandra.fs_ownership_filename”覆盖)如果 snitch 的数据中心与先前的数据中心不同,则阻止节点启动。check_dc: enabled: true # (由 cassandra.ignore_dc 系统属性覆盖)如果 snitch 的机架与先前机架不同,则阻止节点启动。check_rack: enabled: true # (由 cassandra.ignore_rack 系统属性覆盖)如果节点停机时间超过 gc_grace_seconds,则启用此属性以使启动失败,以潜在地防止在具有删除操作的表上进行数据复活。默认情况下,这将针对所有键空间和表运行,除了在 excluded_keyspaces 和 excluded_tables 上指定的键空间和表。check_data_resurrection: enabled: false Cassandra 定期写入上次已知运行时间的文件 heartbeat_file: /var/lib/cassandra/data/cassandra-heartbeat excluded_keyspaces: # 要从检查中排除的键空间的逗号分隔列表 excluded_tables: # 要从检查中排除的键空间.表对的逗号分隔列表
此属性指示存储格式将与哪个 Cassandra 主版本兼容。
所选的存储兼容模式将决定写入的 sstable、commitlog、提示等的版本。例如,如果我们要保持与 Cassandra 4.x 的兼容性,此属性的值应为 4,这将使我们使用 BIG 格式的最新 N 版本中的 sstable。
这也将决定是否可以使用依赖于较新格式的某些功能。例如,扩展 TTL(最多 2106)取决于 Cassandra 5.0 引入的 sstable、commit-log、提示和消息传递版本,因此如果此属性设置为 CASSANDRA_4,则该功能将不可用。有关更多详细信息,请参见升级指南。
可能的值是:- CASSANDRA_4:在功能、格式和组件版本方面保持与 4.x 行的兼容性。- UPGRADING:集群在此过渡阶段监控每个节点的版本。这有成本,但确保安全地启用所有新功能、格式、版本等。- NONE:启用所有新功能和格式。
典型的升级将是:- 进行滚动升级,在 CASSANDRA_X 兼容模式下启动所有节点。- 一旦新的二进制文件变得稳定,就以 UPGRADING 模式进行滚动重启。集群将继续禁用新功能,直到所有节点都以 UPGRADING 模式启动;当这种情况发生时,由存储兼容模式控制的新功能将被启用。- 以所有节点以 NONE 模式启动的方式进行滚动重启。这消除了检查节点版本的成本,并确保稳定性。如果 Cassandra 意外地在先前版本中启动,则具有禁用兼容模式的节点将不再像在 UPGRADING 模式下运行时那样切换行为。
默认值: CASSANDRA_4