启动检查
编辑启动检查编辑
我们积累了丰富的经验,了解到许多用户因为没有配置 重要设置 而遇到意外问题。在之前的 Elasticsearch 版本中,一些设置的错误配置会以警告的形式记录在日志中。可以理解的是,用户有时会错过这些日志消息。为了确保这些设置得到应有的重视,Elasticsearch 在启动时会进行启动检查。
这些启动检查会检查各种 Elasticsearch 和系统设置,并将它们与 Elasticsearch 运行安全的值进行比较。如果 Elasticsearch 处于开发模式,任何失败的启动检查都会以警告的形式出现在 Elasticsearch 日志中。如果 Elasticsearch 处于生产模式,任何失败的启动检查都会导致 Elasticsearch 拒绝启动。
有一些启动检查始终强制执行,以防止 Elasticsearch 使用不兼容的设置运行。这些检查将在单独的文档中进行说明。
开发模式与生产模式编辑
默认情况下,Elasticsearch 会绑定到 HTTP 和传输(内部)通信 的环回地址。这对于下载和使用 Elasticsearch 以及日常开发来说是合适的,但对于生产系统来说毫无用处。要加入集群,Elasticsearch 节点必须通过传输通信可达。要通过非环回地址加入集群,节点必须将传输绑定到非环回地址,并且不使用 单节点发现。因此,如果 Elasticsearch 节点无法通过非环回地址与另一台机器形成集群,则认为它处于开发模式;否则,如果它可以通过非环回地址加入集群,则认为它处于生产模式。
请注意,HTTP 和传输可以通过 http.host
和 transport.host
进行独立配置;这对于配置单个节点以通过 HTTP 可达以进行测试目的而不会触发生产模式非常有用。
单节点发现编辑
我们认识到,一些用户需要将传输绑定到外部接口以测试远程集群配置。对于这种情况,我们提供了发现类型 single-node
(通过将 discovery.type
设置为 single-node
来配置);在这种情况下,节点会选举自己为主节点,并且不会与任何其他节点加入集群。
强制执行启动检查编辑
如果您在生产环境中运行单个节点,则可以逃避启动检查(要么不将传输绑定到外部接口,要么将传输绑定到外部接口并将发现类型设置为 single-node
)。对于这种情况,您可以通过在 JVM 选项 中将系统属性 es.enforce.bootstrap.checks
设置为 true
来强制执行启动检查。我们强烈建议您在遇到这种情况时执行此操作。此系统属性可用于强制执行启动检查,而与节点配置无关。