docker - Not able to connect to cassandra from host machine -


i have configured cassandra node on mac book pro using docker follows

vboxmanage modifyvm "default" --natpf1 "tcp-port7191,tcp,,7191,,7191" vboxmanage modifyvm "default" --natpf1 "tcp-port7000,tcp,,7000,,7000" vboxmanage modifyvm "default" --natpf1 "tcp-port7001,tcp,,7001,,7001" vboxmanage modifyvm "default" --natpf1 "tcp-port9160,tcp,,7160,,7160" vboxmanage modifyvm "default" --natpf1 "tcp-port9042,tcp,,9042,,9042" 

(restart machine)

docker run --name c1 -v /users/myprojects/scripts/:/script -d cassandra:latest -p "7191:7191" -p "7000:7000" -p "7001:7001" -p "9160:9160" -p "9042:9042" 

i can do

docker exec -it c1 cqlsh 

it says

connected test cluster @ 127.0.0.1:9042. [cqlsh 5.0.1 | cassandra 3.0.1 | cql spec 3.3.1 | native protocol v4] use help. 

now ip address of virtual box vm using

docker-machine env default 

i can see ip address of 192.168.99.100

but when run java program connect same cassandra instance using ip address above. error

    00:00:56.611 [cluster1-nio-worker-0] debug com.datastax.driver.core.connection - connection[/192.168.99.100:9042-1, inflight=0, closed=false] error connecting /192.168.99.100:9042 (connection refused: /192.168.99.100:9042) 00:00:56.615 [cluster1-nio-worker-0] debug com.datastax.driver.core.host.states - defuncting connection[/192.168.99.100:9042-1, inflight=0, closed=false] because: [/192.168.99.100] cannot connect 00:00:56.616 [cluster1-nio-worker-0] debug com.datastax.driver.core.connection - connection[/192.168.99.100:9042-1, inflight=0, closed=true] closing connection 00:00:56.617 [cluster1-nio-worker-0] debug com.datastax.driver.core.host.states - [/192.168.99.100:9042] preventing new connections next 1000 ms 00:00:56.617 [cluster1-nio-worker-0] debug com.datastax.driver.core.host.states - [/192.168.99.100:9042] connection[/192.168.99.100:9042-1, inflight=0, closed=true] failed, remaining = 0 00:00:56.624 [run-main-0] debug c.d.driver.core.controlconnection - [control connection] error on /192.168.99.100:9042 connection, no more host try com.datastax.driver.core.exceptions.transportexception: [/192.168.99.100] cannot connect     @ com.datastax.driver.core.connection$1.operationcomplete(connection.java:157) ~[cassandra-driver-core-3.0.0.jar:na]     @ com.datastax.driver.core.connection$1.operationcomplete(connection.java:140) ~[cassandra-driver-core-3.0.0.jar:na]     @ io.netty.util.concurrent.defaultpromise.notifylistener0(defaultpromise.java:680) ~[netty-common-4.0.33.final.jar:4.0.33.final]     @ io.netty.util.concurrent.defaultpromise.notifylisteners0(defaultpromise.java:603) ~[netty-common-4.0.33.final.jar:4.0.33.final]     @ io.netty.util.concurrent.defaultpromise.notifylisteners(defaultpromise.java:563) ~[netty-common-4.0.33.final.jar:4.0.33.final]     @ io.netty.util.concurrent.defaultpromise.tryfailure(defaultpromise.java:424) ~[netty-common-4.0.33.final.jar:4.0.33.final]     @ io.netty.channel.nio.abstractniochannel$abstractniounsafe.fulfillconnectpromise(abstractniochannel.java:276) ~[netty-transport-4.0.33.final.jar:4.0.33.final]     @ io.netty.channel.nio.abstractniochannel$abstractniounsafe.finishconnect(abstractniochannel.java:292) ~[netty-transport-4.0.33.final.jar:4.0.33.final]     @ io.netty.channel.nio.nioeventloop.processselectedkey(nioeventloop.java:528) ~[netty-transport-4.0.33.final.jar:4.0.33.final]     @ io.netty.channel.nio.nioeventloop.processselectedkeysoptimized(nioeventloop.java:468) ~[netty-transport-4.0.33.final.jar:4.0.33.final]     @ io.netty.channel.nio.nioeventloop.processselectedkeys(nioeventloop.java:382) ~[netty-transport-4.0.33.final.jar:4.0.33.final]     @ io.netty.channel.nio.nioeventloop.run(nioeventloop.java:354) ~[netty-transport-4.0.33.final.jar:4.0.33.final]     @ io.netty.util.concurrent.singlethreadeventexecutor$2.run(singlethreadeventexecutor.java:112) ~[netty-common-4.0.33.final.jar:4.0.33.final]     @ java.lang.thread.run(thread.java:745) ~[na:1.7.0_79] caused by: java.net.connectexception: connection refused: /192.168.99.100:9042     @ sun.nio.ch.socketchannelimpl.checkconnect(native method) ~[na:1.7.0_79]     @ sun.nio.ch.socketchannelimpl.finishconnect(socketchannelimpl.java:739) ~[na:1.7.0_79]     @ io.netty.channel.socket.nio.niosocketchannel.dofinishconnect(niosocketchannel.java:224) ~[netty-transport-4.0.33.final.jar:4.0.33.final]     @ io.netty.channel.nio.abstractniochannel$abstractniounsafe.finishconnect(abstractniochannel.java:289) ~[netty-transport-4.0.33.final.jar:4.0.33.final]     ... 6 common frames omitted 00:00:56.625 [run-main-0] debug com.datastax.driver.core.cluster - shutting down [error] (run-main-0) java.lang.exceptionininitializererror java.lang.exceptionininitializererror     @ com.abhi.connector.cassandraconnector$class.$init$(cassandraconnector.scala:8)     @ com.abhi.models.movies$.<init>(movies.scala:25)     @ com.abhi.models.movies$.<clinit>(movies.scala)     @ com.abhi.movielensdatapreperation$$anonfun$storeincassandra$1.apply(movielensdatapreperation.scala:55)     @ com.abhi.movielensdatapreperation$$anonfun$storeincassandra$1.apply(movielensdatapreperation.scala:55)     @ scala.collection.immutable.list.foreach(list.scala:381)     @ com.abhi.movielensdatapreperation$.storeincassandra(movielensdatapreperation.scala:55)     @ com.abhi.movielensdatapreperation$.main(movielensdatapreperation.scala:51)     @ com.abhi.movielensdatapreperation.main(movielensdatapreperation.scala)     @ sun.reflect.nativemethodaccessorimpl.invoke0(native method)     @ sun.reflect.nativemethodaccessorimpl.invoke(nativemethodaccessorimpl.java:57)     @ sun.reflect.delegatingmethodaccessorimpl.invoke(delegatingmethodaccessorimpl.java:43)     @ java.lang.reflect.method.invoke(method.java:606) caused by: com.datastax.driver.core.exceptions.nohostavailableexception: host(s) tried query failed (tried: /192.168.99.100:9042 (com.datastax.driver.core.exceptions.transportexception: [/192.168.99.100] cannot connect))     @ com.datastax.driver.core.controlconnection.reconnectinternal(controlconnection.java:231)     @ com.datastax.driver.core.controlconnection.connect(controlconnection.java:77)     @ com.datastax.driver.core.cluster$manager.init(cluster.java:1414)     @ com.datastax.driver.core.cluster.init(cluster.java:162)     @ com.datastax.driver.core.cluster.connectasync(cluster.java:333)     @ com.datastax.driver.core.cluster.connect(cluster.java:283)     @ com.abhi.connector.connector$.<init>(cassandraconnector.scala:22)     @ com.abhi.connector.connector$.<clinit>(cassandraconnector.scala)     @ com.abhi.connector.cassandraconnector$class.$init$(cassandraconnector.scala:8)     @ com.abhi.models.movies$.<init>(movies.scala:25)     @ com.abhi.models.movies$.<clinit>(movies.scala)     @ com.abhi.movielensdatapreperation$$anonfun$storeincassandra$1.apply(movielensdatapreperation.scala:55)     @ com.abhi.movielensdatapreperation$$anonfun$storeincassandra$1.apply(movielensdatapreperation.scala:55)     @ scala.collection.immutable.list.foreach(list.scala:381)     @ com.abhi.movielensdatapreperation$.storeincassandra(movielensdatapreperation.scala:55)     @ com.abhi.movielensdatapreperation$.main(movielensdatapreperation.scala:51)     @ com.abhi.movielensdatapreperation.main(movielensdatapreperation.scala)     @ sun.reflect.nativemethodaccessorimpl.invoke0(native method)     @ sun.reflect.nativemethodaccessorimpl.invoke(nativemethodaccessorimpl.java:57)     @ sun.reflect.delegatingmethodaccessorimpl.invoke(delegatingmethodaccessorimpl.java:43)     @ java.lang.reflect.method.invoke(method.java:606) 

this code configure java connection

cluster.builder()   .addcontactpoints("192.168.99.100").withport(9042)   .build() 

edit: replaced above ip address ip address of docker guest vm... did not resolve issue.

i able solve problem using cassandra_broadcast_address when creating docker container

this command used

docker run --name c1 -v /users/myprojects/scripts/:/script -d -p "7191:7191"  -p "7000:7000" -p "7001:7001" -p "9160:9160" -p "9042:9042" -e  cassandra_broadcast_address=192.168.99.100 cassandra:latest 

after creating container this. able connect scala application code

  val keyspace: keyspace = new keyspace("foo")    val cluster =     cluster.builder()       .addcontactpoint("192.168.99.100").withport(9042)       .build()    cluster.getconfiguration().getsocketoptions().setreadtimeoutmillis(100000);   val session: session = cluster.connect(keyspace.name) 

Comments

Popular posts from this blog

c# - How Configure Devart dotConnect for SQLite Code First? -

java - Copying object fields -

c++ - Clear the memory after returning a vector in a function -