Constance Eustace created CASSANDRA-15068:
---------------------------------------------

             Summary: EC2MRS - cassandra-11356 patch seems to break useful 
broadcast_rpc_address defaulting from 2.1
                 Key: CASSANDRA-15068
                 URL: https://issues.apache.org/jira/browse/CASSANDRA-15068
             Project: Cassandra
          Issue Type: Bug
          Components: Cluster/Gossip
            Reporter: Constance Eustace


We have a couple clusters that are using Ec2MultiRegionSnitch that are 2.1.x 
that we are attempting to upgrade. 

Our 2.1.x yamls have internal IPs set for broadcast_rpc_address.

Source of EC2MRS for 2.1: 
[https://github.com/apache/cassandra/blob/cassandra-2.1/src/java/org/apache/cassandra/locator/Ec2MultiRegionSnitch.java]

The code in 2.1.x EC2MRS seems to not care what you set in the yaml, and 
overrides to: 

DatabaseDescriptor.setBroadcastAddress(localPublicAddress);  
DatabaseDescriptor.setBroadcastRpcAddress(localPublicAddress);

The code in 2.2.x EC2MRS 
([https://github.com/apache/cassandra/blob/cassandra-2.2/src/java/org/apache/cassandra/locator/Ec2MultiRegionSnitch.java|https://github.com/apache/cassandra/blob/cassandra-2.1/src/java/org/apache/cassandra/locator/Ec2MultiRegionSnitch.java])
 ONLY does this is if the broadcast_rpc_address is somehow null.

Our rpc_address is set to 0.0.0.0

But cassandra will not startup with rpc_address set to 0.0.0.0 and 
broadcast_rpc_address commetned out, empty, or explicitly null. 

It would APPEAR in the code that while cassandra normally doesn't like this 
being blank, for EC2MRS and it's autodetection of private and public IPs using 
aws metadata urls, this isn't a huge deal. 

So it would seem that what people have been doing is setting the global ip for 
broadcast_rpc_address in the yaml, but if the aws instance is hardware 
rebooted/replaced, the global IP changes and we need to edit the yaml. That 
sucks, whereas in 2.1 this was not necessary.

If we blank the rpc_address rather than use 0.0.0.0, then cqlsh does not work 
with localhost and that breaks cluster management tooling we have, and it might 
not be correct.

I understand this was changed to accomodate CASSANDRA-11356. 

It would seem we could reenable beneficial 2.1.x behavior of EC2MRS by either 
providing a exception for the usual startup of cassandra which complains if 
broadcast_rpc_address is not set and rpc_address is 0.0.0.0, or maybe provide a 
magic value for broadcast_rpc_address to overwrite, or... I don't know.

Or is there some magic yaml configuration that will allow cassandra to startup 
but allow the autoset of broadcast_address AND broadcast_rpc_address to the 
metadata-detected public addresses, rpc_address set to 0.0.0.0, and the 
listen_address to the internal VPC address?

Or am I missing something fundamental here?

We REALLY don't want to do custom builds. 

PERHAPS we could do a custom old-style implementation (EC2MRSOld) in a jar and 
use that?



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to