DS_大圣 2019-05-01 20:16 采纳率: 0%
浏览 579

往solr集群输入数据时输入到一部分就出现 Cannot talk to ZooKeeper - Updates are disabled.问题?

org.apache.solr.client.solrj.impl.CloudSolrClient$RouteException: Error from server at http://192.168.139.130:9080/solr/collection1: Cannot talk to ZooKeeper - Updates are disabled.
at org.apache.solr.client.solrj.impl.CloudSolrClient.directUpdate(CloudSolrClient.java:631)
at org.apache.solr.client.solrj.impl.CloudSolrClient.sendRequest(CloudSolrClient.java:980)
at org.apache.solr.client.solrj.impl.CloudSolrClient.requestWithRetryOnStaleState(CloudSolrClient.java:869)
at org.apache.solr.client.solrj.impl.CloudSolrClient.request(CloudSolrClient.java:805)
at org.apache.solr.client.solrj.SolrRequest.process(SolrRequest.java:135)
at org.apache.solr.client.solrj.SolrClient.add(SolrClient.java:174)
at org.apache.solr.client.solrj.SolrClient.add(SolrClient.java:139)
at org.apache.solr.client.solrj.SolrClient.add(SolrClient.java:153)
at com.ego.search.service.impl.TbItemServiceImpl.init(TbItemServiceImpl.java:61)
at com.ego.search.controller.TbItemController.init(TbItemController.java:30)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:221)
at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:136)
at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:110)
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:832)
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:743)
at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85)
at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:961)
at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:895)
at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:967)
at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:858)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:621)
at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:843)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:121)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:100)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:953)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408)
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1041)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:603)
at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:310)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:748)
Caused by: org.apache.solr.client.solrj.impl.HttpSolrClient$RemoteSolrException: Error from server at http://192.168.139.130:9080/solr/collection1: Cannot talk to ZooKeeper - Updates are disabled.
at org.apache.solr.client.solrj.impl.HttpSolrClient.executeMethod(HttpSolrClient.java:560)
at org.apache.solr.client.solrj.impl.HttpSolrClient.request(HttpSolrClient.java:234)
at org.apache.solr.client.solrj.impl.HttpSolrClient.request(HttpSolrClient.java:226)
at org.apache.solr.client.solrj.impl.LBHttpSolrClient.doRequest(LBHttpSolrClient.java:376)
at org.apache.solr.client.solrj.impl.LBHttpSolrClient.request(LBHttpSolrClient.java:328)
at org.apache.solr.client.solrj.impl.CloudSolrClient$2.call(CloudSolrClient.java:606)
at org.apache.solr.client.solrj.impl.CloudSolrClient$2.call(CloudSolrClient.java:603)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at org.apache.solr.common.util.ExecutorUtil$MDCAwareThreadPoolExecutor$1.run(ExecutorUtil.java:210)
... 3 more


  • 写回答

1条回答 默认 最新

  • 你知我知皆知 2024-08-09 06:44
    关注

    以下回答参考 皆我百晓生券券喵儿 等免费微信小程序相关内容作答,并由本人整理回复。

    从您提供的错误信息来看,似乎在使用Solr集群时遇到了无法连接ZooKeeper的问题。这可能是因为ZooKeeper服务未启动或配置不正确。

    要解决此问题,请按照以下步骤操作:

    1. 确认ZooKeeper服务器是否正在运行:

      • 在命令行中输入ps aux | grep zookeeper来检查ZooKeeper进程是否正在运行。
      • 如果没有找到ZooKeeper进程,请确保您的系统上安装了ZooKeeper,并且已正确配置环境变量(例如JAVA_HOMEZOOKEEPER_HOME)。
    2. 检查ZooKeeper服务的配置文件:

      • 在ZooKeeper的安装目录下,通常有一个名为zoo.cfg的服务配置文件。打开这个文件并检查其中是否有关于ZooKeeper节点的配置项,例如dataDirclientPort等。
      • 确保这些配置项设置为正确的值。
    3. 尝试重新启动ZooKeeper服务:

      • 使用sudo service zookeeper restart命令重启ZooKeeper服务。
      • 如果您使用的是Kubernetes等容器化平台,则可以尝试使用kubectl apply -f zookeeper.yaml来手动重启ZooKeeper服务。
    4. 调整Solr客户端配置以支持ZooKeeper:

      • 在Solr客户端类(如CloudSolrClient)中添加对ZooKeeper的支持。这通常涉及到修改add方法以接受一个zkConnectString参数,然后使用它来连接ZooKeeper服务器。
      • 示例代码如下:
        public void add(String... docIds) throws IOException {
            String zkConnectString = "localhost:2181"; // 假设ZooKeeper的地址是localhost:2181
            SolrInputDocument doc = new SolrInputDocument();
            for (int i = 0; i < docIds.length; i++) {
                doc.addField("id", docIds[i]);
            }
            solrClient.add(doc, zkConnectString);
        }
        
    5. 测试并确认问题已解决:

      • 保存更改后,再次运行Solr集群中的所有应用程序,并检查是否存在之前提到的"Cannot talk to ZooKeeper - Updates are disabled."错误。
      • 如果问题得到解决,那么应该不再出现任何类似错误。

    如果以上步骤都无法解决问题,建议联系Solr社区或者Solr官方技术支持获取更详细的帮助。

    评论

报告相同问题?