所以我有以下客户端代码:
def getCluster:Session = {
import collection.JavaConversions._
val endpoints = config.getStringList("cassandra.server")
val keyspace = config.getString("cassandra.keyspace")
val clusterBuilder = Cluster.builder
endpoints.toTraversable.map { x =>
clusterBuilder.addContactPoint(x)
}
val cluster = clusterBuilder.build
cluster
.getConfiguration
.getProtocolOptions
.setCompression(ProtocolOptions.Compression.LZ4)
cluster.connect(keyspace)}
从datastax的驱动程序文档中的示例中无耻地借用。
当我尝试用它执行代码时,它总是尝试连接到localhost,即使它没有为此配置...
在某些情况下,它将连接(基本读取)但是对于写入,我得到以下日志消息:
2016-07-07 11:34:31 DEBUG Connection:157 - Connection[/127.0.0.1:9042-10, inFlight=0, closed=false] Error connecting to /127.0.0.1:9042 (Connection refused: /127.0.0.1:9042)
2016-07-07 11:34:31 DEBUG STATES:404 - Defuncting Connection[/127.0.0.1:9042-10, inFlight=0, closed=false] because: [/127.0.0.1] Cannot connect
2016-07-07 11:34:31 DEBUG STATES:108 - [/127.0.0.1:9042] Connection[/127.0.0.1:9042-10, inFlight=0, closed=false] failed, remaining = 0
2016-07-07 11:34:31 DEBUG Connection:629 - Connection[/127.0.0.1:9042-10, inFlight=0, closed=true] closing connection
2016-07-07 11:34:31 DEBUG Cluster:1802 - Aborting onDown because a reconnection is running on DOWN host /127.0.0.1:9042
2016-07-07 11:34:31 DEBUG Cluster:1872 - Failed reconnection to /127.0.0.1:9042 ([/127.0.0.1] Cannot connect), scheduling retry in 512000 milliseconds
2016-07-07 11:34:31 DEBUG STATES:196 - [/127.0.0.1:9042] next reconnection attempt in 512000 ms
我无法弄清楚我需要在驱动程序端配置的位置/内容(没有本地客户端,只是驱动程序)才能解决此问题
答案 0 :(得分:1)
我的猜测是,这是由cassandra节点上cassandra.yaml
文件的配置引起的。影响此问题的两个主要设置是broadcast_rpc_address
和rpc_address
,来自The cassandra.yaml configuration参考:
broadcast_rpc_address
(默认值:未设置)要广播到驱动程序和其他Cassandra节点的RPC地址。这不能设置为0.0.0.0。如果为空,则将其设置为rpc_address或rpc_interface的值。如果rpc_address或rpc_interfaceis设置为0.0.0.0,则必须设置此属性。
rpc_address
(默认值:localhost)客户端连接的侦听地址(Thrift RPC服务和本机传输)。
如果您将这两个都保留为默认值,localhost
将成为cassandra将进行通信以连接的默认地址。
在驱动程序能够连接到联系点之后,它会查询联系点的system.local
和system.peers
表以确定要连接的主机,这些表通信的地址来自{ {1}} / rpc_address