2013-06-06 10 views
6

Programowo tworzymy węzły Cassandra (automatycznie generujące yaml i używające CassandraDaemon). Idealnie byłoby, gdybyśmy mogli używać różnych portów na różnych hostach ze względu na potrzeby konfiguracji. Czy jest to możliwe (poprzez specyfikację nasion lub implementację niestandardowej klasy)? Wygląda na to, że lista nasion może zająć tylko adresy IP, a nie porty.Czy jest możliwe użycie różnych portów dla węzłów w klastrze Cassandra?

Odpowiedz

3

Po przejrzeniu odpowiedniego numeru source w kodzie sieciowym Cassandra, oczywiste jest, że nie jest to obsługiwane. W metodzie newSocket() port dla zdalnego węzła jest uzyskiwany ze statycznego DatabaseDescriptor.getSSLStoragePort() (fragment poniżej). Nie zapewnia to różnej wartości na hosta ani haka:

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

spójrz na https://github.com/pcmanus/ccm, używają one wielu instancji Kasandra na tym samym węźle. możesz zobaczyć, jak to robią.

+0

Dzięki, ale nie pytam o wiele instancji w tym samym węźle. Pytam o wystąpienia w tym samym klastrze (ale na różnych hostach) przy użyciu różnych portów. –

+0

Cóż, rozumiem, ten plik ccm uruchamia różne instancje w tym samym węźle na różnych portach, więc instancje nie kolidują z portami, a następnie umieszczają je również w tym samym klastrze. A więc nie chodzi o to, aby mieć je w tym samym węźle, ale o różnych instancjach działających na różnych portach ,,, –

+0

. Zrobiłem to, ale nie widziałem żadnych dowodów na używanie różnych portów. używają różnych adresów IP w tym samym węźle, więc nie muszą używać innych portów. –

Powiązane problemy