Проблемы с созданием докеров + поиск эластичных изображений: 6.8.0

Я пытался обновить версию своего эластичного образа с 5.6 до 6.8.0, но при запуске ddev start контейнер ES не вставал.

Журналы DDEV из службы elasticsearch

OpenJDK 64-Bit Server VM warning: Option UseConcMarkSweepGC was deprecated in version 9.0 and will likely be removed in a future release.
OpenJDK 64-Bit Server VM warning: UseAVX=2 is not supported on this CPU, setting it to UseAVX=1
[2020-02-28T21:32:29,269][WARN ][o.e.b.ElasticsearchUncaughtExceptionHandler] [unknown] uncaught exception in thread [main]
org.elasticsearch.bootstrap.StartupException: java.lang.IllegalStateException: failed to obtain node locks, tried [[/usr/share/elasticsearch/data]] with lock id [0]; maybe these locations are not writable or multiple nodes were started without increasing [node.max_local_storage_nodes] (was [1])?
    at org.elasticsearch.bootstrap.Elasticsearch.init(Elasticsearch.java:163) ~[elasticsearch-6.8.0.jar:6.8.0]
    at org.elasticsearch.bootstrap.Elasticsearch.execute(Elasticsearch.java:150) ~[elasticsearch-6.8.0.jar:6.8.0]
    at org.elasticsearch.cli.EnvironmentAwareCommand.execute(EnvironmentAwareCommand.java:86) ~[elasticsearch-6.8.0.jar:6.8.0]
    at org.elasticsearch.cli.Command.mainWithoutErrorHandling(Command.java:124) ~[elasticsearch-cli-6.8.0.jar:6.8.0]
    at org.elasticsearch.cli.Command.main(Command.java:90) ~[elasticsearch-cli-6.8.0.jar:6.8.0]
    at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:116) ~[elasticsearch-6.8.0.jar:6.8.0]
    at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:93) ~[elasticsearch-6.8.0.jar:6.8.0]
Caused by: java.lang.IllegalStateException: failed to obtain node locks, tried [[/usr/share/elasticsearch/data]] with lock id [0]; maybe these locations are not writable or multiple nodes were started without increasing [node.max_local_storage_nodes] (was [1])?

Кроме того, я не могу использовать параметр mem_limit, так как использую последнюю версию 3.0.

docker-compose.elasticsearch.yaml:

version: '3.6'
services:
  elasticsearch:
    container_name: ddev-${DDEV_SITENAME}-elasticsearch
    hostname: ${DDEV_SITENAME}-elasticsearch
    image: elasticsearch:6.8.0
    ports:
      - "9200"
      - "9300"
    environment:
      - cluster.name=docker-cluster
      - bootstrap.memory_lock=true
      - "ES_JAVA_OPTS=-Xms512m -Xmx512m"
      - VIRTUAL_HOST=$DDEV_HOSTNAME
      - HTTP_EXPOSE=9200
    ulimits:
      memlock:
        soft: -1
        hard: -1
    labels:
      com.ddev.site-name: ${DDEV_SITENAME}
      com.ddev.approot: $DDEV_APPROOT
    volumes:
      - elasticsearch:/usr/share/elasticsearch/data
      - ".:/mnt/ddev_config"
  web:
    links:
      - elasticsearch:elasticsearch

volumes:
  elasticsearch:
    name: "${DDEV_SITENAME}-elasticsearch"

Что я делаю не так или чего еще не хватает?

Обновлять

Я пробовал следующее решение в соответствии с решением, размещенным здесь

 version: '3.6'
services:
  elasticsearch:
    container_name: ddev-${DDEV_SITENAME}-elasticsearch
    hostname: ${DDEV_SITENAME}-elasticsearch
    image: elasticsearch:6.8.0
    ports:
      - "9200"
      - "9300"
    environment:
      - cluster.name=docker-cluster
      - bootstrap.memory_lock=true
      - "ES_JAVA_OPTS=-Xmx1024m -Xms1024m"
      - VIRTUAL_HOST=$DDEV_HOSTNAME
      - HTTP_EXPOSE=9200
      - node.max_local_storage_nodes=3
    ulimits:
      memlock:
        soft: -1
        hard: -1
    labels:
      com.ddev.site-name: ${DDEV_SITENAME}
      com.ddev.approot: $DDEV_APPROOT
    volumes:
      - elasticsearch:/usr/share/elasticsearch/data
      - ".:/mnt/ddev_config"
  web:
    links:
      - elasticsearch:elasticsearch

