cassandra-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Paulo Motta (JIRA)" <j...@apache.org>
Subject [jira] [Updated] (CASSANDRA-12673) Nodes cannot see each other in multi-DC, non-EC2 environment with two-interface nodes due to outbound node-to-node connection binding to private interface
Date Fri, 11 Nov 2016 21:44:59 GMT

     [ https://issues.apache.org/jira/browse/CASSANDRA-12673?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]

Paulo Motta updated CASSANDRA-12673:
------------------------------------
    Status: Open  (was: Patch Available)

> Nodes cannot see each other in multi-DC, non-EC2 environment with two-interface nodes
due to outbound node-to-node connection binding to private interface
> ----------------------------------------------------------------------------------------------------------------------------------------------------------
>
>                 Key: CASSANDRA-12673
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-12673
>             Project: Cassandra
>          Issue Type: Improvement
>          Components: Core
>         Environment: Multi-DC, non-EC2 environment with two-interface nodes
>            Reporter: Milan Majercik
>            Priority: Minor
>             Fix For: 2.2.x
>
>
> We have a two-DC cluster in non-EC2 environment with each node containing two interfaces,
one using private addresses for intra-DC communication and the other using public addresses
for inter-DC communication. After proper configuration setup needed for this kind of environment
we observed nodes cannot see each other.
> The configuration changes made for this purpose are as follows:
> *listen_address*: bound to private interface
> *broadcast_address*: bound to public address
> *listen_on_broadcast_address*: true
> *endpoint_snitch*: GossipingPropertyFileSnitch
> *prefer_local*=true (in cassandra-rackdc.properties)
> Upon restart, cassandra node contacts other nodes with their public addresses which is
essential for making contacts to foreign data centers. After exhaustive investigation we found
cassandra binds outbound node-to-node connections to private interface (the one specified
in listen_address) that poses a problem for our environment as these data centers _do not
allow connections from private interface to public network_.
> A portion of cassandra code responsible for local binding of outbound connections can
be found in method {{org.apache.cassandra.net.OutboundTcpConnectionPool.newSocket}}:
> {code}
>             if (!Config.getOutboundBindAny())
>                 channel.bind(new InetSocketAddress(FBUtilities.getLocalAddress(), 0));
> {code}
> After we commented out these two lines and deployed cassandra.jar across the cluster,
the nodes were able to see each other and everything appears to be working fine, including
two-DC setup.
> Do you think it's possible to remove these two lines without negative consequences? Alternatively,
if the local binding serves some specific purpose of which I'm ignorant would it be possible
to make it configurable?



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Mime
View raw message