ElasticSearch 启动错误 - 默认发现设置不适合生产使用;

问题描述 投票:0回答:6

我尝试在elasticsearch.yaml文件中给出以下配置

network.host: aa.bbb.ccc.dd
这是我的 IPv4 地址 和
http.port: 9200

当我尝试在我的Windows机器上运行elasticsearch.bat时,对此的响应如下:

the default discovery settings are unsuitable for production use; at least one of [discovery.seed_hosts, discovery.seed_providers, cluster.initial_master_nodes] must be configured

我真的不太确定集群初始化要配置什么。默认值为

discovery.seed_hosts: ["host1", "host2"]
cluster.initial_master_nodes: ["node-1", "node-2"]

elasticsearch startup elasticsearch-7
6个回答
238
投票

简而言之,如果您在本地运行 Elasticsearch(单节点)或仅在云上使用单节点,则只需在

elasticsearch.yml
中使用以下配置即可避免生产检查,并使其正常工作,有关此配置的更多信息在这个SO答案中:

discovery.type: single-node

39
投票

这是我所做的配置,因为我只有一台装有 Elastic Search 数据库的机器(仅限 1 个节点)。

node.data : true
network.host : 0.0.0.0
discovery.seed_hosts : []
cluster.initial_master_nodes : []

15
投票
  • 我在

    elastic-search 7.6.2
    版本中也遇到了同样的问题。解决上述问题的方法是,只需在
    "discovery.seed_hosts : 127.0.0.1:9300"
    文件中添加
    discovery.type: single-node
    或设置
    eleasticsearch.yml
    即可避免生产使用错误。

  • 单击此处进行发现和集群形成设置。

  • 我已经提供了详细的答案这里


13
投票

Elasticsearch 7 需要信息来形成集群。这是由 elasticsearch.yml 中的以下两个属性提供的

cluster.initial_master_nodes
:这用于提供初始节点集,其投票将在主选举过程中考虑。

discovery.seed_hosts
:这用于提供符合主资格的节点集。这应该包含所有符合主节点资格的节点的名称。

例如,您正在形成一个包含三个节点的集群:

n0
n1
n2
,它们是符合主条件的,那么您的配置将如下所示:

cluster.initial_master_nodes: ["n0", "n1", "n2"]
discovery.seed_hosts: ["n0", "n1", "n2"]

注意:

cluster.initial_master_nodes
仅被elastic使用一次,这是第一次形成簇。

有关更多详细信息,请阅读此指南


0
投票

我从 docker 容器的角度添加我的答案。我最初尝试在同一个集群中运行 3 个 Elasticsearch 节点,然后尝试仅运行 1 个节点,但遇到了同样的问题。为了解决这个问题,我删除了 docker 卷。请注意,我的 docker elasticsearch 节点没有数据,因此不会因 docker 卷删除而丢失数据。

https://discuss.elastic.co/t/how-my-config-file-should-be-on-publish-mode-with-a-single-node/189034


0
投票

官方命令是以集群形式启动。如果想以单机形式启动,可以使用以下命令: {docker run --name elasticsearch --net elastic -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" -t docker.elastic.co/elasticsearch/elasticsearch:7.17.21}

© www.soinside.com 2019 - 2024. All rights reserved.