ElasticSearch cloud-aws 插件无法加入集群



所以我一直在尝试使用ElasticSearch"cloud-aws"插件将elasticsearch节点连接到我的单个主节点。我已经浏览了一些在线指南,并从各种来源尝试了一些设置,但我仍然无法让新节点加入现有的主节点。

我已经为 EC2 配置了 IAMS 角色和标签,这是我在一个节点上的 elasticsearch.yml 文件(其他类似):

node.name: Thor
node.client: "true"
network.host: localhost
cloud.aws.access_key: foobar
cloud.aws.secret_key: barfoo
cloud.aws.region: eu-west-1
discovery.type: ec2
discovery.ec2.tag.elasticsearch: Ubuntu-ElasticNode 

来自 elasticsearch 的日志记录很差,即使在 DEBUG 模式下也没有提供太多。

[2016-03-15 23:01:05,440][INFO ][node                     ] [Thor] version[2.2.0], pid[1550], build[8ff36d1/2016-01-27T13:32:39Z]
[2016-03-15 23:01:05,447][INFO ][node                     ] [Thor] initializing ...
[2016-03-15 23:01:06,685][INFO ][plugins                  ] [Thor] modules     [lang-expression, lang-groovy], plugins [cloud-aws], sites []
[2016-03-15 23:01:10,016][INFO ][node                     ] [Thor] initialized
[2016-03-15 23:01:10,017][INFO ][node                     ] [Thor] starting ...
[2016-03-15 23:01:10,106][INFO ][transport                ] [Thor] publish_address {localhost/127.0.0.1:9300}, bound_addresses {127.0.0.1:9300}
[2016-03-15 23:01:10,115][INFO ][discovery                ] [Thor]   elasticsearch/9PmYq5tXQcaPUPqDh4VTSQ
[2016-03-15 23:01:40,116][WARN ][discovery                ] [Thor] waited for 30s and no initial state was set by the discovery
[2016-03-15 23:01:40,155][INFO ][http                     ] [Thor] publish_address {localhost/127.0.0.1:9200}, bound_addresses {127.0.0.1:9200}
[2016-03-15 23:01:40,155][INFO ][node                     ] [Thor] started
[2016-03-15 23:54:40,863][DEBUG][action.admin.cluster.health] [Thor] no known master node, scheduling a retry
[2016-03-15 23:55:10,864][DEBUG][action.admin.cluster.health] [Thor] timed out while retrying [cluster:monitor/health] after failure (timeout [30s])
[2016-03-15 23:55:10,874][INFO ][rest.suppressed          ] /_cluster/health  Params: {pretty=}
MasterNotDiscoveredException[null]
    at org.elasticsearch.action.support.master.TransportMasterNodeAction$AsyncSingleAction$5.onTimeout(TransportMasterNodeAction.java:205)
    at org.elasticsearch.cluster.ClusterStateObserver$ObserverClusterStateListener.onTimeout(ClusterStateObserver.java:239)
    at org.elasticsearch.cluster.service.InternalClusterService$NotifyTimeout.run(InternalClusterService.java:794)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
    at java.lang.Thread.run(Thread.java:745)

我在 elasticsearch 服务器之间打开了端口范围 9200 - 9400,但日志似乎表明发现仍然超时。我设置了"discovery.ec2.tag.*"来加快发现过程,但这并没有帮助。

有谁知道这个插件需要如何配置?我已经阅读了一些指南,并且很多使用比我更少的配置选项,并且仍然能够将节点加入主节点。

我正在运行ElasticSearch 2.2。这是我的工作配置示例:

plugin.mandatory: cloud-aws
cluster.name: mynewcluster
cloud.aws.access_key: mykey
cloud.aws.secret_key: mysecret
cloud.aws.region: us-east-1
discovery.type: ec2
discovery.ec2.tag.elasticsearch: mynewcluster

我认为您需要查看您的网络配置。具体来说network.host.从文档中:

默认情况下,Elasticsearch 只绑定到本地主机。这足以让您运行本地开发服务器(如果您在同一台计算机上启动多个节点,甚至是开发集群),但您需要配置一些基本的网络设置才能跨多个服务器运行真正的生产集群。

我的 elasticsearch.yml 中没有network.host配置。这导致我建议将其完全取出。但是,由于文档说它默认绑定到本地主机,我还建议您尝试将其设置为节点的公共主机名或 IP。

所有这些都假设您根据以下条件正确设置了 IAM、安全组 https://github.com/elastic/elasticsearch-cloud-aws

因此,

在 es 论坛中进行此聊天后: https://discuss.elastic.co/t/cloud-aws-plugin-not-able-to-join-cluster/44703/3

我决定干净地重建节点,因为我怀疑 Java 从 8 降级到 7 以允许 cloud-aws 插件工作可能会导致问题,并且我尝试了许多失败的修复。我还(来自提供的链接中的建议)安装了 marvel-agent 和许可证插件,但我还没有看到任何其他人这样做来让发现工作,所以我不确定这是一个要求。我还确保保留 es 包升级,因为 marvel 插件在 es 升级时做了一些抱怨(尽管插件也可以升级,所以真的只是个人喜好)。

发现现在运行良好。

最新更新