【问题标题】:Unable to connect StormCrawler to secured Elasticsearch无法将 StormCrawler 连接到安全的 Elasticsearch
【发布时间】:2023-03-05 18:46:01
【问题描述】:

我收到以下错误

noNodeAvailableException[配置的节点均不可用:[{#transport#-1}{buKSP622TFWnQm_2-PxqQg}{xxxxxxxx}{10.240.49.79:2309}]] 在 org.elasticsearch.client.transport。

尝试连接到安全的弹性搜索集群时。

该设置适用于未启用 xpack 的 elasticsearch。如何将storm crawler 连接到安全的elasticsearch?

【问题讨论】:

  • 你检查es.nodes.wan.only参数了吗?
  • 我也有同样的问题。使用 com.digitalpebble.stormcrawler (storm-crawler-elasticsearch) 1.6 版没问题,升级到 1.7 版时出现此错误。
  • @IvanBukharin 请在下面查看我的答案并尝试新分支。如果这不起作用,请在 github 上打开一个问题。谢谢

标签: elasticsearch web-crawler apache-storm stormcrawler


【解决方案1】:

不确定这是否可行,具体取决于版本等...但首先,您需要将屏蔽 jar 添加到类路径中,如java client with shield 中所述。使用 Maven 很容易做到这一点

 <repositories>
  <!-- add the elasticsearch repo -->
  <repository>
     <id>elasticsearch-releases</id>
     <url>https://maven.elasticsearch.org/releases</url>
     <releases>
        <enabled>true</enabled>
     </releases>
     <snapshots>
        <enabled>false</enabled>
     </snapshots>
  </repository>

[...]

      <dependency>
     <groupId>org.elasticsearch.plugin</groupId>
     <artifactId>shield</artifactId>
     <version>2.2.0</version>
  </dependency>

对于status索引

,其他一切都可以通过配置来完成

es.status.plugins: org.elasticsearch.shield.ShieldPlugin es.status.settings: cluster.name: "ENTER_CLUSTER_NAME" shield.user": "transport_client_user:changeme"

TransportExample.java 可能是一个很好的例子,它列出了所有需要的设置。

请注意,Elastic Cloud 目前不适用于 6.1.x 及更高版本中的 TransportClient,这是 StormCrawler 的主分支所在。您可以将 SC 的 ES 模块降级到旧版本并参考相应的文档。

另一种选择是移植代码以使用高级别的客户端,请参阅migration guide,但这是一项艰巨的任务。

更新:请查看分支ESRestAPi。我已经更改了代码,以便它使用 ES REST 客户端。这适用于 Elastic Cloud 6.2,您只需指定

  es.status.user: "USERNAME"
  es.status.password: "PASSWORD"

到每个索引的配置。这些地址现在采用带有协议、主机名和端口的普通 URL。

如果你让它工作,请告诉我。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-04
    • 1970-01-01
    • 1970-01-01
    • 2022-10-20
    • 2019-11-01
    • 2019-07-17
    相关资源
    最近更新 更多