2017-08-18 5 views
0

私はCassandraでデータを保存したい複数のAPIを構築しようとしています。私は複数のホストを持っているかのように設計していますが、私が想定しているホストは信頼できるものと信頼できないものの2種類です。いくつかのノードにいくつかのキースペースを複製できますか?

私はホストのグループに複製されたくない特定のデータを持っていますが、残りのデータはどこにでも複製されます。

パブリックデータのノードと保護されたデータのノードを作成するだけで、信頼できるホストに2つのノードを実行する必要があり、APIとデータのやりとりの仕方が複雑になります。

私はドッカーコンテナにも構築していますが、信頼できるノードと信頼できないノードの作成/破棄が頻繁に起こることが予想されます。

必要なレプリケーション戦略を達成するためにキースペースを使用できるかどうかを知りたいです。

答えて

3

パブリックデータとプライベートデータを持つ2つのデータセンターを持つことができます。そのデータを1つ(または両方)のDCにのみレプリケートするようにキースペースレプリケーションを構成できます。 replication for NetworkTopologyStrategy

しかし、すべてのノードがゴシッププロトコルで互いにやりとりできなければならないため、クライアントアプリケーションが両方のDCに接続して読み書きを行う必要があるため、セキュリティ上の懸念があります。

おそらくSSLのセキュリティを設定してから、おそらくinternal authenticationを設定することをお勧めします。 Kerberosもサポートされていますが、これは少なくとも今必要なものに対しては複雑すぎるかもしれません。

firewall docsを調べて、ノードとクライアントの間でどのポートが使用されているかを確認し、どのポートをロックダウンするかを知ることもできます。

最後に、上記のポスターに記載されているように、ノードの破壊/作成はあまりにもしばしば良い方法ではありません。 Cassandraは実行中にクラスタを拡大/縮小できるように設計されていますが、削除/追加されるノードからのデータのストリーミングだけでなく、トークン範囲の周りをシャッフルして再均衡をとるためのコストがかかる操作です。

ノードをドッキングコンテナで実行できますが、すべて同じ物理リソースにアクセスする複数のコンテナのような操作を行わないように注意する必要があります。たとえば、CassandraはIOレイテンシに対して非常に敏感です。たとえば、同じ物理ディスクを共有する複数のコンテナがパフォーマンスの問題を引き起こす可能性があります。

+0

ありがとう、私はもう少しそれを調べます。 :) –

0

要約:できません。

あなたのデータがあなたの選択したパーティショナーと共に配布される完全なリングから、カサンドラクラスター内のすべてのノード。

cassandra内に複数のキースペースと認証と権限を持ち、信頼できるデータと信頼できないデータを別のキースペースに分割することができます。または、データを分割するための2つのクラスタを使用してください。

私の経験から、通常の日常業務としてcassandraノードを作成して破壊しようとするべきではありません。ノードの追加と削除はコストがかかり、クラスタがレプリケーションなどを維持する必要があるため、監視する必要があります。ですから、あなたのapiノードからcassandraクラスタを分割すると良いかもしれません。

+0

あなたはここでいくつかの良い点を実際に作りますが、それは明確ではありません。あなたが指摘しているように、異なるキースペースにデータを置くことができますが、それらを異なる「仮想データセンタ」に複製して、指定されたキースペースのデータとレプリカデータの配置を制御することもできます。私は、ノードの追加/削除についてあなたのコメントをエコーし​​ています。あなたはいつも何かするつもりはありません。 – markc

関連する問題