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

时间:2016-03-16 23:03:39

标签: amazon-web-services amazon-ec2 elasticsearch-plugin

所以我一直在尝试使用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但是日志似乎表明该发现仍然超时。我设置了#34; discovery.ec2.tag。*"加快发现过程,但这没有帮助。

有没有人知道如何配置这个插件?我已经阅读了一些指南,并且使用了比我更少的配置选项,并且仍然可以将节点连接到主节点。

2 个答案:

答案 0 :(得分:0)

我正在运行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。来自docs

  

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

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

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

答案 1 :(得分:0)

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

我决定彻底重建节点,因为我怀疑Java从8降级到7以允许cloud-aws插件工作可能导致问题,我曾尝试过许多失败的修复程序。我也(从提供的链接建议)安装了漫威代理和许可插件,但我没有看到任何其他人这样做以使发现工作,所以我不确定这是一个要求。我还确保保持es包升级,因为marvel插件在升级时做了一些抱怨(虽然插件也可以升级,所以只是个人偏好)。

发现现在运作良好。