我有一个es_client (java/dropwizard)
申请。它通过纯文本连接与elasticsearch进行通信。我已按照https://github.com/sonian/elasticsearch-
jetty
上的说明为设置SSL es client
。但是,当我启动时,es_client
它每5秒报告一次以下内容:
INFO [2014-01-08 23:02:14,814] org.elasticsearch.client.transport: [Karolina Dean] failed to get node info for [#transport#-1][inet[localhost/127.0.0.1:9443]], disconnecting... ! org.elasticsearch.transport.NodeDisconnectedException: [][inet[localhost/127.0.0.1:9443]][cluster/nodes/info] disconnected
我该如何解决这个问题?
谢谢,Maciej
默认情况下,Elasticsearch在其传输层上不支持SSL,因此您必须添加自己。这需要在服务器端和客户端都使用新代码。
幸运的是,Elasticsearch的源代码非常模块化,因此只需在配置文件中添加一行即可很容易地换出传输实现。
不幸的是,Elasticsearch使用了许多私有字段和方法,这使得很难在不重新实现全部功能或复制/粘贴大量代码的情况下,向其现有实现中添加新功能。此外,Elasticsearch会遮蔽其Netty
-includes并跳过它们不使用的类,这意味着您必须自己从兼容的Netty版本中包含所需的SSL + helper类。
找到一个托管的Elasticsearch提供者,该提供者使用Java传输客户端提供了完全的SSL支持,并使用此开源插件完成了此任务,如果您决定自己实施,则可以将其用作启发。
另一种不同的方法是使用stunnel来处理计算机之间特定于SSL的部分,而不用对Elasticsearch本身做任何事情。