错误会话:将池创建到/127.0.0.1:9042时出错

use*_*961 2 configuration cassandra

当我遇到这个错误时,我试图在cassandra中插入值:

15/08/14 10:21:54 INFO Cluster: New Cassandra host /a.b.c.d:9042 added
15/08/14 10:21:54 INFO Cluster: New Cassandra host /127.0.0.1:9042 added
INFO CassandraConnector: Connected to Cassandra cluster: Test Cluster
15/08/14 10:21:54 ERROR Session: Error creating pool to /127.0.0.1:9042
com.datastax.driver.core.TransportException: [/127.0.0.1:9042] Cannot connect
        at com.datastax.driver.core.Connection.<init>(Connection.java:109)
        at com.datastax.driver.core.PooledConnection.<init>(PooledConnection.java:32)
        at com.datastax.driver.core.Connection$Factory.open(Connection.java:586)
        at com.datastax.driver.core.SingleConnectionPool.<init>(SingleConnectionPool.java:76)
        at com.datastax.driver.core.HostConnectionPool.newInstance(HostConnectionPool.java:35)
        at com.datastax.driver.core.SessionManager.replacePool(SessionManager.java:271)
        at com.datastax.driver.core.SessionManager.access$400(SessionManager.java:40)
        at com.datastax.driver.core.SessionManager$3.call(SessionManager.java:308)
        at com.datastax.driver.core.SessionManager$3.call(SessionManager.java:300)
        at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334)
        at java.util.concurrent.FutureTask.run(FutureTask.java:166)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
        at java.lang.Thread.run(Thread.java:722)
Caused by: java.net.ConnectException: Connection refused: /127.0.0.1:9042
Run Code Online (Sandbox Code Playgroud)

我的复制因子是1.在Cass集群中有5个节点(它们都已启动).rpc_address:0.0.0.0,broadcast_rpc_address:127.0.0.1

我认为我应该从上面看到5个节点中的5个"INFO Cluster:New Cassandra host ..".但相反,我看到127.0.0.1,我不知道为什么.

我还注意到在cassandra.yaml文件中,所有5个节点都列在种子下.(我知道不知道,但我没有设置这个群集)

seed_provider:
class_name: org.apache.cassandra.locator.SimpleSeedProvider
parameters:
seeds: "ip1, ip2, ip3, ip4, ip5"
Run Code Online (Sandbox Code Playgroud)

其中ipx是节点x的ipaddr.

在cassandra-topology.properties下,它只是说下面的内容,并没有提到任何5个节点.

# default for unknown nodes                                                                                                                     

default=DC1:r1
Run Code Online (Sandbox Code Playgroud)

有人可以解释为什么我看到ERROR会话:错误创建池到/127.0.0.1:9042错误.

Cassandra的新品..提前感谢!

And*_*ert 7

我认为问题是你的rpc_broadcast_address设置为127.0.0.1.你有没有理由这样做?

java驱动程序使用system.peers表来查找用于连接主机的ip地址.如果设置了rpc_broadcast_address,则这将在system.peers中出现,驱动程序将尝试使用它.如果未设置rpc_broadcast_address,将使用rpc_address.在任何一种情况下,您都希望将其中一个地址设置为客户端可访问的地址.如果设置rpc_address,则需要删除broadcast_rpc_address.

  • 如果`rpc_address`设置为0.0.0.0,则必须设置`broadcast_rpc_address`.但它应该设置为您希望客户端连接到的地址,而不是127.0.0.1. (3认同)
  • “ broadcast_rpc_address”是Cassandra发送给驱动程序的内容,也是驱动程序用来唯一标识主机的内容。“ cassandra-topology.properties”中的地址是Cassandra节点用来相互通信的地址。驱动程序对这些地址一无所知(它们甚至可能在专用网络上,客户端无法访问)。 (2认同)