原英文版地址: https://www.elastic.co/guide/en/elasticsearch/reference/7.7/bootstrap-checks.html, 原文档版权归 www.elastic.co 所有
本地英文版地址: ../en/bootstrap-checks.html

引导检查 (Bootstrap Checks)

总的来说,我们有很多用户因为没有配置 Elasticsearch的重要设置 而遭遇意外问题的经验。 在以前版本的 Elasticsearch 中,这些设置的错误配置会被记录为警告。 用户有时会错过这些日志消息,这是可以理解的。 为了确保这些设置得到应有的重视,Elasticsearch 在启动时会进行引导检查。

这些引导检查会检查各种 Elasticsearch 的和系统的设置,并将它们与 Elasticsearch 操作的安全值进行比较。 如果 Elasticsearch 处于开发模式,任何失败的引导检查都会在 Elasticsearch 日志中显示为警告。 如果 Elasticsearch 处于生产模式,任何失败的引导检查都将导致 Elasticsearch 拒绝启动。

为了防止 Elasticsearch 在不兼容的设置下运行,会强制执行一些引导检查。 这些检查被单独记录。

开发模式 vs 生产模式

默认情况下,Elasticsearch 绑定到回环地址进行 HTTPtransport (传输, 内部的) 通信。 这对于下载和玩 Elasticsearch 以及日常开发来说很好,但对于生产系统来说没用。 要加入集群,Elasticsearch 节点必须可以通过 transport 通信进行访问。 要通过非回环地址加入集群,节点必须将 transport 绑定到非回环地址,并且不能使用单节点发现(single-node discovery)。 因此,我们认为,如果一个 Elasticsearch 节点不能通过非回环地址与另一台机器组成一个集群,那么它就处于开发模式;否则,如果它可以通过非回环地址加入一个集群,那么它就处于生产模式。

注意,HTTP 和 transport 可以通过http.hosttransport.host 单独配置; 这对于在不触发生产模式的情况下将单个节点配置为可通过 HTTP 访问以进行测试非常有用。

单节点发现 (Single-node discovery)

我们认识到,一些用户需要将 transport 绑定到外部接口,以测试它们对 transport 客户端的使用。 针对这种情况,我们提供发现类型 single-node (通过将 discovery.type 设置为 single-node); 在这种情况下,一个节点将选举自己为主节点,而不会与任何其他节点一起加入集群。

强制引导检查

如果你在生产环境中运行单个节点,则有可能规避引导检查(不将 transport 绑定到外部接口,或者将 transport 绑定到外部接口并将发现类型设置为 single-node)。 对于这种情况,可以通过将系统属性 es.enforce.bootstrap.checks 设置为 true (在 设置 JVM 选项 中进行设置,或者将 -Des.enforce.bootstrap.checks=true 添加到环境变量 ES_JAVA_OPTS中) 来强制执行引导检查。 如果你处于这种特殊情况,强烈建议你这样做。 此系统属性可用于强制执行独立于节点配置的引导检查。