如何使用Elasticsearch 5.5-alpine更改为elasticsearch-oss:6.2.4?

时间:2019-07-08 08:01:56

标签: docker elasticsearch docker-compose

我正在使用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"

1 个答案:

答案 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