将 ElasticSearch Docker 容器部署到 AWS Fargate

Deploy ElasticSearch Docker Container to AWS Fargate

我正在尝试将非自定义单节点 elasticsearch:7.8.1 docker 容器部署到 AWS ECS Fargate。

在我的本地我简单地执行了:

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

它为我启动了我的应用程序使用的 ES 容器。我希望云中有相同的容器。

我该怎么做?

更新: 我能够将 ES 部署到 Fargate,但尝试访问它失败并显示错误消息:

ERROR: [3] bootstrap checks failed
[1]: max file descriptors [4096] for elasticsearch process is too low, increase to at least [65535]
[2]: max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]
[3]: the default discovery settings are unsuitable for production use; at least one of [discovery.seed_hosts, discovery.seed_providers, cluster.initial_master_nodes] must be configured

经过简短的谷歌搜索后,我发现 this post 他们通过打开单节点模式解决了问题。我不太明白如何在 Fargate 中打开它,是在任务定义中还是如何?

另一个问题是运行 ES在AWS中最常见的方式是什么?在 EC2 或 AWS ES 服务中?我的目标是尽快设置基础设施。我在 docker 中使用弹性搜索获得了 .net 核心应用程序 运行。

正在回答最新的评论。不,您只需在提供给 AWS Fargate 的 Docker-compose.yml 文件中提供来自图像注册表的 public Elasticsearch 图像地址,例如 Docker Hub。例如:image: docker.elastic.co/elasticsearch/elasticsearch:7.7.0.

您可以通过设置 ulimit 解决第一个问题 - 我正在使用 Terraform 中的任务定义:

ulimits = [
    {
      name      = "nofile"
      softLimit = 65535
      hardLimit = 65535
    }]

对于 vm.max_map_count,您可以通过将 ES_SETTING_NODE_STORE_ALLOW__MMAP 设置为 false 来禁用检查。