elasticsearch 将节点添加到正在运行的群集elasticsearch导致未发现主节点异常 问题,elasticsearch,cluster-computing,node-modules,elasticsearch,Cluster Computing,Node Modules" /> elasticsearch 将节点添加到正在运行的群集elasticsearch导致未发现主节点异常 问题,elasticsearch,cluster-computing,node-modules,elasticsearch,Cluster Computing,Node Modules" />

elasticsearch 将节点添加到正在运行的群集elasticsearch导致未发现主节点异常 问题

elasticsearch 将节点添加到正在运行的群集elasticsearch导致未发现主节点异常 问题,elasticsearch,cluster-computing,node-modules,elasticsearch,Cluster Computing,Node Modules,我有一个正在运行的集群,我想在其中添加一个数据节点。正在运行的集群是 x.x.x.246 数据节点是 x.x.x.99 每个服务器都可以通过ping相互查看。 机器操作系统:CentOS7 弹性搜索:7.61 配置: 以下是x.x.x.246的elasticsearch.yml: cluster.name: elasticsearch node.master: true node.name: Node_master node.data: true path.data: /var/lib/el

我有一个正在运行的集群,我想在其中添加一个数据节点。正在运行的集群是

x.x.x.246
数据节点是

x.x.x.99
每个服务器都可以通过ping相互查看。 机器操作系统:CentOS7 弹性搜索:7.61

配置: 以下是x.x.x.246的elasticsearch.yml:

cluster.name: elasticsearch
node.master: true
node.name: Node_master
node.data: true
path.data: /var/lib/elasticsearch
path.logs: /var/log/elasticsearch
network.host: x.x.x.246
http.port: 9200
discovery.seed_hosts: ["x.x.x.99:9300"]
cluster.initial_master_nodes: ["x.x.x.246:9300"]
cluster.name: elasticsearch
node.name: master
node.master: true
node.data: true
path.data: /var/lib/elasticsearch
path.logs: /var/log/elasticsearch
network.host: 0.0.0.0
http.port: 9200
discovery.seed_hosts: ["x.x.x.99","x.x.x.246]
cluster.initial_master_nodes: ["x.x.x.246"]
logger.org.elasticsearch.discovery: TRACE

这是x.x.x.99的elasticsearch.yml

cluster.name: elasticsearch
node.name: Node_master
node.data: true
path.data: /var/lib/elasticsearch
path.logs: /var/log/elasticsearch
network.host: x.x.x.99
http.port: 9200
discovery.seed_hosts: ["x.x.x.245:9300"]
cluster.initial_master_nodes: ["x.x.x.246:9300"]
cluster.name: elasticsearch
node.name: node
node.data: true
path.data: /var/lib/elasticsearch
path.logs: /var/log/elasticsearch
network.host: 0.0.0.0
http.port: 9200
discovery.seed_hosts: ["x.x.x.246","x.x.x.99"]
cluster.initial_master_nodes: ["x.x.x.246"]
logger.org.elasticsearch.discovery: TRACE

在机器上测试运行弹性搜索 当我在每台机器上运行systemctl start elasticsearch时,它运行得很好

x.x.x.246上的试运行 显示:未更改的节点数

curl -X GET "X.X.X.99:9200/_cluster/health?pretty
展示:

编辑 以下是x.x.x.246的elasticsearch.yml:

cluster.name: elasticsearch
node.master: true
node.name: Node_master
node.data: true
path.data: /var/lib/elasticsearch
path.logs: /var/log/elasticsearch
network.host: x.x.x.246
http.port: 9200
discovery.seed_hosts: ["x.x.x.99:9300"]
cluster.initial_master_nodes: ["x.x.x.246:9300"]
cluster.name: elasticsearch
node.name: master
node.master: true
node.data: true
path.data: /var/lib/elasticsearch
path.logs: /var/log/elasticsearch
network.host: 0.0.0.0
http.port: 9200
discovery.seed_hosts: ["x.x.x.99","x.x.x.246]
cluster.initial_master_nodes: ["x.x.x.246"]
logger.org.elasticsearch.discovery: TRACE

这是x.x.x.99的elasticsearch.yml

cluster.name: elasticsearch
node.name: Node_master
node.data: true
path.data: /var/lib/elasticsearch
path.logs: /var/log/elasticsearch
network.host: x.x.x.99
http.port: 9200
discovery.seed_hosts: ["x.x.x.245:9300"]
cluster.initial_master_nodes: ["x.x.x.246:9300"]
cluster.name: elasticsearch
node.name: node
node.data: true
path.data: /var/lib/elasticsearch
path.logs: /var/log/elasticsearch
network.host: 0.0.0.0
http.port: 9200
discovery.seed_hosts: ["x.x.x.246","x.x.x.99"]
cluster.initial_master_nodes: ["x.x.x.246"]
logger.org.elasticsearch.discovery: TRACE

登录x.x.x.99:

[root@dev ~]# tail -30 /var/log/elasticsearch/elasticsearch.log
        at org.elasticsearch.common.util.concurrent.ThreadContext$ContextPreservingAbstractRunnable.doRun(ThreadContext.java:692) ~[elasticsearch-7.6.1.jar:7.6.1]
        at org.elasticsearch.common.util.concurrent.AbstractRunnable.run(AbstractRunnable.java:37) ~[elasticsearch-7.6.1.jar:7.6.1]
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128) ~[?:?]
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) ~[?:?]
        at java.lang.Thread.run(Thread.java:830) ~[?:?]
