2013-06-06 10 views
6

Cassandraノードをプログラムで作成しています(yamlの自動生成とCassandraDaemonの使用)。理想的には、構成の必要性から、異なるホスト上の異なるポートを使用できるようになります。これは可能ですか(シードの指定やカスタムクラスの実装を介して)?シードリストはポートではなくIPアドレスしか取れないようです。Cassandraクラスタ内のノードに異なるポートを使用することはできますか?

答えて

3

Cassandraネットワークコードのsourceを調べたところ、これはサポートされていないことが明らかです。 newSocket()メソッドでは、リモートノードのポートは、静的DatabaseDescriptor.getSSLStoragePort()(以下の抜粋)から取得されます。これは、ホストまたはフックごとに異なる値を提供するわけではありません。

public Socket newSocket() throws IOException 
{ 
    // zero means 'bind on any available port.' 
    if (isEncryptedChannel()) 
    { 
     return SSLFactory.getSocket(DatabaseDescriptor.getEncryptionOptions(), endPoint(), DatabaseDescriptor.getSSLStoragePort(), FBUtilities.getLocalAddress(), 0); 
    } 
    else { 
     return new Socket(endPoint(), DatabaseDescriptor.getStoragePort(), FBUtilities.getLocalAddress(), 0); 
    } 
} 
2

https://github.com/pcmanus/ccmを見て、彼らは同じノード上のマルチプルのcassandraインスタンスを使用しています。あなたは彼らがそれをやっている方法を見ることができます。

+0

ありがとうございますが、私は同じノードで複数のインスタンスについて質問していません。私は別のポートを使用して、同じクラスター内の(ただし異なるホスト上の)インスタンスについて尋ねています。 –

+0

私が理解するように、このccmのものは、異なるポート上の同じノード上で異なるインスタンスを実行しているため、インスタンスがポート上で衝突しないようにし、同じクラスタに配置します。だから、同じノード上にあるということではなく、別のポートで動作している別のインスタンスを持っているということです。 –

+0

私は一見しましたが、別のポートを使用している証拠は見当たりませんでした。同じノード上で異なるIPを使用しているため、異なるポートを使用する必要はありません。 –

関連する問題