0

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

  1. 在 cassandra.yaml 中启用 PasswordAuthenticator,

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

  3. 更改 system_auth 复制因子,

  4. 创建新用户和密码

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

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

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

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

1 回答 1

1

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

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

在使用 CassandraAuthenticator 之前,您可能能够手动生成步骤 3-4 的模式和数据,但这不是必需的。

您对停机有什么顾虑?

于 2014-10-22T16:58:28.387 回答