【发布时间】:2020-06-03 00:06:40
【问题描述】:
我正在使用 org.testcontainers 来执行与 Solr 的集成测试。
[在我的单元测试中使用 SolrJ]
当我使用嵌入式 ZooKeeper 实例以云模式启动 Solr 时,我能够从我的单元测试连接到 solr 实例,但无法从我的 SolrClient 连接到 ZooKeeper。
我认为这是因为嵌入式 ZooKeeper 绑定到 IP 127.0.0.1 并且无法访问。
如果我启动两个单独的容器 [使用共享网络] ZooKeeper 和 Solr,我可以将 Solr 连接到 ZooKeeper,并且我可以从我的单元测试中连接到 Zookeeper,但是当 Zookeeper 返回活动的 SOLR 节点时,它会返回无法从我的单元测试 [在我的 SolrJ 客户端中] 访问的内部服务器 IP。
我不知道该去哪里。
也许有一种网络模式可以进行地址转换?
想法?
【问题讨论】:
-
你可以在启动Solr之前设置
SOLR_HOST强制它使用特定ip进行节点间通信,或者如果你想让jetty监听特定ip,你可以在里面使用-Djetty.host=<ip>SOLR_OPTS。但是,如果内部 zookeeper 绑定到 localhost,那应该仍然是您运行测试时所在的同一台服务器吗?嵌入式 Zookeeper 不使用默认的 ZK 端口 (2181),而是使用<solr port> + 1000- 因此如果 Solr 使用默认端口 8983,嵌入式 ZK 将使用 9983。
标签: solr apache-zookeeper solrj testcontainers