首页 文章

单个cassandra节点上的NetworkTopologyStrategy

提问于
浏览
1

我曾经使用NetworkTopologyStrategy在cassandra中创建了一个键空间,下次使用SimpleStrategy时使用以下语法:

Keyspace definition:

CREATE KEYSPACE cw WITH REPLICATION = { 'class' : 'NetworkTopologyStrategy', 'datacenter16' : 1 };

CREATE KEYSPACE cw WITH REPLICATION = {'class' : 'SimpleStrategy', 'replication_factor' : 1}

Output of bin/nodetool ring :

Datacenter: 16
==========
Address       Rack        Status State   Load            Owns                Token                                       

172.16.4.196  4           Up     Normal  35.92 KB        100.00%             0

当我在 NetworkTopologyStrategy 键空间中创建一个表并在表上执行 select * 查询时 . 它返回以下错误:

Unable to complete request: one or more nodes were unavailable

虽然它在SimpleStrategy密钥空间中工作正常但为什么会这样呢?我们不能在单个cassandra节点集群上使用 NetworkTopologyStrategy 吗?

3 回答

  • 2

    虽然其他人都是对的,但您已经在使用不同的小报,因为您的数据中心名称是“16” . 在您的键空间定义中,您有数据中心:16 . 这意味着数据中心名称实际上是“16” .

    试试这个:

    CREATE KEYSPACE cw WITH REPLICATION = { 'class' : 'NetworkTopologyStrategy', '16' : 1 };
    
  • 2

    默认情况下,cassandra配置为使用SimpleSnitch . SimpleSnitch无法识别数据中心和机架信息,因此只能使用SimpleStrategy . 要更改Snitch,您必须在cassandra.yaml中编辑以下内容

    endpoint_snitch: CHANGE THIS TO WHATEVER YOU WANT
    

    您还必须更改相应的属性文件以定义数据中心和机架

  • 1

    您必须定义一个网络感知的小报,才能使用 NetworkTopologyStrategy . 有关更多信息,请参阅此文档:http://docs.datastax.com/en/cassandra/2.1/cassandra/architecture/architectureSnitchPFSnitch_t.html

相关问题