2016-03-02 85 views
0

我的目標是使用EC2發現在AWS中創建elasticsearch集羣。AWS elasticsearch EC2發現,無法找到其他節點

我有3個實例,每個運行elasticsearch。 我已經爲每個實例提供了一個允許它們描述ec2數據的IAM角色。 每個實例位於安全組「sec-group-elasticsearch」內部

節點開始但未找到彼此(日誌如下)。

我可以從一個節點登錄到另一個使用私有DNS和端口9300

參考
例如。來自節點A-> B的telnet工作並且B-> A工作。

telnet ip-xxx-xxx-xx-xxx.vpc.fakedomain.com 9300 

爲每個實例的IAM角色

{ 
    "Statement": [ 
     { 
      "Action": [ 
       "ec2:DescribeInstances" 
      ], 
      "Effect": "Allow", 
      "Resource": [ 
       "*" 
      ] 
     } 
    ], 
    "Version": "2012-10-17" 
} 

秒集團規章

Inbound 
Custom TCP Rule TCP 9200 - 9400 0.0.0.0/0 

Outbound 
All traffic allowed 

elasticsearch.yml

bootstrap.mlockall: false 
cloud.aws.region: us-east 
cluster.name: my-ec2-elasticsearch 
discovery: ec2 
discovery.ec2.groups: sec-group-elasticsearch 
discovery.ec2.host_type: private_dns 
discovery.ec2.ping_timeout: 30s 
discovery.zen.minimum_master_nodes: 2 
discovery.zen.ping.multicast.enabled: false 
http.port: 9200 
network.host: _ec2:privateDns_ 
node.data: false 
node.master: true 
transport.tcp.port: 9300 

在啓動時,每個實例的日誌,像這樣:

[2016-03-02 03:13:48,128][INFO ][node      ] [ip-xxx-xxx-xx-xxx.vpc.fakedomain.com] version[2.1.0], pid[26976], build[72cd1f1/2015-11-18T22:40:03Z] 
[2016-03-02 03:13:48,129][INFO ][node      ] [ip-xxx-xxx-xx-xxx.vpc.fakedomain.com] initializing ... 
[2016-03-02 03:13:48,592][INFO ][plugins     ] [ip-xxx-xxx-xx-xxx.vpc.fakedomain.com] loaded [cloud-aws], sites [head] 
[2016-03-02 03:13:48,620][INFO ][env      ] [ip-xxx-xxx-xx-xxx.vpc.fakedomain.com] using [1] data paths, mounts [[/ (/dev/xvda1)]], net usable_space [11.4gb], net total_space [14.6gb], spins? [no], types [ext4] 
[2016-03-02 03:13:50,928][INFO ][node      ] [ip-xxx-xxx-xx-xxx.vpc.fakedomain.com] initialized 
[2016-03-02 03:13:50,928][INFO ][node      ] [ip-xxx-xxx-xx-xxx.vpc.fakedomain.com] starting ... 
[2016-03-02 03:13:51,065][INFO ][transport    ] [ip-xxx-xxx-xx-xxx.vpc.fakedomain.com] publish_address {ip-xxx-xxx-xx-xxx.vpc.fakedomain.com/xxx-xxx-xx-xxx:9300}, bound_addresses {xxx-xxx-xx-xxx:9300} 
[2016-03-02 03:13:51,074][INFO ][discovery    ] [ip-xxx-xxx-xx-xxx.vpc.fakedomain.com] my-ec2-elasticsearch/xVOkfK4TT-GWaPln59wGxw 
[2016-03-02 03:14:21,075][WARN ][discovery    ] [ip-xxx-xxx-xx-xxx.vpc.fakedomain.com] waited for 30s and no initial state was set by the discovery 
[2016-03-02 03:14:21,084][INFO ][http      ] [ip-xxx-xxx-xx-xxx.vpc.fakedomain.com] publish_address {ip-xxx-xxx-xx-xxx.vpc.fakedomain.com/xxx-xxx-xx-xxx:9200}, bound_addresses {xxx-xxx-xx-xxx:9200} 
[2016-03-02 03:14:21,085][INFO ][node      ] [ip-xxx-xxx-xx-xxx.vpc.fakedomain.com] started 

跟蹤記錄上的發現:

