5

環境内のソフトウェアの特定のリビジョン(Dev1、Dev2、QA、...、PROD)に対してCassandraクラスターをセットアップする「bootstrap」というクリエイティブな名前のプロセスがあります。このブートストラップは、キースペースと列ファミリーを作成/更新するだけでなく、非製品に初期データを入力します。

Astyanaxを使用していますが、ブートストラップにHectorを使用できます。

別のチームが、各環境に独自のデータセンター名を付けることを決定したことを前提としています。また、2つ以上のデータセンターに移行するときに、これを本番環境で機能させたいと考えています。そして、PropertyFileSnitchを使用することを考えると:

Cassandraクラスターにレイアウトを要求するにはどうすればよいですか?(砲撃なしでnodetool ring

具体的には、NetworkTopologyStrategyを使用するときに、戦略オプションの正しい設定でキースペースを作成または更新できるように、データセンターの名前を知る必要があります。データセンターごとに3つのコピーが必要です。一部の環境には1つあり、いくつかには2つありますが、最終的には本番環境にはさらに多くの環境があります。

クラスタレイアウトに関する情報を提供するCQLまたはThrift呼び出しはありますか?

さまざまなドキュメントセットのいくつかの目次を調べて、少しググった。nodetoolコードを掘り下げる前に、ここで質問すると思いました。

4

2 に答える 2

4

HectorまたはAstyanaxがこれをどのように公開するかはわかりませんが、基本的なThriftメソッドdescribeRing(keyspace)で探しているものが得られるはずです。そこに含まれる情報の一部は、次のEndpointDetailsような構造体です。

endpoint_details=[EndpointDetails(datacenter='datacenter1', host='127.0.0.1', rack='rack1')]

そのメソッドの残りの結果に加えて、クラスター内の各ノードのトークン、DC、ラックなどを把握できるはずです。

Javaクライアントを使用しているので、JMXメソッド(nodetoolが使用する)のいくつかを使用して、クラスターのより選択された部分を記述することもできます。たとえば、snitch mbean("org.apache.cassandra.db:type=EndpointSnitchInfo")、具体的にはgetDatacenter(ip)andgetRack(ip)メソッドを見ることができます。

于 2012-10-20T19:30:25.850 に答える
0

別のオプション(間接的な回答)は、PlayOrmが行っていることを実行でき、すべての作成CFがあなたを通過し、必要なデータの一部を保存して、自分のデータをクエリできるようにすることです。これは、他のチームとあなたが持っていたものを意味します。すべての情報がそこにあるように、同じ仲買人を通過する方が良いです。まあ、おそらくあなたが欲しくないのですが、他の潜在的な解決策について考えさせるためのアイデアです。

于 2012-10-19T21:31:59.927 に答える