cassandra-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Renato Perini <>
Subject Re: Cassandra Configuration VS Static IPs.
Date Mon, 05 Oct 2015 00:31:08 GMT
Jonathan, I have some difficulties in understanding what you're talking 
about. A client is a program connecting to a cassandra instance. All it 
needs to know is an IP, a keyspace and a table to operate. My client is 
nothing more than a simple textual version of a program like datastax 
devcenter. No "same dc" concepts are involved for using it.
As for AWS, I'm not changing anything. The instances, as I said multiple 
times, don't have an elastic ip, so the public IP is dynamic. This means 
it changes automatically at every reboot.

Il 05/10/2015 02:22, Jonathan Haddad ha scritto:
> If your client is in the same DC, then you shouldn't use *public* ip 
> addresses.  If you're using a recent version of Cassandra you can just 
> set the listen_interface and rpc_interface to whatever network 
> interface you've got.
> If you're really changing IPs when you reboot machines (I have no idea 
> why you'd do this, AWS definitely doesn't work this way) then I think 
> you're going to hit a whole set of other issues.
> On Sun, Oct 4, 2015 at 7:10 PM Renato Perini < 
> <>> wrote:
>     Yes, the client uses the same datacenter (us-west-2).
>     Maybe I haven't explained well the situation. I'm not asking to
>     connect to nodes *without* using a static IP address, but allowing
>     Cassandra to determine the current public address at the time of
>     connection.
>     Spark, for example, uses shell scripts for configuration, so the
>     public IP (in AWS) can be assigned using the command `|curl
>|`, whatever it
>     is at the time of boot.
>     Cassandra uses a yaml file for the main configuration, so this is
>     impossibile to achieve. Basically I would like to make the client
>     connect correctly on all nodes using their public IPs without
>     being required to know them (the client would discover them
>     dynamically while connecting).
>     Il 05/10/2015 00:55, Jonathan Haddad ha scritto:
>>     So you're not running the client in the same DC as your Cassandra
>>     cluster.  In that case you'll need to be able to connect to the
>>     public address of all the nodes.  Technically you could have a
>>     whitelist and only connect to 1, I wouldn't recommend it.
>>     This is no different than any other database in that you would
>>     need a public address to be able to connect to the servers from a
>>     machine not in your datacenter.  How else would you connect to
>>     them if you don't provide access?
>>     On Sun, Oct 4, 2015 at 6:35 PM Renato Perini
>>     < <>> wrote:
>>         Seems to be not the case when connecting to my (single) data
>>         center using the java connector with a small client I have
>>         developed for testing.
>>         For the broadcast_rpc_address I have configured the local IP
>>         of the nodes. The cluster works fine and nodes communicates
>>         fairly well using their local IPs. When I connect to a node
>>         (let's say node 1) from the outside using the java driver and
>>         the node's public IP, the cluster discovery uses internal IPs
>>         for contacting other nodes, leading to (obviously) errors.
>>         As for AWS, Elastic IPs are free as long as they're
>>         associated to an instance and the machines are up 24h/7. I
>>         have to shut down the machines during the night for various
>>         reasons, so unfortunately they're not totally free for my use
>>         case.
>>         Il 05/10/2015 00:04, Jonathan Haddad ha scritto:
>>>         Public IP?  No, not required unless you're running multiple
>>>         DCs.
>>>         Where are you running a DC that IPs aren't cheap?  If you're
>>>         in AWS they're basically free (or at least the cheapest
>>>         section of your bill by far)
>>>         On Sun, Oct 4, 2015 at 5:59 PM Renato Perini
>>>         < <>>
>>>         wrote:
>>>             Is cassandra really supposed to have a static public IP
>>>             for each and
>>>             single node in the cluster?
>>>             This seems to be expensive (static IPs are nor free
>>>             neither cheap),
>>>             still the broadcast_rpc_address expects a static IP for
>>>             client
>>>             communications (load balancing, contact points, etc.)
>>>             Is there some mechanism to determine a public IP at runtime?
>>>             Basically, I have nodes (machines) with dynamic public
>>>             IPs and I cannot
>>>             embed them in the cassandra.yaml file because of their
>>>             dynamic nature
>>>             (they change at each reboot).
>>>             Any solution to this?
>>>             Thanks.

View raw message