2016-03-02 04:25:27,753][TRACE][discovery.zen.ping.unicast] [ip-xxx-xxx-xx-xxx.vpc.fakedomain.com] [26] failed to connect to {#zen_unicast_2#}{::1}{[::1]:9300} 
ConnectTransportException[[][[::1]:9300] connect_timeout[30s]]; nested: ConnectException[Connection refused: /0:0:0:0:0:0:0:1:9300]; 
    at org.elasticsearch.transport.netty.NettyTransport.connectToChannelsLight(NettyTransport.java:916) 
    at .............. 



[2016-03-02 04:25:29,253][TRACE][discovery.zen.ping.unicast] [ip-xxx-xxx-xx-xxx.vpc.fakedomain.com] [26] connecting (light) to {#zen_unicast_1#}{127.0.0.1}{127.0.0.1:9300} 
[2016-03-02 04:25:29,253][TRACE][discovery.zen.ping.unicast] [ip-xxx-xxx-xx-xxx.vpc.fakedomain.com] [26] sending to {ip-xxx-xxx-xx-xxx.vpc.fakedomain.com}{jtq31eB_Td-GpnxREFytLg}{xxx-xxx-xx-xxx}{ip-xxx-xxx-xx-xxx.vpc.team.getgoing.com/xxx-xxx-xx-xxx:9300}{data=false, master=true} 
[2016-03-02 04:25:29,254][TRACE][discovery.zen.ping.unicast] [ip-xxx-xxx-xx-xxx.vpc.fakedomain.com] [26] received response from {ip-xxx-xxx-xx-xxx.vpc.fakedomain.com}{jtq31eB_Td-GpnxREFytLg}{xxx-xxx-xx-xxx}{ip-xxx-xxx-xx-xxx.vpc.team.getgoing.com/xxx-xxx-xx-xxx:9300}{data=false, master=true}: [ping_response{node [{ip-xxx-xxx-xx-xxx.vpc.fakedomain.com}{jtq31eB_Td-GpnxREFytLg}{xxx-xxx-xx-xxx}{ip-xxx-xxx-xx-xxx.vpc.team.getgoing.com/xxx-xxx-xx-xxx:9300}{data=false, master=true}], id[143], master [null], hasJoinedOnce [false], cluster_name[my-ec2-elasticsearch]}, ping_response{node [{ip-xxx-xxx-xx-xxx.vpc.fakedomain.com}{jtq31eB_Td-GpnxREFytLg}{xxx-xxx-xx-xxx}{ip-xxx-xxx-xx-xxx.vpc.team.getgoing.com/xxx-xxx-xx-xxx:9300}{data=false, master=true}], id[145], master [null], hasJoinedOnce [false], cluster_name[my-ec2-elasticsearch]}, ping_response{node [{ip-xxx-xxx-xx-xxx.vpc.fakedomain.com}{jtq31eB_Td-GpnxREFytLg}{xxx-xxx-xx-xxx}{ip-xxx-xxx-xx-xxx.vpc.team.getgoing.com/xxx-xxx-xx-xxx:9300}{data=false, master=true}], id[147], master [null], hasJoinedOnce [false], cluster_name[my-ec2-elasticsearch]}, ping_response{node [{ip-xxx-xxx-xx-xxx.vpc.fakedomain.com}{jtq31eB_Td-GpnxREFytLg}{xxx-xxx-xx-xxx}{ip-xxx-xxx-xx-xxx.vpc.team.getgoing.com/xxx-xxx-xx-xxx:9300}{data=false, master=true}], id[149], master [null], hasJoinedOnce [false], cluster_name[my-ec2-elasticsearch]}, ping_response{node [{ip-xxx-xxx-xx-xxx.vpc.fakedomain.com}{jtq31eB_Td-GpnxREFytLg}{xxx-xxx-xx-xxx}{ip-xxx-xxx-xx-xxx.vpc.team.getgoing.com/xxx-xxx-xx-xxx:9300}{data=false, master=true}], id[151], master [null], hasJoinedOnce [false], cluster_name[my-ec2-elasticsearch]}, ping_response{node [{ip-xxx-xxx-xx-xxx.vpc.fakedomain.com}{jtq31eB_Td-GpnxREFytLg}{xxx-xxx-xx-xxx}{ip-xxx-xxx-xx-xxx.vpc.team.getgoing.com/xxx-xxx-xx-xxx:9300}{data=false, master=true}], id[153], master [null], hasJoinedOnce [false], cluster_name[my-ec2-elasticsearch]}, ping_response{node [{ip-xxx-xxx-xx-xxx.vpc.fakedomain.com}{jtq31eB_Td-GpnxREFytLg}{xxx-xxx-xx-xxx}{ip-xxx-xxx-xx-xxx.vpc.team.getgoing.com/xxx-xxx-xx-xxx:9300}{data=false, master=true}], id[154], master [null], hasJoinedOnce [false], cluster_name[my-ec2-elasticsearch]}] 
[2016-03-02 04:25:29,253][TRACE][discovery.zen.ping.unicast] [ip-xxx-xxx-xx-xxx.vpc.fakedomain.com] [26] connecting (light) to {#zen_unicast_2#}{::1}{[::1]:9300} 
[2016-03-02 04:25:29,254][TRACE][discovery.zen.ping.unicast] [ip-xxx-xxx-xx-xxx.vpc.fakedomain.com] [26] failed to connect to {#zen_unicast_1#}{127.0.0.1}{127.0.0.1:9300} 
ConnectTransportException[[][127.0.0.1:9300] connect_timeout[30s]]; nested: ConnectException[Connection refused: /127.0.0.1:9300]; 
    at ........... 

[2016-03-02 04:25:29,255][TRACE][discovery.zen.ping.unicast] [ip-xxx-xxx-xx-xxx.vpc.fakedomain.com] [26] failed to connect to {#zen_unicast_2#}{::1}{[::1]:9300} 
ConnectTransportException[[][[::1]:9300] connect_timeout[30s]]; nested: ConnectException[Connection refused: /0:0:0:0:0:0:0:1:9300]; 
    at 
+0

既然你」已禁用多播(好),你錯過了單播主機列表'di scovery.zen.ping.unicast.hosts:[「a.b.c.d」]'在您的配置中。列出該列表中的所有節點。 – Val

+0

我的印象是,ec2 discovery插件會根據安全組尋找主機,並將它們視爲所有潛在的集羣夥伴? – mconlin

+0

您是否可以修改您的'logging.yml'文件,以便通過'discovery:TRACE'增加EC2插件的日誌記錄級別。它應該打印出關於發現過程的更多信息。 – Val

回答

3

您的elasticsearch.yml配置文件中一個微小的錯字:

discovery: ec2 

應改爲:

discovery.type: ec2