启动检查

编辑

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

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

有一些启动检查始终会被强制执行,以防止 Elasticsearch 在不兼容的设置下运行。这些检查会单独记录。

开发模式 vs. 生产模式

编辑

默认情况下,Elasticsearch 将绑定到HTTP 和传输(内部)通信的回环地址。这对于下载和使用 Elasticsearch 以及日常开发来说是没问题的,但对于生产系统来说是无用的。要加入集群,Elasticsearch 节点必须通过传输通信访问。要通过非回环地址加入集群,节点必须将传输绑定到非回环地址,并且不使用单节点发现。因此,如果 Elasticsearch 节点无法通过非回环地址与另一台机器形成集群,我们认为该节点处于开发模式,否则如果可以通过非回环地址加入集群,则处于生产模式。

请注意,HTTP 和传输可以通过http.hosttransport.host 独立配置;这对于配置单个节点以便可以通过 HTTP 访问以进行测试而无需触发生产模式很有用。

单节点发现

编辑

我们认识到,一些用户需要将传输绑定到外部接口,以测试远程集群配置。对于这种情况,我们提供发现类型 single-node (通过将 discovery.type 设置为 single-node 来配置);在这种情况下,节点将选举自己为 master,并且不会加入任何其他节点的集群。

强制执行启动检查

编辑

如果您在生产环境中运行单个节点,则可以通过不将传输绑定到外部接口,或者将传输绑定到外部接口并将发现类型设置为 single-node 来规避启动检查。对于这种情况,您可以通过在JVM 选项中将系统属性 es.enforce.bootstrap.checks 设置为 true 来强制执行启动检查。如果您处于这种情况,我们强烈建议您这样做。此系统属性可以用来强制执行启动检查,而与节点配置无关。