将 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
来禁用检查。
我正在尝试将非自定义单节点 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
来禁用检查。