cassandra中的system_auth复制

时间:2017-02-23 19:03:04

标签: spring authentication cassandra replication scalability

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

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

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

谷歌搜索的时间实际上已经提到了EverywhereStrategy,但我没有看到它提到的文档中的任何地方。人们如何配置API以使用Cassandra身份验证,如果您无法确定您的用户是否实际出现在节点上,那么您将其指定为联系点?

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

1 个答案:

答案 0 :(得分:1)

在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

回答你的问题:

问题:人们如何配置API以使用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

检查数据存储文档中是否有您正在使用的版本。