I have a two-node cassandra cluster when I try to cqlsh the node it returns
ubuntu@ip-172-31-47-96:~$ cqlsh
Connection error: ('Unable to connect to any servers', {'127.0.0.1:9042': ConnectionRefusedError(111, "Tried connecting to [('127.0.0.1', 9042)]. Last error: Connection refused")})
and when I add the IPv4 address of the node it works
ubuntu@ip-172-31-47-96:~$ cqlsh 172.31.47.96
Connected to Cassandra Cluster at 172.31.47.96:9042
[cqlsh 6.1.0 | Cassandra 4.1.3 | CQL spec 3.4.6 | Native protocol v5]
Use HELP for help.
cqlsh>
is this normal ? the listen address is set to the private IPv4, the rpc address was set the same as the listen address but I changed it to 0.0.0.0 and added broadcast address the private IPv4 and the problem persists
For nodes which have both private and public IP addresses, you just need to set:
You only need to set the
broadcast_addressto the node's public IP if there are nodes in another region so nodes can talk to each other across the WAN on EC2 (I'm assuming you're using EC2 instances on AWS here as an example). This means that you need to rollback all the other properties you configured.The
listen_addressis used for internode communication (gossip on port7000) which is why it's set to the private IP.Apps/clients (
cqlshis just another client!) connects to the nodes on therpc_addressso it needs to be set to an IP that is publicly accessible.