Personally I wouldn't bother with a VPN.  You can limit access to a group
of servers easily via security groups and not have a single point of
failure.  I wrote a utility to manage this.  If you're bringing up a new
VPC + Cassandra servers every day, you can trivially apply a set of rules
to your VPC:
http://rustyrazorblade.com/2014/06/an-introduction-to-roadhouse/




On Tue, Oct 6, 2015 at 10:30 AM Gene <gh5...@gmail.com> wrote:

> Rather than using public IPs on the Cassandra nodes at all I would set up
> a VPN.
>
> 1. Make sure all Cassandra nodes are on the same private network with
> static IPs
> 2. Set up a new micro instance with a static public IP, make sure it has a
> static IP on the private network as well
> 3. Install OpenVPN on the new micro instance, configure it to tunnel
> traffic to that private network
> 4. Configure your cassandra nodes to permit access from this instance
> 5. Configure your workstation to make a VPN connection and use the static,
> private IPs of the cassandra nodes for your client connectivity
>
> -Gene
>
>
> On Sun, Oct 4, 2015 at 5: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>
>> 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