【问题标题】:cassandra 3.11.9 system_auth need to be SimpleStrategy or NetworkTopologyStrategy on production env?cassandra 3.11.9 system_auth 需要在生产环境中使用 SimpleStrategy 或 NetworkTopologyStrategy?
【发布时间】:2025-12-03 12:00:01
【问题描述】:

cassandra (apache) 3.11.9 system_auth 推荐什么?需要SimpleStrategyNetworkTopologyStrategy?用多少射频?

我们有 1 个 dc 的 cassandra(2-3 个 AWS 机架,禁用了 EC2_snitch + dynamic_snitch)。大多数查询在一致性级别 local_one 上运行)。今天我们的system_auth 键空间配置了SimpleStrategy 与RF 3。在很多查询中,我们在(跟踪)上浪费时间:

Executing single-partition query on roles [ReadStage-X]

为了解决我们的问题,我们还增加了参数:

roles_validity_in_ms、permissions_validity_in_ms、credentials_validity_in_ms、permissions_cache_max_entries。

查询延迟问题能否与 system_auth 键空间配置相关联?

【问题讨论】:

    标签: cassandra cassandra-3.0


    【解决方案1】:

    我刚才回答了这个问题,类似: Replication Factor to use for system_auth

    由于较大的集群可能会出现大小波动的问题,我们现在像对待任何其他密钥空间一样对待 system_auth。也就是我们在每个 DC 中将 system_auth 的 RF 设置为 3。

    tl;dr;,如果您在非系统键空间上使用NetworkTopologyStrategy,那么您也应该将它用于system_auth。与您的射频相同;我总是将system_auth 的 RF 与我的“正常”键空间的 RF 匹配。

    不,system_auth 上使用的复制策略和 RF 通常不会导致查询延迟。当然,除非已更改任何安全缓存设置。与 Cassandra 合作 10 年,我从未改变过这些:https://docs.datastax.com/en/security/5.1/security/secAuthCacheSettings.html

    在(跟踪)上浪费时间的查询:“对角色执行单分区查询 [ReadStage-X]”

    这句话让我想到:您是否在以默认cassandra 用户身份登录时在 cqlsh 中跟踪查询?该用户确实触发了一些 cqlsh 操作以在 QUORUM 处执行。也可能是查询一致性和连接一致性设置不同。只是一个想法。

    【讨论】:

    • 感谢 Aaron 的回答,我们在 RF 3 的非系统键空间上使用 NetworkTopologyStrategy。关于安全缓存的更改,我们在节点上的角色权限和角色表的读取率非常高之后完成了这项工作。这一变化显着降低了读数。我们的应用程序与现场实例一起工作,这些实例全天以相当活跃的方式打开和关闭连接(我们知道否则会更好,但目前无法更改)。在高峰时间,我们每个节点大约有 350 个连接。但是总是有新的连接和旧连接的断开。谢谢!
    • 关于跟踪,我从 debug.log 中获取了一些慢查询,并尝试使用 cassandra\root 用户(不是应用程序用户)进行跟踪,会不会与角色 ReadStage 相关?
    • 默认cassandra用户在创建集群时应该修改密码,并且永远不要再次使用。为将来的任何管理任务创建一个新的超级用户帐户。此外,使用运行查询的同一用户运行跟踪是有意义的,只是为了消除任何差异。
    • 我可能不太清楚,我使用的用户是 root (一个新的超级用户帐户,用于任何未来的管理任务),我将尝试使用与运行应用程序相同的用户进行跟踪。谢谢!