我正在使用elasticsearch5.5-alpine,但我想将其升级到elasticsearch-oss:6.2.4。每当我从docker-compose文件升级时,都会出现elasticsearch无法访问的错误,而且elasticsearch在localhost:9200上也不起作用。 我该如何解决这个问题?
这是我的docker-compose文件:
version: '3'
services:
nginx:
image: nginx:latest
volumes:
- ./nginx.conf:/etc/nginx/nginx.conf:ro
ports:
- 8888:80
depends_on:
- web
web:
build:
context: .
dockerfile: Dockerfile-flask
ports:
- 5000:5000
volumes:
- .:/code
depends_on:
- logstash
logstash:
image: docker.elastic.co/logstash/logstash-oss:6.2.4
volumes:
- ./logstash-simple.conf:/usr/share/logstash/pipeline/logstash.conf
expose:
- 5140/udp
depends_on:
- elasticsearch
elasticsearch:
image: elasticsearch:5.5-alpine
environment:
- cluster.name=docker-clusters
- bootstrap.memory_lock=true
- xpack.security.enabled=false
- "ES_JAVA_OPTS=-Xms2g -Xmx2g"
ulimits:
memlock:
soft: -1
hard: -1
ports:
- "5601:5601"
- "9200:9200"
- "5044:5044"
答案 0 :(得分:0)
您需要删除以下行:
- xpack.security.enabled=false
然后您需要修复bootstrap checks:
elasticsearch_1 | ERROR: [1] bootstrap checks failed
elasticsearch_1 | [1]: max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]
The guide告诉您如何解决:
Elasticsearch和Lucene使用
mmap
对映射 Elasticsearch地址空间的索引。这可以肯定 从JVM堆中索引数据,但在内存中建立索引以实现快速访问。对于 为了有效,Elasticsearch应该具有不受限制的地址 空间。虚拟内存的最大大小检查会强制执行 Elasticsearch进程具有无限的地址空间,并且仅强制执行 在Linux上。要通过最大大小的虚拟内存检查,您必须 配置您的系统以允许Elasticsearch进程具备 具有无限的地址空间。这可以通过/etc/security/limits.conf
使用unlimited
的as设置(请注意, 您可能还需要增加root
用户的限制。
此命令也可能有助于解决上述问题。
sudo sysctl -w vm.max_map_count=262144