这些设置是如何使Elasticsearch在开发模式下运行的?

我一直在Docker容器中使用Elasticsearch进行testing。 通过其他含义来嘲笑响应,我发现从我的生产服务器导入一个小型数据集并将其用作testing数据更容易,更易于维护和可靠。

我最近碰到一个问题,我没有访问主机系统的configuration设置,将vm.max_map_countboost262144 。 ES不会启动。

所以,在努力寻找替代品之后,我意识到我可以通过设置以下内容来设置ES在开发模式下运行:

http.host = 0.0.0.0

transport.host = 127.0.0.1

我通过阅读文档了解这些参数是指什么。

但是仍然不清楚为什么ES使用开发模式运行。 那将是什么限制。

谁会知道为什么?

提前致谢。

裁判:

  • https://www.elastic.co/guide/en/elasticsearch/reference/current/docker.html
  • https://www.elastic.co/guide/en/elasticsearch/reference/current/modules-http.html

这里描述: https : //www.elastic.co/guide/en/elasticsearch/reference/master/system-config.html

开发模式与生产模式默认情况下,Elasticsearch假定您正在开发模式下工作。 如果以上任何设置configuration不正确,则将向日志文件写入警告,但是您将能够启动并运行Elasticsearch节点。

只要configurationnetwork.hostnetwork.host设置,Elasticsearch就会假定您正在转移到生产环境,并将上述警告升级为exception。 这些exception将阻止您的Elasticsearch节点启动。 这是一个重要的安全措施,以确保您不会因为configuration错误的服务器而丢失数据。

默认安装不允许群集联网(将传输绑定到本地主机):

默认情况下,Elasticsearch绑定到本地主机进行HTTP和传输(内部)通信。 这对于Elasticsearch的下载和玩,以及日常的开发是很好的,但对于生产系统来说是没有用的。 为了形成一个集群,Elasticsearch实例必须通过传输通信到达,因此它们必须将传输绑定到外部接口。 因此,如果Elasticsearch实例没有将传输绑定到外部接口(缺省值),则认为Elasticsearch实例处于开发模式,否则在生产模式下将Ela​​sticsearch实例绑定到外部接口。 请注意,可以独立于传输来configurationHTTP

Elasticsearch 5.x有一系列“引导程序检查” ,当Elasticsearch启动时检查可能导致节点在运行期间出现故障的configuration问题。 如果这些检查中的任何一个失败,则节点将在启动期间中止, 如果它被绑定到非本地IP地址

基本上, 开发模式=在本地IP地址上运行 。 一旦你定义了一个非本地IP地址,就认为你正在生产中运行这个节点(这很有意义),这些检查被强制执行,并且基本上由你自己保护来运行该节点。

你可以在这里阅读更多。