我有一个Cassandra集群(Datastax开源),目前没有配置身份验证(即,它正在使用AllowAllAuthenticator),我想使用PasswordAuthenticator。 official document表示我应该按照以下步骤操作:
在cassandra.yaml中启用PasswordAuthenticator,
重启Cassandra节点,该节点将创建system_auth键空间,
更改system_auth复制因子
创建新用户和密码
然而,这对我来说是个大问题,因为群集在生产中使用,所以我们不能有任何停机时间。在步骤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
答案 0 :(得分:1)
假设适当的客户端配置,复制和群集容量,您应该能够仅使用一个节点执行步骤2-4并且没有停机时间。然后,它只是剩余节点的滚动重启。
客户端应该提前使用凭据进行设置,并且他们将开始将它们用作节点,因为具有授权器的节点会联机(此行为可能取决于驱动程序 - 首先尝试它)。
您可以在使用CassandraAuthenticator之前手动生成步骤3-4的架构和数据,但这不是必需的。
您对停机时间有何顾虑?