我目前正在将群集升级到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 []
答案 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