2

Cassandra は 3 つのノードを持つクラスター モデルで動作します。すべてのノードが "UP" の場合、cqlsh で cql “select * from User” を使用します。Cassandra は正しい結果を返します。結果は返されませんが、「リクエストを完了できません: 1 つまたは複数のノードが利用できませんでした」と報告されます。cassandra-cli コマンド「get Users」を使用するようになりました。エラーなしで正しいデータが返されます。何か案は?

4

5 に答える 5

2

CQL を使用している場合、Consistency-Level が「ALL」のリクエストがあると思います。この場合、(そのノードのレプリカをホストする) すべてのサーバーからの応答を待ってから、戻ります。1 つのノードがダウンしているため、ダウンしているノードに接続できないため、失敗します。

Cassandra-cli を使用して実行している場合、一貫性レベルはデフォルトで「QUORUM」または「ONE」または「ANY」のいずれかに設定されているため、1 つのレプリカがダウンしていても問題なくデータが返されると思います。

于 2013-01-10T13:09:21.960 に答える
0

cqlsh と cli の両方のデフォルトは CL.ONE です。違いは、実際には、cqlsh クエリが「すべてのユーザーを選択する」と言っているのに対し、cli の「取得」は「1 人のユーザーを選択する」ことであると思われます。

于 2013-01-10T18:34:53.353 に答える
0

Cassandra クラスターが aws にある場合は、「cassandra.yaml」の構成を変更します。endpoint_snitch を Ec2Snitch に変更するだけです。データセンターが実際には ec2 インスタンスの「リージョン」であり、「 us-east','us-west'. あなたの場合は、'eu-west' のみにする必要があります。

datastax によると、それについて EC2Snitch¶

クラスター内のすべてのノードが 1 つのリージョン内にある Amazon EC2 での単純なクラスター展開には、EC2Snitch を使用します。リージョンはデータ センターとして扱われ、アベイラビリティ ゾーンはデータ センター内のラックとして扱われます。たとえば、ノードが us-east-1a にある場合、us-east はデータセンター名で、1a はラックの場所です。プライベート IP が使用されるため、このスニッチは複数のリージョンでは機能しません。

キースペースの 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

于 2014-04-16T08:04:28.660 に答える
0

あなたのキースペースの配置はどの戦略ですか?NetworkTopologyStrategy を使用している場合は、次のように試すことができます。

 CREATE KEYSPACE gxsim with placement_strategy = 'org.apache.cassandra.locator.NetworkTopologyStrategy' and strategy_options = {'DC1' : 1 , DC2' : 1} AND durable_writes = true;
于 2013-04-18T11:07:19.913 に答える