正在尝试登录到cassandra';s控制台(cqlsh),它拒绝我

正在尝试登录到cassandra';s控制台(cqlsh),它拒绝我,cassandra,cql,cassandra-2.0,cqlsh,Cassandra,Cql,Cassandra 2.0,Cqlsh,我试图为cassandra设置用户身份验证,但遇到以下问题 首先,我用以下内容更新了cassandra.yaml: authenticator: PasswordAuthenticator 然后创建了复制系数为3的system_auth密钥空间,如下所示: CREATE KEYSPACE system_auth WITH REPLICATION = { 'class' : 'SimpleStrategy', 'replication_factor' : 3}; 然后使用以下命令重新运行ca

我试图为cassandra设置用户身份验证,但遇到以下问题

首先,我用以下内容更新了
cassandra.yaml

authenticator: PasswordAuthenticator
然后创建了复制系数为3的system_auth密钥空间,如下所示:

CREATE KEYSPACE system_auth WITH REPLICATION =  { 'class' : 'SimpleStrategy', 'replication_factor' : 3};
然后使用以下命令重新运行cassandra:

bin/cassandra
然后,在所有这些之后,我继续并确保修复我的节点(尽管我不确定我是否理解为什么这很重要/必要):

即使在完成了所有这些步骤之后,cassandra/java还是对我大喊大叫:

    Traceback (most recent call last):
  File "/home/tscobb/Documents/BM/apache-cassandra-2.0.5/bin/cqlsh", line 2044, in <module>
    main(*read_options(sys.argv[1:], os.environ))
  File "/home/tscobb/Documents/BM/apache-cassandra-2.0.5/bin/cqlsh", line 2030, in main
    display_float_precision=options.float_precision)
  File "/home/tscobb/Documents/BM/apache-cassandra-2.0.5/bin/cqlsh", line 480, in __init__
    cql_version=cqlver, transport=transport)
  File "/home/tscobb/Documents/BM/apache-cassandra-2.0.5/bin/../lib/cql-internal-only-1.4.1.zip/cql-1.4.1/cql/connection.py", line 143, in connect
  File "/home/tscobb/Documents/BM/apache-cassandra-2.0.5/bin/../lib/cql-internal-only-1.4.1.zip/cql-1.4.1/cql/connection.py", line 59, in __init__
  File "/home/tscobb/Documents/BM/apache-cassandra-2.0.5/bin/../lib/cql-internal-only-1.4.1.zip/cql-1.4.1/cql/thrifteries.py", line 157, in establish_connection
  File "/home/tscobb/Documents/BM/apache-cassandra-2.0.5/bin/../lib/cql-internal-only-1.4.1.zip/cql-1.4.1/cql/cassandra/Cassandra.py", line 465, in login
  File "/home/tscobb/Documents/BM/apache-cassandra-2.0.5/bin/../lib/cql-internal-only-1.4.1.zip/cql-1.4.1/cql/cassandra/Cassandra.py", line 486, in recv_login
cql.cassandra.ttypes.AuthenticationException: AuthenticationException(why='org.apache.cassandra.exceptions.UnavailableException: Cannot achieve consistency level QUORUM')
接下来是:

nodetool status
Datacenter: datacenter1
=======================
Status=Up/Down
|/ State=Normal/Leaving/Joining/Moving
--  Address Load    Tokens  Owns   Host ID                              Rack
UN  127.0.0.1  1.57 MB  256     100.0%  37ae1d4c-0df5-43d2-9593-4603ac68c34a  rack1
由于集群中只有一个节点,因此将复制因子设置为3将是您的问题。这是一个例子。你应该把它快速通读一遍。其中一部分在这里特别适用:

当复制因子超过节点数时,写入将被忽略 拒绝,但只要达到所需的一致性,就可以进行读取 这一水平是可以达到的

卡桑德拉将“仲裁”计算为(复制系数/2)+1。因此,如果复制系数为3,则需要运行2个节点才能满足一致性级别


基本上,将您的复制因子设置回1,您就可以了。

您的集群中有多少节点?我如何找到这些信息?发布
nodetool status的输出。
@BryceAtNetwork23我发布了它!:)我对此有点困惑,在我阅读的每一篇文章中,我都需要在更改授权内容时将复制因子设置为大于1,为什么我需要相反的设置?我有点困惑。另外,如果您真的很清楚这一点,很抱歉,但是如何在cassandra.yaml文件中指定复制因子?我所做的更改是将验证器还原为AllowAllAuthenticator,然后在cqlsh中进行更改…我猜根据您的建议,我的方法有点愚蠢。将复制系数设置为1以外的值的原因是,如果持有system_auth密钥空间的一个节点发生故障,您将无法进入其他节点。如果您使用的是DSE Cassandra,.yaml中应该有一个点用于
auth\u replication\u选项:
,然后是
replication\u factor
。如果没有,那么重置验证器和授权器将是一种方法。datastax文档对此有点混乱。他们说不要使用1的复制因子,但如果您只计划使用1个节点,那么显然必须使用1。
nodetool status
nodetool status
Datacenter: datacenter1
=======================
Status=Up/Down
|/ State=Normal/Leaving/Joining/Moving
--  Address Load    Tokens  Owns   Host ID                              Rack
UN  127.0.0.1  1.57 MB  256     100.0%  37ae1d4c-0df5-43d2-9593-4603ac68c34a  rack1
'class' : 'SimpleStrategy', 'replication_factor' : 3
Cannot achieve consistency level QUORUM