在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检查,但到目前为止尚未发布
答案 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(除非您禁用此检查,否则对于生产环境不是一个好主意。)