【问题标题】:Enable Cassandra PasswordAuthenticator at up time在正常运行时启用 Cassandra PasswordAuthenticator
【发布时间】:2014-12-16 22:29:47
【问题描述】:

我有一个 Cassandra 集群(Datastax 开源),目前没有配置身份验证(即,它使用 AllowAllAuthenticator),我想使用 PasswordAuthenticator。 official document 说我应该遵循以下步骤:

  1. 在 cassandra.yaml 中启用 PasswordAuthenticator,

  2. 重启 Cassandra 节点,这将创建 system_auth 密钥空间,

  3. 更改 system_auth 复制因子,

  4. 创建新用户和密码

但是,这对我来说是个大问题,因为集群是在生产中使用的,所以我们不能有任何停机时间。在第 2 步和第 4 步之间还没有配置用户,所以即使客户端提供了用户名和密码,请求仍然会被拒绝,这并不理想。

我查看了Datastax Enterprise doc,它有一个 TransitionalAuthenticator 类,它可以创建 system_auth 密钥空间但不会拒绝请求。请问这个类能不能移植到开源版本?或者如果有其他方法可以解决这个问题?谢谢

更新 这是我正在使用的 Cassandra 版本:

cqlsh 4.1.1 | Cassandra 2.0.9 | CQL spec 3.1.1 | Thrift protocol 19.39.0

【问题讨论】:

    标签: cassandra cassandra-2.0 datastax-enterprise datastax cassandra-cli


    【解决方案1】:

    假设正确的客户端配置、复制和集群容量,您应该能够仅使用一个节点执行步骤 2-4,并且停机时间为零。然后,它只是剩余节点的滚动重启。

    客户端应该提前设置好凭据,并且当具有授权者的节点上线时,它们将开始将它们用作节点(此行为可能取决于驱动程序——先尝试一下)。

    您也许可以在使用 CassandraAuthenticator 之前手动生成步骤 3-4 的架构和数据,但这不是必需的。

    您对停机有什么顾虑?

    【讨论】:

    • 感谢您的回复。客户端确实配置为发送凭据,并且还能够在节点之间进行负载平衡。有两个问题:1)如果客户端无法连接到一个节点,它会尝试下一个,这会产生一些额外的请求时间(这是一个性能关键的系统)和 2)其他节点可能会突然出现大请求数量会减慢甚至崩溃。
    • 根据您使用的客户端驱动程序,应将下行节点排除在负载平衡之外,因此进一步的请求根本不会考虑它。如果此应用程序无法维持单个节点中断,您将无法执行此操作或执行许多其他维护任务。
    猜你喜欢
    • 2021-10-24
    • 2015-01-21
    • 2016-02-27
    • 2014-11-18
    • 2013-08-10
    • 2015-04-11
    • 2011-01-23
    • 2018-03-11
    • 2021-04-09
    相关资源
    最近更新 更多