Elasticseach 6.1 EC2群集发现无法正常工作

时间:2018-01-08 12:49:13

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

我目前正在将群集升级到6.1,并且无法让节点在启动时相互发现。三个单独的节点启动但后来陷入循环:

[2018-01-08T11:33:01,421][WARN ][o.e.d.z.ZenDiscovery     ] [ip-10-xxx-xxx-xxx] not enough master nodes discovered during pinging (found [[Candidate{node={ip-10-xxx-xxx-xxx}{gMlxxxxxRW-74axxxQ8V-3x}{6gBBYZxxxxxxxon=-1}]], but needed [2]), pinging again

我配置的相关部分是:

# Use the AWS private IP as self identifier
http.host: _ec2:privateIp_
network.host: _ec2:privateIp_
http.bind_host: 0.0.0.0
network.bind_host: 0.0.0.0

discovery.zen.hosts_provider: ec2
# These are expanded in my CloudFormation template
discovery.ec2.tag.Stack: @@STACK
discovery.ec2.tag.App: @@APP
discovery.ec2.tag.Stage: @@STAGE

启用调试以进行发现(使用logger.org.elasticsearch.discovery.ec2: "TRACE")让我知道发现过程失败的一些证据:

[2018-01-08T11:32:58,419][TRACE][o.e.d.e.AwsEc2UnicastHostsProvider] [ip-10-xxx-xxx-xxx] building dynamic unicast discovery nodes...
[2018-01-08T11:32:58,420][DEBUG][o.e.d.e.AwsEc2UnicastHostsProvider] [ip-10-xxx-xxx-xxx] using dynamic discovery nodes []

1 个答案:

答案 0 :(得分:4)

经过进一步调试后,我发现文档不正确。

端点设置的文档说:"要连接的ec2服务端点。这将由ec2客户端根据实例位置自动计算出来,但可以明确指定。"

不幸的是,这不是真的,https://github.com/elastic/elasticsearch/issues/27464存在未解决的问题。

进一步排查时,我在弹性搜索配置中使用logger.com.amazonaws.request: "DEBUG"启用了AWS日志记录。这在日志文件中提供了一个条目,表明它正在联系us-east-1,尽管实例位于eu-west-1:

[2018-01-08T12:26:40,029][DEBUG][c.a.request              ] Sending Request: POST https://ec2.us-east-1.amazonaws.com / Parameters: ({"Action":["DescribeInstances"],"Version":["2016-11-15"] ...<snip>

看起来他们知道并且可能修复它以使插件的行为与文档匹配(请参阅https://github.com/elastic/elasticsearch/issues/27924),但同时修复是使用以下内容显式设置端点:

discovery.ec2.endpoint: ec2.eu-west-1.amazonaws.com