cassandra - 对于 system_auth 默认类应该是 SimpleStrategy 或 NetworkTopologyStrategy
问题描述
在我们的 Prod 集群中,我看到了一些带有 SimpleStrategy的系统*键空间。当我们在集群中添加新的 DC 时,我们需要在 NetworkTopologyStrategy 上,否则当我运行 nodetool 重建时,它失败了。
我将所有键空间从 SimpleStrategy 更改为 NetworkTopologyStrategy 并且重建效果很好。
在 ALTER 期间,它还会警告您正在更改系统键空间。
另一个问题:Opscenter Keyspace(rollup* tables)有大量数据,为什么我要复制它,只放 1 个 DC 就足够了?
我的问题应该是系统*键空间的理想策略是什么?
解决方案
我的问题应该是系统*键空间的理想策略是什么?
对此有一点警告。 system
并且system_schema
有一个特殊的复制策略LocalStrategy
,他们应该保持这种状态。
system_auth
然而,system_distributed
、 和的其他键空间是另一回事system_traces
。将它们设置为与每个 DC 一起使用NetworkTopologyStrategy
的 RF 3(假设每个 DC 至少有 3 个节点)是完全可以接受的。为system_distributed
, 和设置它system_traces
并不重要,但它不应该伤害任何东西。
另一方面,system_auth
绝对应该设置为NetworkTopologyStrategy
与为每个 DC 指定的 RF一起使用。原因在于,SimpleStrategy
这可能会将其所有副本放在一个 DC 中,甚至将零个副本放在一个 DC 中。这可能会导致身份验证检查的高延迟甚至超时,因为这会导致跨 DC 网络流量。
此外,如果您的应用程序使用特定于 DC 的负载平衡策略,您将需要为system_auth
. 如上所述,使用SimpleStrategy
可能会导致 DC 无法为用户获取任何副本。而且会阻止特定于 DC 的应用程序连接。
推荐阅读
- c++ - 为什么 March=native 在 Apple M1 上不起作用?
- javascript - 编辑和保存输入
- php - PHP - 检查重复条目是基于某些列/数据索引并识别重复行索引的二维数组
- c++ - 无法在 VSCode 终端上运行使用 GLEW 的可执行文件
- java - 如何在heroku中设置构建时环境变量?
- javascript - 使用矩阵链乘法找到有效成本时给出无穷大的结果
- stm32 - STM32 ADC DMA 双/多缓冲器示例
- javascript - 平均功能无法正常工作,有什么问题?
- ejs - TypeError('Router.use() 需要中间件函数,但在我的代码中出现 ' + gettype(fn)) 错误
- python - __init__() 缺少 1 个必需的位置参数:“ship_img”