Couchbase:连接被拒绝

Couchbase: Connection refused

我尝试连接到内联网上的 Couchbase 服务器。为此,我使用 Java SDK 和以下配置:

CouchbaseEnvironment couchbaseEnvironment = DefaultCouchbaseEnvironment.builder()
                .queryEnabled(true)
                .queryPort(11210)
                .build();

        Cluster cluster = CouchbaseCluster.create(couchbaseEnvironment, "192.168.1.150");
        Bucket bucket = cluster.openBucket("mybucket");

然而,这只会让我在控制台上出现很多错误:

INFO  [2015-03-30 14:03:07,306] org.eclipse.jetty.util.log: Logging initialized @1805ms
INFO  [2015-03-30 14:03:07,605] com.couchbase.client.core.CouchbaseCore: CoreEnvironment: {sslEnabled=false, sslKeystoreFile='null', sslKeystorePassword='null', queryEnabled=true, queryPort=11210, bootstrapHttpEnabled=true, bootstrapCarrierEnabled=true, bootstrapHttpDirectPort=8091, bootstrapHttpSslPort=18091, bootstrapCarrierDirectPort=11210, bootstrapCarrierSslPort=11207, ioPoolSize=4, computationPoolSize=4, responseBufferSize=16384, requestBufferSize=16384, kvServiceEndpoints=1, viewServiceEndpoints=1, queryServiceEndpoints=1, ioPool=NioEventLoopGroup, coreScheduler=CoreScheduler, eventBus=DefaultEventBus, packageNameAndVersion=couchbase-java-client/2.1.1 (git: 2.1.1), dcpEnabled=false, retryStrategy=BestEffort, maxRequestLifetime=75000, retryDelay=com.couchbase.client.core.time.ExponentialDelay@11bd803, reconnectDelay=com.couchbase.client.core.time.ExponentialDelay@58f07f02, observeIntervalDelay=com.couchbase.client.core.time.ExponentialDelay@75798d03, keepAliveInterval=30000, autoreleaseAfter=2000}
INFO  [2015-03-30 14:03:16,004] com.couchbase.client.core.node.Node: Connected to Node 192.168.1.150
INFO  [2015-03-30 14:03:16,367] com.couchbase.client.core.config.ConfigurationProvider: Opened bucket sortimo_shadow
WARN  [2015-03-30 14:03:16,386] com.couchbase.client.core.endpoint.Endpoint: [null][KeyValueEndpoint]: Could not connect to endpoint, retrying with delay 32 MILLISECONDS: 
! java.net.ConnectException: Connection refused: localhost/127.0.0.1:11210
! at sun.nio.ch.SocketChannelImpl.checkConnect(Native Method) ~[na:1.8.0_31]
! at sun.nio.ch.SocketChannelImpl.finishConnect(SocketChannelImpl.java:716) ~[na:1.8.0_31]
! at com.couchbase.client.deps.io.netty.channel.socket.nio.NioSocketChannel.doFinishConnect(NioSocketChannel.java:208) ~[core-io-1.1.1.jar:1.1.1]
! at com.couchbase.client.deps.io.netty.channel.nio.AbstractNioChannel$AbstractNioUnsafe.finishConnect(AbstractNioChannel.java:281) ~[core-io-1.1.1.jar:1.1.1]
! at com.couchbase.client.deps.io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:528) [core-io-1.1.1.jar:1.1.1]
! at com.couchbase.client.deps.io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:468) [core-io-1.1.1.jar:1.1.1]
! at com.couchbase.client.deps.io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:382) [core-io-1.1.1.jar:1.1.1]
! at com.couchbase.client.deps.io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:354) [core-io-1.1.1.jar:1.1.1]
! at com.couchbase.client.deps.io.netty.util.concurrent.SingleThreadEventExecutor.run(SingleThreadEventExecutor.java:116) [core-io-1.1.1.jar:1.1.1]
! at com.couchbase.client.deps.io.netty.util.concurrent.DefaultThreadFactory$DefaultRunnableDecorator.run(DefaultThreadFactory.java:137) [core-io-1.1.1.jar:1.1.1]
! at java.lang.Thread.run(Thread.java:745) [na:1.8.0_31]
INFO  [2015-03-30 14:03:16,390] com.couchbase.client.core.node.Node: Disconnected from Node 192.168.1.150
WARN  [2015-03-30 14:03:16,402] com.couchbase.client.core.endpoint.Endpoint: [null][ViewEndpoint]: Could not connect to endpoint, retrying with delay 32 MILLISECONDS: 
...

如果我选择端口 8092 而不是 11210,也会发生同样的情况。我做错了什么?

首先,11210是为Key/Value操作协议保留的couchbase端口,所以你不应该尝试将它设置为查询端口(不是同一个服务)!

感谢您提供日志,它表明 SDK 正在尝试连接到本地主机而不是连接到远程节点。我认为您遇到了与 Couchbase Server 3.0.1 或更低版本一起使用的 2.1.1 版中的错误,对吗?

如果是这样,该错误已在 Java SDK 2.1.2 中修复,该版本应于 4 月初发布。您可以使用 Developer Preview 检查是否属于这种情况(但是 不要忘记在发布后切换到官方 GA 版本)。

(2.1.2 预览版现已正式可用,因此正在移除预览版)

错误已跟踪here

编辑说明:版本 2.1.2 和几个其他版本已经发布,其中包括错误修复

我遇到了这个错误,通过安装 couchebase 解决了。 我遇到这种情况是因为我在本地计算机上只安装了 couchdb。