docker - ElasticSearch 无法恢复连接:http://elasticsearch:9200/
问题描述
我尝试使用 docker-compose 在 Centos 8 上运行 ELK:
我在这里docker-compose.yml
version: '3.1'
services:
elasticsearch:
image: docker.elastic.co/elasticsearch/elasticsearch:6.2.4
container_name: elasticsearch
hostname: elasticsearch
ports:
- "9200:9200"
expose:
- "9200"
volumes:
- elasticsearch-data:/usr/share/elasticsearch/data
networks:
- docker-network
kibana:
image: docker.elastic.co/kibana/kibana:6.2.4
container_name: kibana
ports:
- "5601:5601"
expose:
- "5601"
environment:
- SERVER_NAME=kibana.localhost
- ELASTICSEARCH_URL=http://elasticsearch:9200
- ELASTICSEARCH_USERNAME=elastic
- ELASTICSEARCH_HOST=elasticsearch
- ELASTICSEARCH_PORT=9200
- ELASTIC_PWD=changeme
- KIBANA_PWD=changeme
depends_on:
- elasticsearch
networks:
- docker-network
networks:
docker-network:
driver: bridge
volumes:
elasticsearch-data:
但我面临这个错误:
{"type":"log","@timestamp":"2020-03-03T22:53:19Z","tags":["warning","elasticsearch","admin"],"pid":1, “消息”:“无法恢复连接:http://elasticsearch:9200/ ”}
当我检查时:
弹性搜索运行良好。
docker exec kibana ping elasticsearch
工作正常。正如您在 docker-compose.yml 中看到的那样,kibana 和 elasticsearch 都在同一个网络上
我检查了
docker exec kibana curl http://elasticsearch:9200
,结果是:
连接弹性搜索失败:9200;没有到主机的路由
我还检查了其他类似的问题及其解决方案,但都没有奏效。
解决方案
如果你在 Docker 中运行 ElasticSearch,那么你可能需要检查你是否为 Docker 分配了足够的内存限制。这可能会导致 ElasticSearch 变慢甚至崩溃。
默认情况下,Docker Desktop 设置为每个 Docker 允许 2Gb 的 RAM,但在我自己的项目中,我发现 4Gb 可以防止崩溃,但 5Gb 产生了额外的性能加速。您的里程可能会因您摄取的数据量而异。
可以通过以下方式设置 Docker 桌面内存设置:
- Docker 桌面 -> 首选项 -> 资源 -> 内存
检查 Docker 容器内的内存使用情况
DOCKER_ID=`docker ps | tail -n1 | awk '{ print $1 }'`; docker exec -it $DOCKER_ID /bin/bash
free -h # repeatedly run to inspect changes over time
请注意,ElasticSearch 内存使用量在摄取和索引期间达到峰值,然后在索引和合并完成后最终稳定到稍低的数字。因此,理想情况下,应该在摄取期间测试峰值内存使用情况。
推荐阅读
- java - 多个 TimePicker Android
- xaml - 如何使用 Grid.ColumnDefinitions 定义一个最左边的列和两个最右边的列
- javascript - 查询猫鼬以按名称查找所有内容,然后选择最后创建的
- gradle - 将构建工件复制到 Gradle 多项目构建中的源集
- python - 如何更改 TLS 上下文选项
- swift - 我的 CompletionHandler 不会执行。为什么?
- sql - 当列名为“DATE”(列名)时查询失败
- f# - 如何在 F# 中显式使用未经检查的算术运算符
- javascript - 无法从命令中找到角色
- xcode - 安装 .ipa 我需要哪个证书