我有一个Cassandra集群(Datastax开源),目前没有配置身份验证(即,它使用AllowAllAuthenticator),我想使用PasswordAuthenticator . official document说我应该遵循以下步骤:
-
在cassandra.yaml中启用PasswordAuthenticator,
-
重启Cassandra节点,该节点将创建system_auth键空间,
-
更改system_auth复制因子,
-
创建新用户和密码
但是,这对我来说是个大问题,因为集群在 生产环境 中使用,所以我们不能有任何停机时间 . 在步骤2和4之间尚未配置任何用户,因此即使客户端提供用户名和密码,该请求仍将被拒绝,这是不理想的 .
我查看了Datastax Enterprise doc,它有一个TransitionalAuthenticator类,它将创建system_auth键空间但不拒绝请求 . 我想知道这个类是否可以移植到开源版本?或者,如果有其他方法解决这个问题?谢谢
Update 这是我正在使用的Cassandra版本:
cqlsh 4.1.1 | Cassandra 2.0.9 | CQL spec 3.1.1 | Thrift protocol 19.39.0
1 回答
假设适当的客户端配置,复制和群集容量,您应该能够仅使用一个节点执行步骤2-4并且没有停机时间 . 然后,它只是其余节点的滚动重启 .
客户端应该提前使用凭据设置,并且他们将开始将它们用作节点,因为具有授权器的节点联机(此行为可能取决于驱动程序 - 首先尝试它) .
您可以在使用CassandraAuthenticator之前手动生成步骤3-4的架构和数据,但这不是必需的 .
您对停机时间有何顾虑?