Ubuntu 22.04下CouchDB 3.3.2与Clauseau 2.21.5连接异常及功能缺失问题
问题:CouchDB 3.3.2与Clauseau 2.21.5集成失败及search功能缺失
环境与操作背景
在Ubuntu 22.04系统部署CouchDB 3.3.2,尝试与Clauseau 2.21.5集成,所有操作均遵循官方指南执行。
遇到的问题
1. Clauseau出现Erlang握手认证错误
运行命令:
curl http://127.0.0.1:5984
Clauseau日志输出以下错误:
[executor:2] ERROR scalang.node.ServerHandshakeHandler - Exception caught during erlang handshake: scalang.node.ErlangAuthException: Peer authentication error. at scalang.node.ServerHandshakeHandler.verifyChallenge(ServerHandshakeHandler.scala:80) at scalang.node.ServerHandshakeHandler$$anonfun$3.apply(ServerHandshakeHandler.scala:49) at scalang.node.ServerHandshakeHandler$$anonfun$3.apply(ServerHandshakeHandler.scala:47) at scalang.util.StateMachine$State.event(StateMachine.scala:39) at scalang.util.StateMachine$class.event(StateMachine.scala:22) at scalang.node.HandshakeHandler.event(HandshakeHandler.scala:28) at scalang.node.HandshakeHandler.messageReceived(HandshakeHandler.scala:49) at org.jboss.netty.channel.Channels.fireMessageReceived(Channels.java:302) at org.jboss.netty.handler.codec.oneone.OneToOneDecoder.handleUpstream(OneToOneDecoder.java:76) at org.jboss.netty.channel.Channels.fireMessageReceived(Channels.java:302) at org.jboss.netty.handler.codec.frame.FrameDecoder.unfoldAndFireMessageReceived(FrameDecoder.java:321) at org.jboss.netty.handler.codec.frame.FrameDecoder.callDecode(FrameDecoder.java:299) at org.jboss.netty.handler.codec.frame.FrameDecoder.messageReceived(FrameDecoder.java:216) at org.jboss.netty.handler.execution.ChannelEventRunnable.run(ChannelEventRunnable.java:69) at org.jboss.netty.handler.execution.OrderedMemoryAwareThreadPoolExecutor$ChildExecutor.run(OrderedMemoryAwareThreadPoolExecutor.java:316) at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128) at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) at java.base/java.lang.Thread.run(Thread.java:829) at overlock.threadpool.ErrorLoggedThread.run(NamedThreadFactory.scala:40) [executor:2] INFO scalang.node.ErlangHandler - channel disconnected org.jboss.netty.channel.DefaultChannelPipeline$DefaultChannelHandlerContext@397ca55c [id: 0x7574d4f1, /127.0.0.1:59532 :> /127.0.0.1:37157] DISCONNECTED. peer: null [executor:2] ERROR scalang.node.ServerHandshakeHandler - Channel closed during handshake
2. CouchDB缺失search功能
CouchDB返回的features列表中未包含search:
{"couchdb":"Welcome","version":"3.3.2","git_sha":"11a234070","uuid":"e0f4acf1191ee7034b5491d5e8bf8068","features":["access-ready","partitioned","pluggable-storage-engines","reshard","scheduler"],"vendor":{"name":"The Apache Software Foundation"}}
排查与解决建议
针对Erlang握手认证错误
- 检查Erlang Cookie一致性:CouchDB的Erlang Cookie通常位于
/opt/couchdb/.erlang.cookie,确保Clauseau配置中使用的Cookie值与该文件内容完全一致。同时保证Cookie文件权限为600,属主为运行CouchDB的用户(通常是couchdb)。 - 确认节点名称匹配:CouchDB默认节点名为
couchdb@127.0.0.1,检查Clauseau配置中指定的CouchDB节点名称是否完全匹配,节点名称不匹配会直接导致认证失败。
针对search功能缺失
- 安装search插件:如果是通过apt包管理安装的CouchDB,需单独安装
couchdb-search包;若为源码编译部署,需确保编译时包含了search模块。 - 启用search服务:修改CouchDB配置文件
/opt/couchdbdb/etc/local.ini,在[services]段添加search = true,并在[search]段配置索引目录(如index_dir = /opt/couchdb/data/search),保存后重启CouchDB服务。 - 验证功能状态:重启后再次执行
curl http://127.0.0.1:5984,检查返回的features列表是否包含search。
内容的提问来源于stack exchange,提问作者AVK
相关产品推荐
相关产品推荐

