Connect to cassandra cluster deployed on GCP
I have a 3 Node cluster running on GCP in Kubernetes. I am able to forward the port and connect with my DB Tool to the cluster:
$ kubectl port-forward elassandra-0 9042
When I try to connect to the cassandra cluster from my Spring Boot application, I get the following error:
2018-11-14 17:43:36,339 INFO [5914] [localhost-startStop-1] c.d.d.c.Cluster [Cluster.java:1587] New Cassandra host /10.4.3.3:9042 added
2018-11-14 17:43:36,339 INFO [5914] [localhost-startStop-1] c.d.d.c.Cluster [Cluster.java:1587] New Cassandra host /10.4.2.4:9042 added
2018-11-14 17:43:36,340 INFO [5915] [localhost-startStop-1] c.d.d.c.Cluster [Cluster.java:1587] New Cassandra host /127.0.0.1:9042 added
2018-11-14 17:43:41,391 WARN [10966] [cluster1-nio-worker-2] c.d.d.c.HostConnectionPool [HostConnectionPool.java:184] Error creating connection to /10.4.2.4:9042
com.datastax.driver.core.exceptions.TransportException: [/10.4.2.4:9042] Cannot connect
at com.datastax.driver.core.Connection$1.operationComplete(Connection.java:167)
at com.datastax.driver.core.Connection$1.operationComplete(Connection.java:150)
at io.netty.util.concurrent.DefaultPromise.notifyListener0(DefaultPromise.java:511)
at io.netty.util.concurrent.DefaultPromise.notifyListeners0(DefaultPromise.java:504)
at io.netty.util.concurrent.DefaultPromise.notifyListenersNow(DefaultPromise.java:483)
at io.netty.util.concurrent.DefaultPromise.notifyListeners(DefaultPromise.java:424)
at io.netty.util.concurrent.DefaultPromise.tryFailure(DefaultPromise.java:121)
I am trying to connect to 127.0.0.1:9042
, the other hosts are being pulled from the cluster by the spring-data framework.
What am I doing wrong here?
Thanks.
cassandra kubernetes google-cloud-platform spring-data-cassandra
add a comment |
I have a 3 Node cluster running on GCP in Kubernetes. I am able to forward the port and connect with my DB Tool to the cluster:
$ kubectl port-forward elassandra-0 9042
When I try to connect to the cassandra cluster from my Spring Boot application, I get the following error:
2018-11-14 17:43:36,339 INFO [5914] [localhost-startStop-1] c.d.d.c.Cluster [Cluster.java:1587] New Cassandra host /10.4.3.3:9042 added
2018-11-14 17:43:36,339 INFO [5914] [localhost-startStop-1] c.d.d.c.Cluster [Cluster.java:1587] New Cassandra host /10.4.2.4:9042 added
2018-11-14 17:43:36,340 INFO [5915] [localhost-startStop-1] c.d.d.c.Cluster [Cluster.java:1587] New Cassandra host /127.0.0.1:9042 added
2018-11-14 17:43:41,391 WARN [10966] [cluster1-nio-worker-2] c.d.d.c.HostConnectionPool [HostConnectionPool.java:184] Error creating connection to /10.4.2.4:9042
com.datastax.driver.core.exceptions.TransportException: [/10.4.2.4:9042] Cannot connect
at com.datastax.driver.core.Connection$1.operationComplete(Connection.java:167)
at com.datastax.driver.core.Connection$1.operationComplete(Connection.java:150)
at io.netty.util.concurrent.DefaultPromise.notifyListener0(DefaultPromise.java:511)
at io.netty.util.concurrent.DefaultPromise.notifyListeners0(DefaultPromise.java:504)
at io.netty.util.concurrent.DefaultPromise.notifyListenersNow(DefaultPromise.java:483)
at io.netty.util.concurrent.DefaultPromise.notifyListeners(DefaultPromise.java:424)
at io.netty.util.concurrent.DefaultPromise.tryFailure(DefaultPromise.java:121)
I am trying to connect to 127.0.0.1:9042
, the other hosts are being pulled from the cluster by the spring-data framework.
What am I doing wrong here?
Thanks.
cassandra kubernetes google-cloud-platform spring-data-cassandra
Your app is running in Kubernetes?
– Rico
Nov 14 '18 at 18:06
No. Local connect running on kubernetes (ClusteIP: none) works fine. I´m trying to find a way to connect from outside. For example for debugging puposes. Its connecting to the specified localhost with the portforwarding, but then the hosts returns the other 2 internal IP adresses, which cannot be directly reached from outside.
– Alex Tbk
Nov 14 '18 at 18:19
add a comment |
I have a 3 Node cluster running on GCP in Kubernetes. I am able to forward the port and connect with my DB Tool to the cluster:
$ kubectl port-forward elassandra-0 9042
When I try to connect to the cassandra cluster from my Spring Boot application, I get the following error:
2018-11-14 17:43:36,339 INFO [5914] [localhost-startStop-1] c.d.d.c.Cluster [Cluster.java:1587] New Cassandra host /10.4.3.3:9042 added
2018-11-14 17:43:36,339 INFO [5914] [localhost-startStop-1] c.d.d.c.Cluster [Cluster.java:1587] New Cassandra host /10.4.2.4:9042 added
2018-11-14 17:43:36,340 INFO [5915] [localhost-startStop-1] c.d.d.c.Cluster [Cluster.java:1587] New Cassandra host /127.0.0.1:9042 added
2018-11-14 17:43:41,391 WARN [10966] [cluster1-nio-worker-2] c.d.d.c.HostConnectionPool [HostConnectionPool.java:184] Error creating connection to /10.4.2.4:9042
com.datastax.driver.core.exceptions.TransportException: [/10.4.2.4:9042] Cannot connect
at com.datastax.driver.core.Connection$1.operationComplete(Connection.java:167)
at com.datastax.driver.core.Connection$1.operationComplete(Connection.java:150)
at io.netty.util.concurrent.DefaultPromise.notifyListener0(DefaultPromise.java:511)
at io.netty.util.concurrent.DefaultPromise.notifyListeners0(DefaultPromise.java:504)
at io.netty.util.concurrent.DefaultPromise.notifyListenersNow(DefaultPromise.java:483)
at io.netty.util.concurrent.DefaultPromise.notifyListeners(DefaultPromise.java:424)
at io.netty.util.concurrent.DefaultPromise.tryFailure(DefaultPromise.java:121)
I am trying to connect to 127.0.0.1:9042
, the other hosts are being pulled from the cluster by the spring-data framework.
What am I doing wrong here?
Thanks.
cassandra kubernetes google-cloud-platform spring-data-cassandra
I have a 3 Node cluster running on GCP in Kubernetes. I am able to forward the port and connect with my DB Tool to the cluster:
$ kubectl port-forward elassandra-0 9042
When I try to connect to the cassandra cluster from my Spring Boot application, I get the following error:
2018-11-14 17:43:36,339 INFO [5914] [localhost-startStop-1] c.d.d.c.Cluster [Cluster.java:1587] New Cassandra host /10.4.3.3:9042 added
2018-11-14 17:43:36,339 INFO [5914] [localhost-startStop-1] c.d.d.c.Cluster [Cluster.java:1587] New Cassandra host /10.4.2.4:9042 added
2018-11-14 17:43:36,340 INFO [5915] [localhost-startStop-1] c.d.d.c.Cluster [Cluster.java:1587] New Cassandra host /127.0.0.1:9042 added
2018-11-14 17:43:41,391 WARN [10966] [cluster1-nio-worker-2] c.d.d.c.HostConnectionPool [HostConnectionPool.java:184] Error creating connection to /10.4.2.4:9042
com.datastax.driver.core.exceptions.TransportException: [/10.4.2.4:9042] Cannot connect
at com.datastax.driver.core.Connection$1.operationComplete(Connection.java:167)
at com.datastax.driver.core.Connection$1.operationComplete(Connection.java:150)
at io.netty.util.concurrent.DefaultPromise.notifyListener0(DefaultPromise.java:511)
at io.netty.util.concurrent.DefaultPromise.notifyListeners0(DefaultPromise.java:504)
at io.netty.util.concurrent.DefaultPromise.notifyListenersNow(DefaultPromise.java:483)
at io.netty.util.concurrent.DefaultPromise.notifyListeners(DefaultPromise.java:424)
at io.netty.util.concurrent.DefaultPromise.tryFailure(DefaultPromise.java:121)
I am trying to connect to 127.0.0.1:9042
, the other hosts are being pulled from the cluster by the spring-data framework.
What am I doing wrong here?
Thanks.
cassandra kubernetes google-cloud-platform spring-data-cassandra
cassandra kubernetes google-cloud-platform spring-data-cassandra
edited Nov 14 '18 at 18:29
Alex Tbk
asked Nov 14 '18 at 16:50
Alex TbkAlex Tbk
534522
534522
Your app is running in Kubernetes?
– Rico
Nov 14 '18 at 18:06
No. Local connect running on kubernetes (ClusteIP: none) works fine. I´m trying to find a way to connect from outside. For example for debugging puposes. Its connecting to the specified localhost with the portforwarding, but then the hosts returns the other 2 internal IP adresses, which cannot be directly reached from outside.
– Alex Tbk
Nov 14 '18 at 18:19
add a comment |
Your app is running in Kubernetes?
– Rico
Nov 14 '18 at 18:06
No. Local connect running on kubernetes (ClusteIP: none) works fine. I´m trying to find a way to connect from outside. For example for debugging puposes. Its connecting to the specified localhost with the portforwarding, but then the hosts returns the other 2 internal IP adresses, which cannot be directly reached from outside.
– Alex Tbk
Nov 14 '18 at 18:19
Your app is running in Kubernetes?
– Rico
Nov 14 '18 at 18:06
Your app is running in Kubernetes?
– Rico
Nov 14 '18 at 18:06
No. Local connect running on kubernetes (ClusteIP: none) works fine. I´m trying to find a way to connect from outside. For example for debugging puposes. Its connecting to the specified localhost with the portforwarding, but then the hosts returns the other 2 internal IP adresses, which cannot be directly reached from outside.
– Alex Tbk
Nov 14 '18 at 18:19
No. Local connect running on kubernetes (ClusteIP: none) works fine. I´m trying to find a way to connect from outside. For example for debugging puposes. Its connecting to the specified localhost with the portforwarding, but then the hosts returns the other 2 internal IP adresses, which cannot be directly reached from outside.
– Alex Tbk
Nov 14 '18 at 18:19
add a comment |
2 Answers
2
active
oldest
votes
Answering own question:
You need to specify custom adress resolution driver side as described here:
https://docs.datastax.com/en/developer/java-driver/2.1/manual/address_resolution/
In detail when you want to use only one node:
public class MyAdressTranslator implements AddressTranslator {
@Override
public void init(Cluster cluster) {}
public InetSocketAddress translate(InetSocketAddress address) {
return new InetSocketAddress("127.0.0.1", 9042);
}
@Override
public void close() {}
}
add a comment |
To add more details since you have automatic address resolution enabled, your client it's trying to add contact points to all the nodes in your cluster:
10.4.3.3:9042
10.4.2.4:9042
127.0.0.1:9042
However, the top 2 nodes cannot be found from your localhost because they are not being proxied to. If you added them as proxies it wouldn't work either because you can't proxy on the same port from your laptop. The solution like @AlexTbk mentioned is to use a single contact point but specifying address resolution on the client with the single 127.0.0.1:9042
contact point.
add a comment |
Your Answer
StackExchange.ifUsing("editor", function () {
StackExchange.using("externalEditor", function () {
StackExchange.using("snippets", function () {
StackExchange.snippets.init();
});
});
}, "code-snippets");
StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "1"
};
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function() {
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled) {
StackExchange.using("snippets", function() {
createEditor();
});
}
else {
createEditor();
}
});
function createEditor() {
StackExchange.prepareEditor({
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader: {
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
},
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
});
}
});
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53305127%2fconnect-to-cassandra-cluster-deployed-on-gcp%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
2 Answers
2
active
oldest
votes
2 Answers
2
active
oldest
votes
active
oldest
votes
active
oldest
votes
Answering own question:
You need to specify custom adress resolution driver side as described here:
https://docs.datastax.com/en/developer/java-driver/2.1/manual/address_resolution/
In detail when you want to use only one node:
public class MyAdressTranslator implements AddressTranslator {
@Override
public void init(Cluster cluster) {}
public InetSocketAddress translate(InetSocketAddress address) {
return new InetSocketAddress("127.0.0.1", 9042);
}
@Override
public void close() {}
}
add a comment |
Answering own question:
You need to specify custom adress resolution driver side as described here:
https://docs.datastax.com/en/developer/java-driver/2.1/manual/address_resolution/
In detail when you want to use only one node:
public class MyAdressTranslator implements AddressTranslator {
@Override
public void init(Cluster cluster) {}
public InetSocketAddress translate(InetSocketAddress address) {
return new InetSocketAddress("127.0.0.1", 9042);
}
@Override
public void close() {}
}
add a comment |
Answering own question:
You need to specify custom adress resolution driver side as described here:
https://docs.datastax.com/en/developer/java-driver/2.1/manual/address_resolution/
In detail when you want to use only one node:
public class MyAdressTranslator implements AddressTranslator {
@Override
public void init(Cluster cluster) {}
public InetSocketAddress translate(InetSocketAddress address) {
return new InetSocketAddress("127.0.0.1", 9042);
}
@Override
public void close() {}
}
Answering own question:
You need to specify custom adress resolution driver side as described here:
https://docs.datastax.com/en/developer/java-driver/2.1/manual/address_resolution/
In detail when you want to use only one node:
public class MyAdressTranslator implements AddressTranslator {
@Override
public void init(Cluster cluster) {}
public InetSocketAddress translate(InetSocketAddress address) {
return new InetSocketAddress("127.0.0.1", 9042);
}
@Override
public void close() {}
}
answered Nov 14 '18 at 18:42
Alex TbkAlex Tbk
534522
534522
add a comment |
add a comment |
To add more details since you have automatic address resolution enabled, your client it's trying to add contact points to all the nodes in your cluster:
10.4.3.3:9042
10.4.2.4:9042
127.0.0.1:9042
However, the top 2 nodes cannot be found from your localhost because they are not being proxied to. If you added them as proxies it wouldn't work either because you can't proxy on the same port from your laptop. The solution like @AlexTbk mentioned is to use a single contact point but specifying address resolution on the client with the single 127.0.0.1:9042
contact point.
add a comment |
To add more details since you have automatic address resolution enabled, your client it's trying to add contact points to all the nodes in your cluster:
10.4.3.3:9042
10.4.2.4:9042
127.0.0.1:9042
However, the top 2 nodes cannot be found from your localhost because they are not being proxied to. If you added them as proxies it wouldn't work either because you can't proxy on the same port from your laptop. The solution like @AlexTbk mentioned is to use a single contact point but specifying address resolution on the client with the single 127.0.0.1:9042
contact point.
add a comment |
To add more details since you have automatic address resolution enabled, your client it's trying to add contact points to all the nodes in your cluster:
10.4.3.3:9042
10.4.2.4:9042
127.0.0.1:9042
However, the top 2 nodes cannot be found from your localhost because they are not being proxied to. If you added them as proxies it wouldn't work either because you can't proxy on the same port from your laptop. The solution like @AlexTbk mentioned is to use a single contact point but specifying address resolution on the client with the single 127.0.0.1:9042
contact point.
To add more details since you have automatic address resolution enabled, your client it's trying to add contact points to all the nodes in your cluster:
10.4.3.3:9042
10.4.2.4:9042
127.0.0.1:9042
However, the top 2 nodes cannot be found from your localhost because they are not being proxied to. If you added them as proxies it wouldn't work either because you can't proxy on the same port from your laptop. The solution like @AlexTbk mentioned is to use a single contact point but specifying address resolution on the client with the single 127.0.0.1:9042
contact point.
answered Nov 14 '18 at 18:47
RicoRico
28k94966
28k94966
add a comment |
add a comment |
Thanks for contributing an answer to Stack Overflow!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53305127%2fconnect-to-cassandra-cluster-deployed-on-gcp%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Your app is running in Kubernetes?
– Rico
Nov 14 '18 at 18:06
No. Local connect running on kubernetes (ClusteIP: none) works fine. I´m trying to find a way to connect from outside. For example for debugging puposes. Its connecting to the specified localhost with the portforwarding, but then the hosts returns the other 2 internal IP adresses, which cannot be directly reached from outside.
– Alex Tbk
Nov 14 '18 at 18:19