volumes:
  elasticsearch:
    name: "${DDEV_SITENAME}-elasticsearch"

но теперь выдает мне следующую ошибку:

введите здесь описание изображения


person Andres Guerrero    schedule 28.02.2020    source источник
comment
Привет, у тебя была возможность посмотреть мой ответ?   -  person user156327    schedule 01.03.2020
comment
Если вы не используете Docker Swarm, в Docker Compose 3 нет реальной необходимости. Вы можете просто остаться на 2 и все будет в порядке. В противном случае следуйте stackoverflow.com/questions/42345235/ для эквивалентных функций на 3.   -  person xeraa    schedule 01.03.2020


Ответы (2)


У меня была такая же проблема при установке ES 7.6 на моем экземпляре Ubuntu AWS, на котором уже была установлена ​​​​другая версия ES. И если вы посмотрите ближе в конце вашего сообщения об ошибке, в нем упоминается:

Причина: java.lang.IllegalStateException: не удалось получить блокировки узла, попытка [[/usr/share/elasticsearch/data]] с идентификатором блокировки [0]; возможно, эти местоположения недоступны для записи или несколько узлов были запущены без увеличения [node.max_local_storage_nodes] (было [1])?

Пожалуйста, обратитесь к более подробной информации об этом параметре в официальном документе ES.

Чтобы решить эту проблему, вам нужно установить node.max_local_storage_nodes больше 1 в файле elasticsearch.yml.

Дополнительные сведения об ошибке доступны в исходном коде Elasticsearch в методе org.elasticsearch.env.NodeEnvironment#NodeEnvironment.

if (nodeLock == null) {
    final String message = String.format(
        Locale.ROOT,
        "failed to obtain node locks, tried [%s] with lock id%s;" +
            " maybe these locations are not writable or multiple nodes were started without increasing [%s] (was [%d])?",
        Arrays.toString(environment.dataFiles()),
        maxLocalStorageNodes == 1 ? " [0]" : "s [0--" + (maxLocalStorageNodes - 1) + "]",
        MAX_LOCAL_STORAGE_NODES_SETTING.getKey(),
        maxLocalStorageNodes);
    throw new IllegalStateException(message, lastException);
}
person user156327    schedule 29.02.2020
comment
Хотя это решит вашу насущную проблему, это скорее борьба с симптомом, чем поиск решения. Настоящий вопрос заключается в том, почему у вас все еще есть эта блокировка каталога данных? Узел 5.x все еще работает? Вы убили процесс, и он не смог снять блокировку? Этот параметр обычно не требуется и довольно необычен — ограничение по умолчанию существует по какой-то причине, и я не думаю, что вы хотите изменить его для своего сценария. - person xeraa; 01.03.2020
comment
@xeraa, вы правы, но это можно рассматривать как быстрое решение, и на основе ответов на приведенные выше вопросы мы можем предоставить дополнительную информацию. - person user156327; 02.03.2020
comment
@OpsterElasticsearchNinja я попробовал ваше решение, но сейчас столкнулся со следующей проблемой ElasticsearchUncaughtExceptionHandler] [unknown] uncaught exception in thread [main] org.elasticsearch.bootstrap.StartupException: java.lang.IllegalStateException: Failed to create node environment - person Andres Guerrero; 02.03.2020
comment
@AndresGuerrero, пожалуйста, предоставьте всю трассировку стека - person user156327; 02.03.2020
comment
@пожалуйста, добавьте изображение к вашему вопросу и не вставляйте ссылку, пожалуйста :) - person user156327; 02.03.2020
comment
Давайте продолжим это обсуждение в чате. - person user156327; 02.03.2020

У меня была такая же проблема, решение, которое сработало для меня, состояло в том, чтобы полностью удалить том, на котором размещены данные elasticsearch. Он удалит node.lock и весь индекс, но вы сможете воссоздать его снова.

person Alberto G. Viu    schedule 25.03.2020
comment
не всегда возможно удалить узел данных, и мы не должны этого делать, так как вы потеряете данные, не сделав надлежащей резервной копии, кстати, для информации, последняя версия Elasticsearch (7.X) изменила структуру папок данных, поэтому вы не сталкиваться с проблемой в последней версии. - person user156327; 25.03.2020