【问题标题】:Cassandra 1.2: Unable to complete request: one or more nodes were unavailableCassandra 1.2:无法完成请求:一个或多个节点不可用
【发布时间】:2014-04-16 16:04:46
【问题描述】:

我在设置新的 Cassandra 集群时遇到了问题。我在 EC2(区域:eu-west-1b)中建立了一个 3 节点集群。当我尝试将记录插入新表时,我收到以下错误消息:

cqlsh:test> insert into mytest (id, value) values(1,100);
Unable to complete request: one or more nodes were unavailable.

我已确认 3 个节点已启动并运行:

nodetool status
UN  ***.***.***.***  68.1 KB    256     33.2%  bbf1c5e9-ac68-41a1-81a8-00c7877c4eac  rack1
UN  ***.***.***.***  81.95 KB   256     34.1%  e118e3a7-2486-4c08-8ba1-d337888ff59c  rack1
UN  ***.***.***.***   68.12 KB   256     32.7%  041cb88e-df21-4640-b7ac-7a87fd38dae6  rack1

我用来创建键空间和表的命令是:

create keyspace test with replication ={'class':'NetworkTopologyStrategy', 'eu-west-1b': 2};
use test;
create table mytest (id int primary key, value int);
insert into mytest (id, value) values(1,100);

每个节点都可以看到密钥空间 - 我使用 CQLSH 并运行了 descibe 密钥空间并从每个节点获得了以下输出:

CREATE KEYSPACE test WITH replication = {
  'class': 'NetworkTopologyStrategy',
  'eu-west-1b': '2'
};

USE test;

CREATE TABLE mytest (
  id int PRIMARY KEY,
  value int
) WITH
  bloom_filter_fp_chance=0.010000 AND
  caching='KEYS_ONLY' AND
  comment='' AND
  dclocal_read_repair_chance=0.000000 AND
  gc_grace_seconds=864000 AND
  read_repair_chance=0.100000 AND
  replicate_on_write='true' AND
  populate_io_cache_on_flush='false' AND
  compaction={'class': 'SizeTieredCompactionStrategy'} AND
  compression={'sstable_compression': 'SnappyCompressor'};

【问题讨论】:

    标签: amazon-ec2 cassandra


    【解决方案1】:

    我终于找到了问题所在 - 我已将 endpoint_snitch 设置为 Ec2Snitch,但默认 Datastax 设置在 cmets 下方(我没有注意到)。我注释掉了 DS 告密者,在所有节点上重新启动了 dse 服务并在每个节点上运行 nodetool repair,问题就消失了。

    【讨论】:

      【解决方案2】:

      根据 Mark 的回复,首先检查您的 cassandra 集群是否在 aws 中。如果是然后更改“cassandra.yaml”中的配置,只需再次将 endpoint_snitch 更改为 Ec2Snitch 可能的一件事是您的数据中心实际上是 ec2 实例的“区域”,它应该像“ us-east','us-west'。在你的情况下,它应该只是 'eu-west'。

      根据 datastax 所说 EC2Snitch¶

      使用 EC2Snitch 在 Amazon EC2 上进行简单的集群部署,其中集群中的所有节点都位于一个区域内。该区域被视为数据中心,而可用区被视为数据中心内的机架。例如,如果一个节点在 us-east-1a 中,us-east 是数据中心名称,1a 是机架位置。由于使用的是私有 IP,因此此告密者无法跨多个区域运行。

      在定义您的 keyspace strategy_options 时,使用 EC2 区域名称(例如,us-east)作为您的数据中心名称。

      链接-http://www.datastax.com/docs/1.0/cluster_architecture/replication http://www.datastax.com/documentation/cql/3.1/cql/cql_using/update_ks_rf_t.html

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-08-08
        • 2012-12-24
        • 2014-04-11
        • 2012-11-29
        • 1970-01-01
        • 1970-01-01
        • 2021-01-04
        • 1970-01-01
        相关资源
        最近更新 更多