当前位置: 首页 > 知识库问答 >
问题:

如何使用SolrCloud和Tomcat 3外部ZooKeeper在3个不同的虚拟机上部署Solr?

林念
2023-03-14

我正在尝试使用SolrCloud使用SolR 4.2(在Tomcat 7实例上)部署一个由3个VM组成的集群,每个实例中都有一个外部ZooKeeper(3.4.5)(我使用的是Windows Server 2008 R2)但是出了问题,我没有特定的错误,但是当我在一个实例上发送文档时,它们总是在该实例上被索引,而其他实例看不到它。简而言之,看起来它们不会相互通信,即使ZooKeeper实例会这样做。(我有一个多核SolR配置)

下面是我部署SolrCloud的步骤(后面是本教程)。

1)我安装了ZooKeeper并在每个实例中创建了一个zoo.cfg文件,修改了示例文件的一些行:

dataDir=C:\\PcSemantic\\PCSEMANTIC\\Solr\\zookeeper_data
clientPort=2181
server.1=vm1:2888:3888
server.2=vm2:2888:3888
server.3=vm3:2888:3888

2)我在Tomcat for SolR的context.xml中添加了以下行(我还尝试从3个实例中的2个中删除第一行和第二行,但没有任何变化):

<Environment name="numShards" type="java.lang.Integer" value="3" override="true" />
<Environment name="bootstrap_conf" type="java.lang.Boolean" value="true" override="true" />
<Environment name="zkHost" type="java.lang.String" value="vm1:2181,vm2:2181,vm2:2181" override="true" />

3) 我在模式中添加了。xml和solrconfig。每个实例的每个核心的xml版本字段、“复制”和“获取”处理程序以及updateLog,如中所指定http://wiki.apache.org/solr/SolrCloud#Required_Config

4) 在solr。xml我将hostPort=“8080”放在“cores”标记5)中,然后在每个实例中启动ZooKeeper(使用bin/zkServer.cmd),然后在每个实例中启动Tomcat作为服务ZooKeeper实例似乎通信正常,一些错误只会出现在日志中,直到我启动所有3个ZK,然后它会记录以下内容:

2013-10-04 10:17:33,733 [myid:3] - INFO  [QuorumPeer[myid=3]/0:0:0:0:0:0:0:0:218
1:Follower@63] - FOLLOWING - LEADER ELECTION TOOK - 94
2013-10-04 10:17:33,780 [myid:3] - INFO  [QuorumPeer[myid=3]/0:0:0:0:0:0:0:0:218
1:Learner@325] - Getting a snapshot from leader
2013-10-04 10:17:33,780 [myid:3] - INFO  [QuorumPeer[myid=3]/0:0:0:0:0:0:0:0:218
1:FileTxnSnapLog@240] - Snapshotting: 0x100000000 to C:\PcSemantic\PCSEMANTIC\So
lr\zookeeper_data\version-2\snapshot.100000000

Solr实例不记录错误或警告。我停止了3台机器上的所有防火墙/代理(它们位于同一局域网上,并且彼此通信正确)。

共有1个答案

林彬
2023-03-14

我找到了解决方案(即使它不完全是我需要的配置,至少它可以工作),变量bootstrap\u conf应该作为Java系统参数传递:

>

  • Tomcat作为服务:$Tomcat\u HOME/bin/tomcat7w。exe,选项卡“JAVA”;加载项“java选项”:

    -Dboostrap_conf=true
    

  •  类似资料:
    • 我有一个NodeJs应用程序,在我的本地机器上运行良好。 现在,我想将它部署在具有给定IP和给定超文本传输协议地址的虚拟机上。 假设服务器的ip地址和http地址分别为134.00.00.00和134.00.00http://server-virtualmachine.is.fr 我能够通过ssh连接到此服务器,并将我的节点JS应用程序发送到 /var/www/ 服务器的主文件是app。所以我执行

    • 要部署我的架构体系,我需要部署一个具有自定义脚本扩展的VM。VM的唯一目的是执行脚本。脚本执行后,VM应该会自动删除。 如何做到这一点? 其他信息: 这是azure资源管理器部署 删除操作也应该在azure marketplace环境中起作用

    • 当通过作为docker映像部署在localhost上时,它都可以正常工作,但当作为单独的任务/服务部署到AWS ECS时(使用),两者之间的通信不再工作,并且假客户机错误如下: 注意,这里的响应有点像标准的Tomcat404响应。 我已经看到这个AWS部署在Zookeeper中存储的值,它似乎将IP地址作为的值,我不确定这是否正确。 此IP地址既不匹配与ECS任务关联的ENI的公共IP也不匹配EN

    • 我有一台机器,比如说“M1”,我在上面创建了tomcat服务器实例。我已在此服务器上部署了war文件。这场战争包含了所有的网络服务和其他东西。所以,每当我在调试模式下工作时,我都无法在浏览器调试器上调试web服务。 在我的本地机器中,我安装了包含所有代码的eclipse。我使用它创建了war文件,该文件部署在机器M1上的tomcat服务器上。 是否有任何方法可以从浏览器调试web服务调用?或者,有

    • 我已经将这些WAR添加到tomcat webapps文件夹中,并在 如果我为其他war在相同的主机标记中放置另一个上下文路径,我现在可以访问http://localhost:9080/apipath/mymethoduriapp1上的应用程序 服务器现在无法启动。 提前感谢帮助

    • 本文向大家介绍在云虚拟主机部署thinkphp5项目的步骤详解,包括了在云虚拟主机部署thinkphp5项目的步骤详解的使用技巧和注意事项,需要的朋友参考一下 前言 Thinkphp作为开源的PHP框架发展到今天,无疑是国内最适合PHP学员学习和使用的框架,除了简单容易上手,更大的优点是开发文档完善、插件丰富。本文将给大家详细介绍关于在在云虚拟主机部署thinkphp5项目的相关内容,分享出来供大