system_auth 在 Cassandra 中复制

system_auth replication in Cassandra

我正在尝试在 Cassandra 上配置身份验证。似乎是因为用于 system_auth 的复制策略,它无法将用户凭据复制到集群中的所有节点,所以我最终在一个节点上获得不正确的凭据,并在另一个节点上成功连接。

This 是相关问题。那里的人说你必须确保凭据始终在所有节点上。

怎么做?那里提供的选项说您必须更改密钥空间以使复制因子等于集群中的节点数量,然后 运行 修复每个节点。如果您希望您的 cassandra 具有动态可扩展性,那么需要完成大量工作。如果我今天添加 1 个节点,改天添加 1 个节点,更改密钥空间复制,然后继续手动重新启动节点,这将导致某种混乱。

一小时的谷歌搜索实际上导致略微提到 EverywhereStrategy,但我在文档中没有看到它提到可用的任何地方。人们如何配置 API 以使用 Cassandra 身份验证,如果您不能确定您的用户实际出现在节点上,那么您是否指定为联系点?

显然,谈论真正的规模时,您可以在不重新启动每个节点的情况下更改集群的大小。

当您在 Cassandra 中启用身份验证时, 您已将 system_auth 密钥空间 replication_factor 增加到 N(节点总数)和 运行完全修复,但添加新节点后不需要重启节点。

如果修复花费更多时间,那么您可以优化修复,例如仅修复 system_auth 键空间

nodetool repair system_auth

(或)

nodetool repair -pr system_auth

根据 Cassandra 的规定,应定期进行全面维修。有关修复的更多详细信息,请参阅以下链接:

http://www.datastax.com/dev/blog/repair-in-cassandra

https://www.pythian.com/blog/effective-anti-entropy-repair-cassandra/

http://docs.datastax.com/en/archived/cassandra/2.2/cassandra/tools/toolsRepair.html

回答您的问题:

问题:人们如何配置 APIs 以使用 Cassandra 身份验证,如果您不能确定您的用户确实存在于节点上,那么您指定为联络点?

回答: 我正在使用我的 Spring 项目中的 Cassandra 2.2 和 Astyanax thrift API,我可以使用它们来处理 Cassandra 身份验证有效。指定您使用的 Cassandra 版本以及用于连接 CQL 驱动程序或 Astyanax thrift 的驱动程序 API?

问题:显然,谈论真正的规模,当你可以改变集群的大小而不需要重新启动每个节点时。

回答:是的,您可以在不重新启动节点的情况下扩展您的 Cassandra 集群,请查看 Cassandra 2.2 版本的 datastax 文档: http://docs.datastax.com/en/archived/cassandra/2.2/cassandra/operations/opsAddNodeToCluster.html

检查您正在使用的版本的 datastax 文档。