【问题标题】:Elastic Search on AWS FargateAWS Fargate 上的弹性搜索
【发布时间】:2021-11-18 04:44:30
【问题描述】:

在 AWS Fargate 上部署 elasticsearch 时遇到问题

已完成以下步骤:

自定义我的 docker 镜像并推送到 AWS ECR。 我的 elasticsearch 服务的任务定义

弹性搜索服务在引导时失败,以下是例外 [3]: max virtual memory area vm.max_map_count [65530] 太低,至少增加到 [262144]

对于 es 5.0 及更高版本的已知 es 问题。 es提供的解决方案如下 sysctl -w vm.max_map_count=262144

https://www.elastic.co/guide/en/elasticsearch/reference/current/docker.html#docker-cli-run-prod-mode

由于我们无权访问主机,是否可以在 AWS Fargate 上应用此命令?

更新:Elastic Search 提供了一个选项来避免启动时检查 mmap,但目前尚未发布

https://github.com/elastic/elasticsearch/pull/32421

https://discuss.elastic.co/t/elk-on-aws-fargate/153967/4

【问题讨论】:

    标签: elasticsearch aws-fargate


    【解决方案1】:

    看来你做不到。

    让我解释一下:

    Docker 实际上包装了一个进程,并使用安装在主机机器上的内核运行它。

    更改“vm.max_map_count”实际上是配置主机的Linux内核

    当主机在您的控制之下时,例如当您使用 EC2 时,您可以通过在您的启动配置上应用“用户数据”来配置主机的内核。 (见:https://docs.aws.amazon.com/AmazonECS/latest/developerguide/bootstrap_container_instance.html

    但是在主机不受您控制的情况下,例如 Fargate,您无法更改主机及其运行的内核设置。 Fargate 的整个想法是运行 无状态 Docker 镜像,这些镜像不对它们运行在其中的主机做任何假设。

    但是,在 Elasticsearch 中,应用程序本身取决于特定的主机配置(“vm.max_map_count”设置),这意味着它确实会对其主机进行假设,因此它无法在 generic 主机,例如 Fargate(除非您禁用此检查,这对于生产环境不是一个好主意)。

    【讨论】:

    • 我认为弹性搜索已经在最新版本中修复了这个问题,我们不需要明确设置 vm.max_map_count ...discuss.elastic.co/t/elk-on-aws-fargate/153967/4
    • @MusabQamri,即使他们禁用了,他们也只禁用了 check!您仍然需要为生产使用设置此内核设置。你使用ES的上下文是什么?生产还是开发/测试?
    猜你喜欢
    • 1970-01-01
    • 2021-10-11
    • 2023-03-07
    • 1970-01-01
    • 2021-07-13
    • 2018-03-15
    • 2023-02-01
    • 2018-07-26
    • 1970-01-01
    相关资源
    最近更新 更多