我的Spring Boot App配置了三个Elasticsearch集群(ES v6.4.2)。application.properties文件如下所示(我为每个集群配置了三个主节点,但为了简单起见在这里显示一个):
# Cluster 1
spring.data.elasticsearch.cluster-one.cluster-name=<cluster-1-name>
spring.data.elasticsearch.cluster-one.cluster-nodes=<ip-cluster-1-master-node>:9300
# Cluster 2
spring.data.elasticsearch.cluster-two.cluster-name=<cluster-2-name>
spring.data.elasticsearch.cluster-two.cluster-nodes=<ip-cluster-2-master-node>:9300
# Cluster 3
spring.data.elasticsearch.cluster-three.cluster-name=<cluster-3-name>
spring.data.elasticsearch.cluster-three.cluster-nodes=<ip-cluster-3-master-node>:9300
spring.data.elasticsearch.repositories.enabled=true
spring.autoconfigure.exclude = org.springframework.boot.autoconfigure.data.elasticsearch.ElasticsearchAutoConfiguration,org.springframework.boot.autoconfigure.data.elasticsearch.ElasticsearchDataAutoConfiguration对于每个集群,我都有一个单独的配置类,用于设置TransportClient和ElasticsearchTemplate。
现在,当我在本地启动应用程序时,所有三个集群都在我的本地计算机上运行,应用程序正常启动。但是,当我使用三个独立的远程集群将应用程序部署到我的测试环境中时,启动过程需要20分钟。它似乎在为第三个集群加载Elasticsearch插件时挂起。下面是日志输出的摘录:
2019-09-10 00:55:57.607 INFO 27505 --- [ main] o.s.web.context.ContextLoader : Root WebApplicationContext: initialization completed in 2897 ms
2019-09-10 00:55:57.971 INFO 27505 --- [ main] o.elasticsearch.plugins.PluginsService : no modules loaded
2019-09-10 00:55:57.972 INFO 27505 --- [ main] o.elasticsearch.plugins.PluginsService : loaded plugin [org.elasticsearch.index.reindex.ReindexPlugin]
2019-09-10 00:55:57.972 INFO 27505 --- [ main] o.elasticsearch.plugins.PluginsService : loaded plugin [org.elasticsearch.join.ParentJoinPlugin]
2019-09-10 00:55:57.972 INFO 27505 --- [ main] o.elasticsearch.plugins.PluginsService : loaded plugin [org.elasticsearch.percolator.PercolatorPlugin]
2019-09-10 00:55:57.972 INFO 27505 --- [ main] o.elasticsearch.plugins.PluginsService : loaded plugin [org.elasticsearch.script.mustache.MustachePlugin]
2019-09-10 00:55:57.973 INFO 27505 --- [ main] o.elasticsearch.plugins.PluginsService : loaded plugin [org.elasticsearch.transport.Netty4Plugin]
2019-09-10 00:55:59.785 INFO 27505 --- [ main] o.elasticsearch.plugins.PluginsService : no modules loaded
2019-09-10 00:55:59.785 INFO 27505 --- [ main] o.elasticsearch.plugins.PluginsService : loaded plugin [org.elasticsearch.index.reindex.ReindexPlugin]
2019-09-10 00:55:59.785 INFO 27505 --- [ main] o.elasticsearch.plugins.PluginsService : loaded plugin [org.elasticsearch.join.ParentJoinPlugin]
2019-09-10 00:55:59.785 INFO 27505 --- [ main] o.elasticsearch.plugins.PluginsService : loaded plugin [org.elasticsearch.percolator.PercolatorPlugin]
2019-09-10 00:55:59.785 INFO 27505 --- [ main] o.elasticsearch.plugins.PluginsService : loaded plugin [org.elasticsearch.script.mustache.MustachePlugin]
2019-09-10 00:55:59.786 INFO 27505 --- [ main] o.elasticsearch.plugins.PluginsService : loaded plugin [org.elasticsearch.transport.Netty4Plugin]
2019-09-10 01:18:30.484 INFO 27505 --- [ main] o.elasticsearch.plugins.PluginsService : no modules loaded
2019-09-10 01:18:30.485 INFO 27505 --- [ main] o.elasticsearch.plugins.PluginsService : loaded plugin [org.elasticsearch.index.reindex.ReindexPlugin]
2019-09-10 01:18:30.485 INFO 27505 --- [ main] o.elasticsearch.plugins.PluginsService : loaded plugin [org.elasticsearch.join.ParentJoinPlugin]
2019-09-10 01:18:30.485 INFO 27505 --- [ main] o.elasticsearch.plugins.PluginsService : loaded plugin [org.elasticsearch.percolator.PercolatorPlugin]
2019-09-10 01:18:30.485 INFO 27505 --- [ main] o.elasticsearch.plugins.PluginsService : loaded plugin [org.elasticsearch.script.mustache.MustachePlugin]
2019-09-10 01:18:30.485 INFO 27505 --- [ main] o.elasticsearch.plugins.PluginsService : loaded plugin [org.elasticsearch.transport.Netty4Plugin]在这里,您可以看到加载插件的第二个块和第三个块之间的延迟超过20分钟。
当从测试环境中卷曲集群时,它们都是可到达的,并且没有延迟地响应。
延迟的原因可能是什么,或者我应该去哪里寻找?
是否可以或可能建议对所有三个集群只加载一次Elasticsearch插件,如果可以,我如何实现这一点?
编辑:
调试日志显示,主节点无法连接到数据节点:
org.elasticsearch.transport.ConnectTransportException: [data_node_6][<ip-of-data-node>:9300] connect_exception
[...]
2019-09-10 18:49:00.517 DEBUG 26219 --- [main] o.e.c.t.TransportClientNodesService : failed to connect to discovered node [{data_node_6}{LKdxInfLSyqrGgSOXvTwFw}{YIhin3kpSNupEY1jBlHFVg}{<ip-of-data-node>}{<ip-of-data-node>:9300}{ml.machine_memory=33422729216, ml.max_open_jobs=20, xpack.installed=true, ml.enabled=true}]但是我的集群是在线的,并且处于绿色状态,所有数据节点都存在。所有节点都配置为网状VPN,端口9200和9300开放用于节点之间的通信。
ES是否需要打开另一个端口进行通信?
发布于 2019-09-11 02:21:02
出现这个问题是因为我启用了集群嗅探(https://www.elastic.co/guide/en/elasticsearch/client/java-api/current/transport-client.html),它会拾取集群中的所有数据节点,并通过主节点直接与它们通信。
由于我的集群配置为VPN,后台(在VPN之外)只能到达master节点,所以在从master节点获取内部VPN IP(非公网IP)时,后台无法与数据节点通信,导致连接失败。
所以我禁用了集群嗅探,现在一切都像预期的那样工作。
https://stackoverflow.com/questions/57864304
复制相似问题