ElasticSearch未加入AWS Cluster中的节点

时间:2014-11-28 15:26:31

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

我在使用ElasticSearch在AWS上制作集群时遇到问题:

软件: ES:elasticsearch-1.4.1.zip

AWS-Cloud:elasticsearch-cloud-aws / 2.4.1

这正在AWS EC2 Micro实例(Ubuntu 64)上运行。两个实例都使用相同的安全组,一切都打开,没有任何限制 我在美国西部的俄勒冈州(us-west-2b)创建了两个实例,我正在使用这个配置文件:

{
  "cluster.name": "mycluster",
  "http": {
    "cors.enabled" : true,
    "cors.allow-origin": "*"
},
   "node.name": "LosAngeles-node",
   "node.master": "false",
  "cloud": {
    "aws": {
      "access_key": "xxxxxxxxxxxx",
      "secret_key": "xxxxxxxxxxxxxxxxxxxx",
      "region": "us-west"      
    }
  },
  "discovery": {
    "type": "ec2",
          "ec2" : {
        "groups": "esallaccess"
   },
   "zen": {
       "ping": {
          "multicast": {
             "enabled": "false"
              }
          }
      }
 }
}

LosAngeles节点应该是群集的工作马,因此node.master = false。 当我启动此节点时,它会不断地ping并且永远不会停止ping,这是在我启动它之后的日志中:

...
[2014-11-28 15:18:30,593][TRACE][discovery.ec2            ] [LosAngeles-node] building dynamic  
unicast discovery nodes...

[2014-11-28 15:18:30,593][DEBUG][discovery.ec2            ] [LosAngeles-node] using dynamic   
discovery nodes []

[2014-11-28 15:18:32,170][TRACE][discovery.ec2            ] [LosAngeles-node] building dynamic 
unicast discovery nodes...

[2014-11-28 15:18:32,170][DEBUG][discovery.ec2            ] [LosAngeles-node] using dynamic 
discovery nodes []

[2014-11-28 15:18:32,170][TRACE][discovery.ec2            ] [LosAngeles-node] full ping responses: 
{none}

[2014-11-28 15:18:32,170][DEBUG][discovery.ec2            ] [LosAngeles-node] filtered ping 
responses: (filter_client[true], filter_data[false]) {none}

[2014-11-28 15:18:32,170][TRACE][discovery.ec2            ] [LosAngeles-node] starting to ping
...
enter code here

我认为这是区域问题。任何帮助表示赞赏。

PS 主节点(NewYork)具有相同的配置文件,具有不同的名称和node.master = true

2 个答案:

答案 0 :(得分:1)

尝试将主节点地址添加到新节点配置中。

在elasticsearch.yml中 验证以下参数:

cluster.name: your-cluster-name
node.master: false
node.data: false
discovery.zen.ping.timeout: 3s
discovery.zen.ping.multicast.enabled: false
discovery.zen.ping.unicast.hosts: ["your-master.dns.domain.com"]

如果您使用多播,请将其禁用。它在AWS EC2中不起作用 对于任何情况,请检查您的安全组。

答案 1 :(得分:1)

需要允许您的实例获取彼此的信息以发现可用的群集,以便您的节点找到要加入的群集。

一旦获得提名,AWS-cloud插件会自动处理节点加入群集。

将发现权限设置为策略并将其应用于您的IAM角色应解决此问题。以下是我使用的政策:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "whatever",
            "Effect": "Allow",
            "Action": [
                "s3:GetObject",
                "ec2:DescribeAvailabilityZones",
                "ec2:DescribeInstances",
                "ec2:DescribeRegions",
                "ec2:DescribeSecurityGroups",
                "ec2:DescribeTags"
            ],
            "Resource": [
                "*"
            ]
        }
    ]
}