[2020-03-19T12:12:04,462][INFO ][o.e.c.c.JoinHelper       ] [node-1] failed to join {master}{0UHYehfNQ2-WCadTC_VVkA}{1FNy5AJrTpKOCAejBLKR2w}{10.64.2.246}{10.64.2.246:9300}{dilm}{ml.machine_memory=1907810304, ml.max_open_jobs=20, xpack.installed=true} with JoinRequest{sourceNode={node-1}{jb_3lJq1R5-BZtxlPs_NyQ}{a4TYDhG7SWqL3CSG4tusEg}{10.64.2.99}{10.64.2.99:9300}{d}{xpack.installed=true}, optionalJoin=Optional[Join{term=178, lastAcceptedTerm=8, lastAcceptedVersion=100, sourceNode={node-1}{jb_3lJq1R5-BZtxlPs_NyQ}{a4TYDhG7SWqL3CSG4tusEg}{10.64.2.99}{10.64.2.99:9300}{d}{xpack.installed=true}, targetNode={master}{0UHYehfNQ2-WCadTC_VVkA}{1FNy5AJrTpKOCAejBLKR2w}{10.64.2.246}{10.64.2.246:9300}{dilm}{ml.machine_memory=1907810304, ml.max_open_jobs=20, xpack.installed=true}}]}
org.elasticsearch.transport.RemoteTransportException: [master][10.64.2.246:9300][internal:cluster/coordination/join]
Caused by: java.lang.IllegalStateException: failure when sending a validation request to node
        at org.elasticsearch.cluster.coordination.Coordinator$2.onFailure(Coordinator.java:514) ~[elasticsearch-7.6.1.jar:7.6.1]
        at org.elasticsearch.action.ActionListenerResponseHandler.handleException(ActionListenerResponseHandler.java:59) ~[elasticsearch-7.6.1.jar:7.6.1]
        at org.elasticsearch.transport.TransportService$ContextRestoreResponseHandler.handleException(TransportService.java:1118) ~[elasticsearch-7.6.1.jar:7.6.1]
        at org.elasticsearch.transport.TransportService$ContextRestoreResponseHandler.handleException(TransportService.java:1118) ~[elasticsearch-7.6.1.jar:7.6.1]
        at org.elasticsearch.transport.InboundHandler.lambda$handleException$2(InboundHandler.java:244) ~[elasticsearch-7.6.1.jar:7.6.1]
        at org.elasticsearch.common.util.concurrent.ThreadContext$ContextPreservingRunnable.run(ThreadContext.java:633) ~[elasticsearch-7.6.1.jar:7.6.1]
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128) ~[?:?]
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) ~[?:?]
        at java.lang.Thread.run(Thread.java:830) [?:?]
