2014-03-31 31 views
3

在啓動和添加新節點到我的卡桑德拉羣集配置爲使用身份驗證,我得到了下面的堆棧跟蹤:正確的方式來擴展卡桑德拉集羣使用驗證

java.lang.RuntimeException: org.apache.cassandra.exceptions.AlreadyExistsException: Cannot add already existing column family "credentials" to keyspace "system_auth" 
    at org.apache.cassandra.cql3.QueryProcessor.process(QueryProcessor.java:242) 
    at org.apache.cassandra.auth.PasswordAuthenticator.process(PasswordAuthenticator.java:266) 
    at org.apache.cassandra.auth.PasswordAuthenticator.setupCredentialsTable(PasswordAuthenticator.java:214) 
    at org.apache.cassandra.auth.PasswordAuthenticator.setup(PasswordAuthenticator.java:171) 
    at org.apache.cassandra.auth.Auth.setup(Auth.java:132) 
    at org.apache.cassandra.service.StorageService.joinTokenRing(StorageService.java:830) 
    at org.apache.cassandra.service.StorageService.initServer(StorageService.java:583) 
    at org.apache.cassandra.service.StorageService.initServer(StorageService.java:482) 
    at org.apache.cassandra.service.CassandraDaemon.setup(CassandraDaemon.java:345) 
    at org.apache.cassandra.service.CassandraDaemon.activate(CassandraDaemon.java:462) 
    at org.apache.cassandra.service.CassandraDaemon.main(CassandraDaemon.java:552) 
Caused by: org.apache.cassandra.exceptions.AlreadyExistsException: Cannot add already existing column family "credentials" to keyspace "system_auth" 
     at org.apache.cassandra.service.MigrationManager.announceNewColumnFamily(MigrationManager.java:209) 
     at org.apache.cassandra.cql3.statements.CreateTableStatement.announceMigration(CreateTableStatement.java:114) 
     at org.apache.cassandra.cql3.statements.SchemaAlteringStatement.execute(SchemaAlteringStatement.java:71) 
     at org.apache.cassandra.cql3.QueryProcessor.processStatement(QueryProcessor.java:188) 
     at org.apache.cassandra.cql3.QueryProcessor.process(QueryProcessor.java:222) 
     at org.apache.cassandra.cql3.QueryProcessor.process(QueryProcessor.java:234) 
     ... 10 more 

這是有道理的,因爲之前的一個節點已經創建了它。

考慮到system_auth列系列已經存在,在線新建節點的正確方法是什麼?另外,隨着集羣大小的增加,如何增加system_auth表的複製因子?

+0

這個問題被標記爲'卡桑德拉-2.0'所以如果喲你看[相關的源代碼](http://grepcode.com/file/repo1.maven.org/maven2/org.apache.cassandra/cassandra-all/2.0.0/org/apache/cassandra/auth/ PasswordAuthenticator.java#208)它似乎在嘗試創建它之前是否缺少列族(元數據== null)。您可能需要從Cassandra用戶列表中尋求支持。 –

回答

1

儘管我沒有找到任何關於該錯誤的具體信息,但它可能是一個警告,因爲您正確地聲明它應該已經存在。我假設節點已啓動並加入羣集。

回答您的問題:

什麼是正確的方法,使新節點在線,鑑於system_auth列家族已經存在?

此外,隨着集羣大小的增加,如何應對增加system_auth表的複製因子?

我不是能張貼這個答案不止一個鏈接,但搜索Datastax文檔添加節點會給你添加節點一般proceedure將使用身份驗證是相同的羯羊或沒有,唯一的區別是在cassandra.yaml

身份驗證設置配置與複製system_auth密鑰空間覆蓋以下文檔中:

http://www.datastax.com/documentation/datastax_enterprise/4.5/datastax_enterprise/sec/secConfSysAuthKeyspRepl.html