【问题标题】:ElasticSearch not joining nodes in AWS ClusterElasticSearch 未加入 AWS 集群中的节点
【发布时间】:2025-12-23 21:05:06
【问题描述】:

我在使用 ElasticSearch 在 AWS 上创建集群时遇到问题:

软件: ES:elasticsearch-1.4.1.zip

AWS-Cloud:elasticsearch-cloud-aws/2.4.1

这是在 AWS EC2 微型实例 (Ubuntu 64) 上运行的。两个实例都使用相同的安全组,一切都打开,完全没有限制 我在 us-west Oregon (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

【问题讨论】:

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


    【解决方案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 中不起作用 对于任何情况,请检查您的安全组。

    【讨论】:

      【解决方案2】:

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

      一旦指定了主节点,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": [
                      "*"
                  ]
              }
          ]
      } 
      

      【讨论】:

        最近更新 更多