4

我希望将我的 ES 版本从 2.3 更新到 5.0.0-alpha4,以便能够使用 Ingest 节点并删除 Logstash。但是,如果没有我将 vm.max_map_count 设置为 262144,似乎 ES 5.x 版本将无法启动。我不想设置该值..我可以使用默认值 65530。谁能指导我如何获得 ES 5。 x 开始时根本没有篡改内存设置。我无权访问我希望安装 ES 的主机上的 root 用户。
错误:

java.lang.UnsupportedOperationException: seccomp unavailable: CONFIG_SECCOMP not compiled into kernel, CONFIG_SECCOMP and CONFIG_SECCOMP_FILTER are needed
at org.elasticsearch.bootstrap.Seccomp.linuxImpl(Seccomp.java:347)
at org.elasticsearch.bootstrap.Seccomp.init(Seccomp.java:616)
[2016-08-08 07:49:55,436][INFO ][node ] [data-cum-ingest-node] initializing ...
[2016-08-08 07:49:56,048][INFO ][plugins ] [data-cum-ingest-node] modules [percolator, lang-mustache, lang-painless, reindex, aggs-matrix-stats, lang-expression, ingest-common, lang-groovy], plugins []
[2016-08-08 07:49:56,601][INFO ][env ] [data-cum-ingest-node] heap size [7.9gb], compressed ordinary object pointers [true]
[2016-08-08 07:49:57,582][INFO ][node ] [data-cum-ingest-node] initialized
[2016-08-08 07:49:57,582][INFO ][node ] [data-cum-ingest-node] starting ...
[2016-08-08 07:49:57,635][ERROR][bootstrap ] [data-cum-ingest-node] Exception
java.lang.RuntimeException: bootstrap checks failed
max virtual memory areas vm.max_map_count [65530] likely too low, increase to at least [262144]
at org.elasticsearch.bootstrap.BootstrapCheck.check(BootstrapCheck.java:125)
at org.elasticsearch.bootstrap.BootstrapCheck.check(BootstrapCheck.java:85)
at org.elasticsearch.bootstrap.BootstrapCheck.check(BootstrapCheck.java:65)
at org.elasticsearch.bootstrap.Bootstrap$5.validateNodeBeforeAcceptingRequests(Bootstrap.java:178)
at org.elasticsearch.node.Node.start(Node.java:373)
at org.elasticsearch.bootstrap.Bootstrap.start(Bootstrap.java:193)
at org.elasticsearch.bootstrap.Bootstrap.init(Bootstrap.java:252)
at org.elasticsearch.bootstrap.Elasticsearch.init(Elasticsearch.java:96)
at org.elasticsearch.bootstrap.Elasticsearch.execute(Elasticsearch.java:91)
at org.elasticsearch.cli.SettingCommand.execute(SettingCommand.java:54)
at org.elasticsearch.cli.Command.mainWithoutErrorHandling(Command.java:91)
at org.elasticsearch.cli.Command.main(Command.java:53)
at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:70)
at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:63)
Suppressed: java.lang.IllegalStateException: max virtual memory areas vm.max_map_count [65530] likely too low, increase to at least [262144]
at java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:193)
at java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1374)
at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:481)
at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:471)
at java.util.stream.ForEachOps$ForEachOp.evaluateSequential(ForEachOps.java:151)
at java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(ForEachOps.java:174)
at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
at java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:418)
at org.elasticsearch.bootstrap.BootstrapCheck.check(BootstrapCheck.java:126)
4

3 回答 3

3

从 ES 5 开始,强制执行一些引导检查

其中一项检查是最大映射计数检查(仅在 Linux 上),它需要 262144 个内存映射区域,否则它将拒绝启动。

请注意,无论 ES 在什么环境(开发或产品)中运行,都会强制执行此检查

于 2016-08-09T03:38:02.670 回答
1

从文档:

如果 Elasticsearch 处于开发模式,任何失败的引导检查都会在 Elasticsearch 日志中显示为警告。如果 Elasticsearch 处于生产模式,任何失败的引导检查都会导致 Elasticsearch 拒绝启动。

再次从那里:

因此,如果 Elasticsearch 未绑定或发布到外部接口(默认),我们认为它处于开发模式,否则如果它绑定或发布到外部接口,则处于生产模式。

要完全禁用检查,只需尝试设置bootstrap.ignore_system_bootstrap_checkstrue.

https://www.elastic.co/guide/en/elasticsearch/reference/master/bootstrap-checks.html

于 2016-08-08T19:26:43.523 回答
0

开发模式:如果您在开发模式下运行弹性搜索,我们不需要设置 max_map_count。只需运行如下

docker run -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" docker.elastic.co/elasticsearch/elasticsearch:5.6.4

生产模式::如果您在生产中运行,则需要如下设置属性。

Linux

vm.max_map_count 设置应在 /etc/sysctl.conf 中永久设置:

grep vm.max_map_count /etc/sysctl.conf

vm.max_map_count=262144

或者

sysctl -w vm.max_map_count=262144

于 2017-11-09T21:37:29.907 回答