S. Baek
S. Baek

Reputation: 15

Remote access to cassandra 4.0.1 using docker via cqlsh

My Environment:

Docker command:

docker run --name cassandra-node-0 -p 7000:7000 -p 7001:7001 -p 7199:7199 -p 9042:9042 -p 9160:9160 -e CASSANDRA_CLUSTER_NAME=MyCluster -e CASSANDRA_ENDPOINT_SNITCH=GossipingPropertyFileSnitch -e CASSANDRA_DC=datacenter1 -e CASSANDRA_BROADCAST_ADDRESS=192.168.1.101 -d cassandra

CQLSH Command:

docker run -it -e CQLSH_HOST=$(docker inspect --format='{{ .NetworkSettings.IPAddress}}' cassandra-node-0) --name cassandra-client --entrypoint=cqlsh cassandra

I try to connect cassandra node using cqlsh where ubuntu in WSL2 in same pc.
I did not change all *.yaml file and only use Docker Env.
When I insert node's docker network ip to CQLSH_HOST, cqlsh is successfully connected node.
But, When I insert my private ip, public ip or 127.0.0.1, cqlsh is refused connection to node.
This shows the same issue when nodes from different networks connect.
I think I'm missing a setting of something Docker Env.
What settings am I missing?
[Update] I add some port fowarding rules in firewall but same issue.
[Update 2] docker ps -a result:

0.0.0.0:7000-7001->7000-7001/tcp, :::7000-7001->7000-7001/tcp, 0.0.0.0:7199->7199/tcp, :::7199->7199/tcp, 0.0.0.0:9042->9042/tcp, :::9042->9042/tcp, 0.0.0.0:9160->9160/tcp, :::9160->9160/tcp

Upvotes: 0

Views: 599

Answers (1)

Erick Ramirez
Erick Ramirez

Reputation: 16333

Try adding --hostname and --network when you run Cassandra. For example:

$ docker run --rm -d
    --name cassandra-node-0
    --hostname cassandra-node-0
    --network cassandra-node-0
    

You'll find that it's easier to connect via cqlsh by adding:

  --network cassandra-node-0
  -e CQLSH_HOST=cassandra-node-0

to your docker run command. Cheers!

Upvotes: 1

Related Questions