You've been talking about configuring static, public IPs.  Public IPs are
only needed if you want to connect to your Cassandra servers from a public
network aka not from the same datacenter.

AWS instances don't get a new IP on rebooting.  The instance doesn't
shutdown when you tell a server to reboot, it just keeps running & keeps
the same IP.

You can connect to the internal address (192.168.x.x) or (10.x.x.x.) if
you're on the same network.  That's not a public IP.  You don't have to
hard code an address in your yaml, you can just the rpc_interface and set
it to eth0 (or whatever AWS uses by default for server's NIC).

Also, you know you can control IP addresses in a VPC, right?

On Sun, Oct 4, 2015 at 8:31 PM Renato Perini <renato.per...@gmail.com>
wrote:

> 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 <renato.per...@gmail.com>
> 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
>> http://169.254.169.254/latest/meta-data/public-ipv4`, 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 <renato.per...@gmail.com>
>> 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 <renato.per...@gmail.com>
>>> 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.
>>>>
>>>
>>>
>>
>

Reply via email to