【问题标题】:Cassandra Clustering Single NodeCassandra 集群单节点
【发布时间】:2012-05-02 00:35:06
【问题描述】:

好吧,我有一个节点集群,我分为两个地址 127.0.0.1 和 127.0.0.2。如果我尝试将数据插入 127.0.0.1,请使用 Cassandra 客户端。数据成功添加到 127.0.0.1,我也可以查看它,但是如果我尝试从 127.0.0.2 连接查看,我看不到任何更新。没有数据。我想我上次无法很好地解释它。这是我将两个 cassandra 复制到同一节点上名为 Cassandra 1 和 Cassandra 2 的不同文件夹中的内容。相应地更新 Cassandra.yaml。

1)

cluster_name: 'Test Cluster'
initial_token: 
data_file_directories: - /Cassandra/1/var/lib/cassandra/data
commitlog_directory: /Cassandra/1/var/lib/cassandra/commitlog
saved_caches_directory: /Cassandra/1/var/lib/cassandra/saved_caches 
- seeds: "127.0.0.1,127.0.0.2" 
listen_address: 127.0.0.1 
rpc_address: 127.0.0.1

2)

cluster_name: 'Test Cluster' 
initial_token: 
data_file_directories: - /Cassandra/2/var/lib/cassandra/data
commitlog_directory: /Cassandra/2/var/lib/cassandra/commitlog
saved_caches_directory: /Cassandra/2/var/lib/cassandra/saved_caches
- seeds: "127.0.0.1,127.0.0.2" 
listen_address: 127.0.0.2 
rpc_address: 127.0.0.2 

其他设置是默认设置,我没有修改任何内容。然后我使用以下方法创建键空间和列族:

CREATE KEYSPACE demo with placement_strategy = 'org.apache.cassandra.locator.SimpleStrategy' and strategy_options = [{replication_factor:2}]; 

我没有指定任何分区器,所以我猜默认是随机的。

use demo; 

create column family order with comparator=UTF8Type and key_validation_class=UTF8Type and default_validation_class=UTF8Type and column_metadata=[{column_name: member, validation_class: UTF8Type},{column_name: user, validation_class: UTF8Type, index_type: KEYS},{column_name: instrument, validation_class: UTF8Type},{column_name: price, validation_class: DoubleType}, {column_name: quantity, validation_class: Int32Type},{column_name:datetime, validation_class: DateType}]; 

现在,如果我尝试连接到 127.0.0.1 并插入数据,我相信应该为 127.0.0.1 和 127.0.0.2 插入数据,但事实并非如此。

Set orders[KEY][user] = 'ABC' list orders;

有什么问题吗?我应该怎么做才能使它可行。

如果有的话,请给我一个详细的例子。我认为我在创建键空间、列族和数据插入时做错了。如果你有一个插入两个节点的例子也很好。

【问题讨论】:

    标签: cassandra replication cluster-computing


    【解决方案1】:

    在尝试为本地传输提供不同的端口号后,我遇到了类似的问题。必须是同一个端口(默认为9042),否则节点找不到对方。 IP地址必须不同,以防止节点之间的端口冲突。

    使用./nodetool status 检查您是否真的创建了一个集群,而不仅仅是两个孤立的实例。

    【讨论】:

      【解决方案2】:

      您是否使用两个 IP 作为种子,将其设置为单个 IP,以先启动为准。

      “nodetool --host [127.0.0.1|127.0.0.2] 响铃”是什么意思,说。你能在 custer 中看到两个 ip。

      【讨论】:

      • 是的,我使用两个 IP 作为种子。我已将 INFO 级别更改为 DEBUG 以确保两者都可以通信,但我一次只能看到一个 IP。两个 IP 都没有通信。
      • 是的,我将两个 IP 都用作种子,如果我将单个 IP 设置为种子,那么在运行第二个服务器时会出现异常。