AWS Fargate 上的 Elastic 搜索

Mus*_*mri 5 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

小智 6

看来你不能这样做。

让我解释:

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

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

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

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

然而,在 Elasticsearch 中,应用程序本身依赖于特定的主机配置(“vm.max_map_count”设置),这意味着它确实对其主机做出了假设,因此它无法在Fargate 等通用主机上运行(除非您禁用此检查) ,这对于生产环境来说不是一个好主意)。