Caused by: org.elasticsearch.transport.RemoteTransportException: [node-1][10.64.2.99:9300][internal:cluster/coordination/join/validate]
Caused by: org.elasticsearch.cluster.coordination.CoordinationStateRejectedException: join validation on cluster state with a different cluster uuid P4QlwvuRRGSmlT77RroSjA than local cluster uuid oUoIe2-bSbS2UPg722ud9Q, rejecting
        at org.elasticsearch.cluster.coordination.JoinHelper.lambda$new$4(JoinHelper.java:148) ~[elasticsearch-7.6.1.jar:7.6.1]
        at org.elasticsearch.xpack.security.transport.SecurityServerTransportInterceptor$ProfileSecuredRequestHandler$1.doRun(SecurityServerTransportInterceptor.java:257) ~[?:?]
        at org.elasticsearch.common.util.concurrent.AbstractRunnable.run(AbstractRunnable.java:37) ~[elasticsearch-7.6.1.jar:7.6.1]
        at org.elasticsearch.xpack.security.transport.SecurityServerTransportInterceptor$ProfileSecuredRequestHandler.messageReceived(SecurityServerTransportInterceptor.java:315) ~[?:?]
        at org.elasticsearch.transport.RequestHandlerRegistry.processMessageReceived(RequestHandlerRegistry.java:63) ~[elasticsearch-7.6.1.jar:7.6.1]
        at org.elasticsearch.transport.InboundHandler$RequestHandler.doRun(InboundHandler.java:264) ~[elasticsearch-7.6.1.jar:7.6.1]
        at org.elasticsearch.common.util.concurrent.ThreadContext$ContextPreservingAbstractRunnable.doRun(ThreadContext.java:692) ~[elasticsearch-7.6.1.jar:7.6.1]
        at org.elasticsearch.common.util.concurrent.AbstractRunnable.run(AbstractRunnable.java:37) ~[elasticsearch-7.6.1.jar:7.6.1]
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128) ~[?:?]
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) ~[?:?]
        at java.lang.Thread.run(Thread.java:830) ~[?:?]
对于节点x.x.x.99,种子主机的条目错误。应如下所示:

discovery.seed_hosts: ["x.x.x.246:9300"]
discovery.seed_hosts列表用于检测主节点,因为此列表包含到符合主节点条件的节点的地址,并保存当前主节点的信息,因为在x.x.x.99的配置中,它指向x.x.x.245而不是x.x.x.246,节点x.x.x.99无法检测到主节点

评论中的讨论后正确配置应为:

主节点:

请注意,如果希望上述节点仅为主节点,而不保存数据,请设置

node.data: false
数据节点:

此外,由于节点x.x.x.99无法加入群集,因此它具有过时的群集状态。因此,请删除x.x.x.99上的数据文件夹并重新启动此节点。

对于节点x.x.x.99,种子主机的条目错误。应如下所示:

discovery.seed_hosts: ["x.x.x.246:9300"]
discovery.seed_hosts列表用于检测主节点,因为此列表包含到符合主节点条件的节点的地址,并保存当前主节点的信息,因为在x.x.x.99的配置中,它指向x.x.x.245而不是x.x.x.246,节点x.x.x.99无法检测到主节点

评论中的讨论后正确配置应为:

主节点:

请注意,如果希望上述节点仅为主节点,而不保存数据,请设置

node.data: false
数据节点:


此外,由于节点x.x.x.99无法加入群集,因此它具有过时的群集状态。因此,请删除x.x.x.99上的数据文件夹并重新启动此节点。

之所以无法选择主节点,是因为提到了discovery.seed_hosts:[x.x.x.245:9300],它不是当前主节点配置的一部分,也不是主节点配置的一部分。正如官方ES文档中提到的,它用于选择主节点

您应该详细阅读与主选择相关的两个重要配置:

通过在elasticsearch.yml中的行下方添加,可以在发现模块上打开调试日志,以更好地理解它

您可以在elasticsearch.yml中进行一些修改

node.name在两个节点elasticsearch.yml中具有相同的名称。 最好只提到没有端口9200的ip。 最好给network.host:0.0.0.0值,而不是elasticsearch.yml中的节点ip。 node.data:true是默认值,因此无需提及。 因此,更好、更简洁的版本如下所示:

主节点elasticsearch.yml 另一个数据节点elasticsearch.yml 验证主节点
您可以点击:9200/_cat/master,这将返回所选的主节点,该节点在您的案例中是名为master的节点。有关的详细信息。

它无法选择主节点的原因是提到discovery.seed_hosts:[x.x.x.245:9300],它不属于当前主节点配置的一部分,也不属于主节点配置的一部分。正如官方ES文档中提到的,它用于选择主节点

您应该详细阅读与主选择相关的两个重要配置:

通过在elasticsearch.yml中的行下方添加,可以在发现模块上打开调试日志,以更好地理解它

您可以在elasticsearch.yml中进行一些修改

