AWS Fargate上的弹性搜索

时间:2018-10-26 06:46:29

标签: elasticsearch aws-fargate

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

完成以下步骤:

自定义了我的docker映像并推送到AWS ECR。 我的Elasticsearch服务的任务定义

弹性搜索服务在引导程序上失败,以下是例外 [3]:最大虚拟内存区域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

1 个答案:

答案 0 :(得分: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”设置),这意味着它确实对主机进行了假设,因此它不能在< em>通用主机,例如Fargate(除非您禁用此检查,否则对于生产环境不是一个好主意。)