-
Notifications
You must be signed in to change notification settings - Fork 885
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Add SubnetAddressTranslator #2013
base: 4.x
Are you sure you want to change the base?
Conversation
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Is there any additional documentation I should update with this change?
...n/java/com/datastax/oss/driver/internal/core/addresstranslation/SubnetAddressTranslator.java
Outdated
Show resolved
Hide resolved
...n/java/com/datastax/oss/driver/internal/core/addresstranslation/SubnetAddressTranslator.java
Outdated
Show resolved
Hide resolved
...n/java/com/datastax/oss/driver/internal/core/addresstranslation/SubnetAddressTranslator.java
Show resolved
Hide resolved
...n/java/com/datastax/oss/driver/internal/core/addresstranslation/SubnetAddressTranslator.java
Show resolved
Hide resolved
...n/java/com/datastax/oss/driver/internal/core/addresstranslation/SubnetAddressTranslator.java
Show resolved
Hide resolved
...n/java/com/datastax/oss/driver/internal/core/addresstranslation/SubnetAddressTranslator.java
Outdated
Show resolved
Hide resolved
...n/java/com/datastax/oss/driver/internal/core/addresstranslation/SubnetAddressTranslator.java
Show resolved
Hide resolved
...n/java/com/datastax/oss/driver/internal/core/addresstranslation/SubnetAddressTranslator.java
Show resolved
Hide resolved
...n/java/com/datastax/oss/driver/internal/core/addresstranslation/SubnetAddressTranslator.java
Outdated
Show resolved
Hide resolved
...n/java/com/datastax/oss/driver/internal/core/addresstranslation/SubnetAddressTranslator.java
Outdated
Show resolved
Hide resolved
...n/java/com/datastax/oss/driver/internal/core/addresstranslation/SubnetAddressTranslator.java
Show resolved
Hide resolved
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Excellent work @jahstreet, thank you! Have some suggestions, but I'm +1 either way.
# default-address = "cassandra.datacenter1.com:9042" | ||
# Whether to resolve the addresses once on initialization (if true) or on each node (re-)connection (if false). | ||
# If not configured, defaults to false. | ||
# resolve-addresses = false |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
👍 while resolve-contact-points
defaults to true
, I was thinking about whether we should do the same here, but I think you probably will generally use a DNS name that might change its backing IPs from time to time, so makes sense for this to be false
. Was that what you were thinking as well?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
100%, I expect proxy to have at least 2 replicas eligible for "periodic" restarts, that was the intuition to decide here.
...va/com/datastax/oss/driver/internal/core/addresstranslation/SubnetAddressTranslatorTest.java
Show resolved
Hide resolved
...n/java/com/datastax/oss/driver/internal/core/addresstranslation/SubnetAddressTranslator.java
Show resolved
Hide resolved
Thanks! I will push a commit with annotations till Monday morning. |
When running Cassandra in a private network and accessing it from outside of that private network via some kind of proxy, we have an option to use FixedHostNameAddressTranslator. But when we want to set it up in a HA way and have more control over latencies in multi-datacenter deployments, that is not enough.
This PR proposes a SubnetAddressTranslator, which translates Cassandra node IP addresses based on the match to the configured subnet IP range (CIDR notation). The assumption is that each Cassandra datacenter nodes belong to different subnets not having intersecting IP ranges, which is the usual configuration for multi-DC Kubernetes and K8ssandra, for example.