2

我有一台 Cassandra 1.0.9 服务器,它被设置为集群的种子。它有大约 34gb 的数据。我正在尝试将第二个 Cassandra 1.0.9 加入到环中,并将第一个设置为种子。

在 /var/lib/cassandra/log/cassandra.log 我看到:

INFO 20:06:52,809 JOINING: waiting for schema information to complete
INFO 20:07:22,815 JOINING: waiting for schema information to complete
INFO 20:07:52,817 JOINING: waiting for schema information to complete
.
.
.
INFO 20:10:22,839 JOINING: waiting for schema information to complete
INFO 20:10:52,841 JOINING: waiting for schema information to complete
INFO 20:11:22,847 JOINING: waiting for schema information to complete

在 /var/log/cassandra/system 日志中,我看到:

INFO [main] 2012-09-11 20:19:52,913 StorageService.java (line 668) JOINING: waiting for schema information to complete
INFO [main] 2012-09-11 20:20:22,919 StorageService.java (line 668) JOINING: waiting for schema information to complete
INFO [main] 2012-09-11 20:20:52,921 StorageService.java (line 668) JOINING: waiting for schema information to complete
.
.
.
INFO [main] 2012-09-11 20:23:22,943 StorageService.java (line 668) JOINING: waiting for schema information to complete
INFO [main] 2012-09-11 20:23:52,945 StorageService.java (line 668) JOINING: waiting for schema information to complete
INFO [main] 2012-09-11 20:24:22,951 StorageService.java (line 668) JOINING: waiting for schema information to complete

运行 netstats 给了我:

Mode: JOINING
Not sending any streams.
Not receiving any streams.
Pool Name                    Active   Pending      Completed
Commands                        n/a         0              5
Responses                       n/a         0          51966

知道这需要多长时间吗?

4

2 回答 2

3

看来我已经通过以下步骤解决了这个问题:

  1. 删除新服务器上的 /var/lib/cassandra/data 目录(和子目录)
  2. 删除种子服务器上的 /var/lib/cassandra/data/system/Schema* 文件
  3. 删除种子服务器上的 /var/lib/cassandra/data/system/Migration* 文件
  4. 在 cassandra-cli 的种子服务器上重新创建模式
  5. 在新服务器上启动 Cassandra

现在我在环中看到新服务器,即使它仍在加入(在之前的加入尝试中它没有出现在环中)。种子和新服务器都在同一个模式上,正如运行“描述集群”所指出的那样;在 cassandra-cli 中。

我希望这对将来的其他人有所帮助。

于 2012-09-14T17:42:22.497 回答
0

接收振铃信息只需几秒钟。

识别问题的最佳方法是在两台主机上的 log4j-server.properties 中打开调试日志记录。

我的猜测是其中一台主机无法连接到存储端口(7000 或 7001)上的另一台主机。这可能有不同的原因:主机名配置错误、防火墙、ssl 配置错误等。尝试执行

nodetool -h <hostname> ring

命令,然后尝试

telnet <hostname> 7000

从每个主机到另一个。确保您使用的是来自 nodetool 输出的主机名。

如果两个连接都正常工作,请尝试打开调试日志记录。

于 2012-09-12T23:38:34.157 回答