node.name在两个节点elasticsearch.yml中具有相同的名称。 最好只提到没有端口9200的ip。 最好给network.host:0.0.0.0值,而不是elasticsearch.yml中的节点ip。 node.data:true是默认值,因此无需提及。 因此,更好、更简洁的版本如下所示:

主节点elasticsearch.yml 另一个数据节点elasticsearch.yml 验证主节点
您可以点击:9200/_cat/master,这将返回所选的主节点,该节点在您的案例中是名为master的节点。更多信息。

我也有同样的问题,当我试图从AWS windows server外部访问弹性搜索时,我无法访问它,之后我添加了

network.host : aws_private_ip
之后,我们需要重新启动弹性服务,但它在重新启动时抛出了一个错误,最后,当我们添加到下面的行时,它对我有效

cluster.initial_master_nodes: node-1

我也有同样的问题,当我试图从AWS windows服务器外部访问弹性搜索时,我无法访问它,之后我添加了

network.host : aws_private_ip
在那之后,我们需要 o重新启动弹性服务,但它在重新启动时抛出了一个错误,最后,当添加到下面的行时,它对我有效

cluster.initial_master_nodes: node-1


您好,谢谢您的回复,但这是我在yml文件中的打字错误246@yuliansen节点x.x.x.99是新节点吗?您希望它是仅数据节点吗?需要进一步澄清:1 x.x.x.246是已经运行的群集的一部分?2 x.x.x.99将不是符合主节点条件的节点?让我们来看看。很高兴它能工作。请同时接受答案:您好,谢谢您的回复,但这是我在yml文件中的打字错误246@yuliansen节点x.x.x.99是新节点吗?您希望它是仅数据节点吗?需要进一步澄清:1 x.x.x.246是已经运行的群集的一部分?2 x.x.x.99将不是符合主节点条件的节点?让我们来看看。很高兴它能工作。请同时接受答案:您好,谢谢您的回复,我已经更新了我的yml文件,但没有任何更改,x.x.x.99仍然有master\u not\u discover\u异常。错误日志将在主线程上更新。请帮我检查一下,给我更多的见解。非常感谢。@yuliansen,您是否尝试同时启动主节点和数据节点?您能否在数据节点elasticsearch.yml中标记node.master:false并仅重新启动数据node@yuliansen,你有机会看看我的建议吗?嗨,我尝试启动x.x.x.246节点。主节点:false,当我运行它时,它还返回主节点\u未\u发现\u异常。我已经运行了这两个节点,它们显示了相同的异常。@yuliansen,您提到'x.x.x.246'是您的主节点,您需要还原此节点并添加node.master:false在您的数据节点配置中,重新启动第一个主节点,然后重新启动数据节点Hi,感谢您的回复,我已经更新了我的yml文件,但没有任何更改,x.x.x.99仍有主\u未\u发现\u异常。错误日志将在主线程上更新。请帮我检查一下,给我更多的见解。非常感谢。@yuliansen,您是否尝试同时启动主节点和数据节点?您能否在数据节点elasticsearch.yml中标记node.master:false并仅重新启动数据node@yuliansen,你有机会看看我的建议吗?嗨,我尝试启动x.x.x.246节点。主节点:false,当我运行它时,它还返回主节点\u未\u发现\u异常。我已经运行了这两个节点,它们显示了相同的异常。@yuliansen,您提到'x.x.x.246'是您的主节点,您需要还原此节点并添加node.master:false(在数据节点配置中),然后重新启动第一个主节点,然后重新启动堆栈溢出上的数据节点存储在问题或答案中不应包含签名。每个帖子下面都有一张用户卡,用于签名。如果访问者想了解更多关于您的信息,他们可以将鼠标悬停在您的用户卡上,查看您的个人资料文本的第一部分,或者单击您的个人资料页面,查看更多信息,包括您在个人资料“关于我”部分中编写的内容。如果你在帖子中添加了一个额外的签名,很多人对这些签名的反应就像是垃圾邮件,也就是说是负面的。堆栈溢出上的帖子不应该在问题或答案中包含签名。每个帖子下面都有一张用户卡,用于签名。如果访问者想了解更多关于您的信息,他们可以将鼠标悬停在您的用户卡上,查看您的个人资料文本的第一部分,或者单击您的个人资料页面,查看更多信息,包括您在个人资料“关于我”部分中编写的内容。如果你在帖子中添加了一个额外的签名,很多人对这些签名的反应就好像它们是垃圾邮件,也就是说,是负面的。