Cassandra-无法达到一致性级别仲裁
我现在只运行一个节点。我正在尝试为Cassandra启用密码身份验证 我遵循以下指南: 我要注意的是,我没有改变Cassandra-无法达到一致性级别仲裁,cassandra,Cassandra,我现在只运行一个节点。我正在尝试为Cassandra启用密码身份验证 我遵循以下指南: 我要注意的是,我没有改变system\u auth的复制,因为它是一个单节点集群 我编辑了cassandra.yaml以使用authenticator:PasswordAuthenticator 然后我重新启动了cassandra,并尝试了命令cqlsh-u cassandra-p cassandra,但这给了我一个错误: Connection error: ('Unable to connect to an
system\u auth
的复制,因为它是一个单节点集群
我编辑了cassandra.yaml
以使用authenticator:PasswordAuthenticator
然后我重新启动了cassandra,并尝试了命令cqlsh-u cassandra-p cassandra
,但这给了我一个错误:
Connection error: ('Unable to connect to any servers',
{'127.0.0.1': AuthenticationFailed(u'Failed to authenticate to 127.0.0.1:
code=0100 [Bad credentials] message="org.apache.cassandra.exceptions.
UnavailableException: Cannot achieve consistency level QUORUM"',)})
我试过运行nodetool repair
,但它说:复制因子是1。无需修复键空间“system\u auth”
如何解决此问题?在1节点(或2节点)配置中,仲裁是不可能的,并且不需要修复(因为它用于修复节点之间的数据不一致)
默认情况下,用户“cassandra”始终在system_auth中使用仲裁。尝试创建一个不同的用户(作为超级用户),您的问题就会消失
原因是您不能在单个节点群集上拥有仲裁,请参阅Igors Anwser 我设法解决了这个问题 我必须用replication={'class':'SimpleStrategy','replication\u factor':1}运行
alterkeyspace system\u auth
之前设置为{'class':'NetworkTopologyStrategy','DC1':'1','DC2':'1'}
,即使它是一个单节点群集
这就是它无法达到法定人数的原因。在
Cassandra.yaml
文件中,将身份验证切换回验证者:AllowAllAuthentication
并确保授权者:AllowAllAuthorizer
也设定好了。这将允许您再次使用cqlsh。在连接之前,它将不再检查身份验证。进入cqlsh后,按照其他答案将所需复制降低到较低级别。按照以下步骤操作:
问题发生的原因是,以前系统的身份验证设置为{'class':'NetworkTopologyStrategy','DC1':'1','DC2':'1},即使它是一个单节点集群。对我来说,修复它的方法是进入cqlsh外壳,使用您遇到问题的密钥空间,然后运行命令
CONSISTENCY QUORUM
,正如Igor所述-您无法在单个节点群集上实现QUORUM。当我尝试创建新用户时,出现错误:Unauthorized:code=2100[Unauthorized]message=“只有超级用户才能创建具有超级用户状态的角色”
。这是否意味着我不能在单个节点群集上使用密码身份验证?我是否最好让它只在本地主机上侦听cassandra.yaml
以保护它?如果集群在您的控制下,您可以在cassandra.yaml中设置AllowAllAuthenticator,并在创建新超级用户时重新启动节点。你的错误是,你试图创建一个超级用户作为一个普通用户。这就是它现在设置的,当我尝试创建一个新的超级用户时,它仍然会给我这个错误。在输入cqlsh-u cassandra-p cassandra
之后,我也使用了该命令。cassandra角色不应该是超级用户吗?用户cassandra是默认的超级用户-这在cassandra中总是作为仲裁进行检查。如果您使用的是AllowAllAuthenticator,您只需省略用户名和密码即可cqlsh
应该单独工作。如果无法连接到cqlsh,如何运行ALTER KEYSPACE?您能帮我吗?只需在cassandra.yaml中更改为authenticator:AllowAllAuthenticator
,无需凭据即可登录。