2



I had an elasticsearch running under docker (windows 10), which was ok until today. It was up before an energy failure in my building and now I can´t brig it up anymore. My biggest index has 1.7 Million objects, with almost 3GB, and I wouldn´t like to create it from scratch again...

My code:


docker-compose.yml:

version: '2.2'
services:
  persona01:
    image: docker.elastic.co/elasticsearch/elasticsearch:7.4.2
    container_name: persona01
    environment:
      - node.name=persona01
      - cluster.name=persona-docker-cluster
      - discovery.seed_hosts=persona02
      - cluster.initial_master_nodes=persona01,persona02
      - bootstrap.memory_lock=true
      - "ES_JAVA_OPTS=-Xms512m -Xmx512m"
    ulimits:
      memlock:
        soft: -1
        hard: -1
    volumes:
      - D://Docker/diego/elastic/data/persona01:/usr/share/elasticsearch/data
    ports:
      - 9200:9200
    networks:
      - netPersona

  persona02:
    image: docker.elastic.co/elasticsearch/elasticsearch:7.4.2
    container_name: persona02
    environment:
      - node.name=persona02
      - cluster.name=persona-docker-cluster
      - discovery.seed_hosts=persona01
      - cluster.initial_master_nodes=persona01,persona02
      - bootstrap.memory_lock=true
      - "ES_JAVA_OPTS=-Xms512m -Xmx512m"

    ulimits:
      memlock:
        soft: -1
        hard: -1
    volumes:
      - D://Docker/diego/elastic/data/persona02:/usr/share/elasticsearch/data
    networks:
      - netPersona
volumes:
  elastic_data01:
    driver: local
  elastic_data02:
    driver: local
networks:
  netPersona:
    driver: bridge




My folders structure:

enter image description here




Error Message:

PS D:\docker\diego\elastic> docker-compose up
Starting persona02 ... done                                                                                                                                                         Starting persona01 ... done                                                                                                                                                         Attaching to persona02, persona01
persona02    | OpenJDK 64-Bit Server VM warning: Option UseConcMarkSweepGC was deprecated in version 9.0 and will likely be removed in a future release.
persona01    | OpenJDK 64-Bit Server VM warning: Option UseConcMarkSweepGC was deprecated in version 9.0 and will likely be removed in a future release.
persona01    | {"type": "server", "timestamp": "2020-01-28T21:21:14,351Z", "level": "WARN", "component": "o.e.b.ElasticsearchUncaughtExceptionHandler", "cluster.name": "persona-docker-cluster", "node.name": "persona01", "message": "uncaught exception in thread [main]",
persona01    | "stacktrace": ["org.elasticsearch.bootstrap.StartupException: ElasticsearchException[failed to bind service]; nested: AccessDeniedException[/usr/share/elasticsearch/data/nodes];",
persona01    | "at org.elasticsearch.bootstrap.Elasticsearch.init(Elasticsearch.java:163) ~[elasticsearch-7.4.2.jar:7.4.2]",
persona01    | "at org.elasticsearch.bootstrap.Elasticsearch.execute(Elasticsearch.java:150) ~[elasticsearch-7.4.2.jar:7.4.2]",
persona01    | "at org.elasticsearch.cli.EnvironmentAwareCommand.execute(EnvironmentAwareCommand.java:86) ~[elasticsearch-7.4.2.jar:7.4.2]",
persona01    | "at org.elasticsearch.cli.Command.mainWithoutErrorHandling(Command.java:125) ~[elasticsearch-cli-7.4.2.jar:7.4.2]",
persona01    | "at org.elasticsearch.cli.Command.main(Command.java:90) ~[elasticsearch-cli-7.4.2.jar:7.4.2]",
persona01    | "at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:115) ~[elasticsearch-7.4.2.jar:7.4.2]",
persona01    | "at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:92) ~[elasticsearch-7.4.2.jar:7.4.2]",
persona01    | "Caused by: org.elasticsearch.ElasticsearchException: failed to bind service",
persona01    | "at org.elasticsearch.node.Node.<init>(Node.java:614) ~[elasticsearch-7.4.2.jar:7.4.2]",
persona01    | "at org.elasticsearch.node.Node.<init>(Node.java:255) ~[elasticsearch-7.4.2.jar:7.4.2]",
persona01    | "at org.elasticsearch.bootstrap.Bootstrap$5.<init>(Bootstrap.java:221) ~[elasticsearch-7.4.2.jar:7.4.2]",
persona01    | "at org.elasticsearch.bootstrap.Bootstrap.setup(Bootstrap.java:221) ~[elasticsearch-7.4.2.jar:7.4.2]",
persona01    | "at org.elasticsearch.bootstrap.Bootstrap.init(Bootstrap.java:349) ~[elasticsearch-7.4.2.jar:7.4.2]",
persona01    | "at org.elasticsearch.bootstrap.Elasticsearch.init(Elasticsearch.java:159) ~[elasticsearch-7.4.2.jar:7.4.2]",
persona01    | "... 6 more",
persona01    | "Caused by: java.nio.file.AccessDeniedException: /usr/share/elasticsearch/data/nodes",
persona01    | "at sun.nio.fs.UnixException.translateToIOException(UnixException.java:90) ~[?:?]",
persona01    | "at sun.nio.fs.UnixException.rethrowAsIOException(UnixException.java:111) ~[?:?]",
persona01    | "at sun.nio.fs.UnixException.rethrowAsIOException(UnixException.java:116) ~[?:?]",
persona01    | "at sun.nio.fs.UnixFileSystemProvider.createDirectory(UnixFileSystemProvider.java:389) ~[?:?]",
persona01    | "at java.nio.file.Files.createDirectory(Files.java:693) ~[?:?]",
persona01    | "at java.nio.file.Files.createAndCheckIsDirectory(Files.java:800) ~[?:?]",
persona01    | "at java.nio.file.Files.createDirectories(Files.java:786) ~[?:?]",
persona01    | "at org.elasticsearch.env.NodeEnvironment.lambda$new$0(NodeEnvironment.java:272) ~[elasticsearch-7.4.2.jar:7.4.2]",
persona01    | "at org.elasticsearch.env.NodeEnvironment$NodeLock.<init>(NodeEnvironment.java:209) ~[elasticsearch-7.4.2.jar:7.4.2]",
persona01    | "at org.elasticsearch.env.NodeEnvironment.<init>(NodeEnvironment.java:269) ~[elasticsearch-7.4.2.jar:7.4.2]",
persona01    | "at org.elasticsearch.node.Node.<init>(Node.java:275) ~[elasticsearch-7.4.2.jar:7.4.2]",
persona01    | "at org.elasticsearch.node.Node.<init>(Node.java:255) ~[elasticsearch-7.4.2.jar:7.4.2]",
persona01    | "at org.elasticsearch.bootstrap.Bootstrap$5.<init>(Bootstrap.java:221) ~[elasticsearch-7.4.2.jar:7.4.2]",
persona01    | "at org.elasticsearch.bootstrap.Bootstrap.setup(Bootstrap.java:221) ~[elasticsearch-7.4.2.jar:7.4.2]",
persona01    | "at org.elasticsearch.bootstrap.Bootstrap.init(Bootstrap.java:349) ~[elasticsearch-7.4.2.jar:7.4.2]",
persona01    | "at org.elasticsearch.bootstrap.Elasticsearch.init(Elasticsearch.java:159) ~[elasticsearch-7.4.2.jar:7.4.2]",
persona01    | "... 6 more"] }
persona02    | {"type": "server", "timestamp": "2020-01-28T21:21:14,454Z", "level": "WARN", "component": "o.e.b.ElasticsearchUncaughtExceptionHandler", "cluster.name": "persona-docker-cluster", "node.name": "persona02", "message": "uncaught exception in thread [main]",
persona02    | "stacktrace": ["org.elasticsearch.bootstrap.StartupException: ElasticsearchException[failed to bind service]; nested: AccessDeniedException[/usr/share/elasticsearch/data/nodes];",
persona02    | "at org.elasticsearch.bootstrap.Elasticsearch.init(Elasticsearch.java:163) ~[elasticsearch-7.4.2.jar:7.4.2]",
persona02    | "at org.elasticsearch.bootstrap.Elasticsearch.execute(Elasticsearch.java:150) ~[elasticsearch-7.4.2.jar:7.4.2]",
persona02    | "at org.elasticsearch.cli.EnvironmentAwareCommand.execute(EnvironmentAwareCommand.java:86) ~[elasticsearch-7.4.2.jar:7.4.2]",
persona02    | "at org.elasticsearch.cli.Command.mainWithoutErrorHandling(Command.java:125) ~[elasticsearch-cli-7.4.2.jar:7.4.2]",
persona02    | "at org.elasticsearch.cli.Command.main(Command.java:90) ~[elasticsearch-cli-7.4.2.jar:7.4.2]",
persona02    | "at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:115) ~[elasticsearch-7.4.2.jar:7.4.2]",
persona02    | "at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:92) ~[elasticsearch-7.4.2.jar:7.4.2]",
persona02    | "Caused by: org.elasticsearch.ElasticsearchException: failed to bind service",
persona02    | "at org.elasticsearch.node.Node.<init>(Node.java:614) ~[elasticsearch-7.4.2.jar:7.4.2]",
persona02    | "at org.elasticsearch.node.Node.<init>(Node.java:255) ~[elasticsearch-7.4.2.jar:7.4.2]",
persona02    | "at org.elasticsearch.bootstrap.Bootstrap$5.<init>(Bootstrap.java:221) ~[elasticsearch-7.4.2.jar:7.4.2]",
persona02    | "at org.elasticsearch.bootstrap.Bootstrap.setup(Bootstrap.java:221) ~[elasticsearch-7.4.2.jar:7.4.2]",
persona02    | "at org.elasticsearch.bootstrap.Bootstrap.init(Bootstrap.java:349) ~[elasticsearch-7.4.2.jar:7.4.2]",
persona02    | "at org.elasticsearch.bootstrap.Elasticsearch.init(Elasticsearch.java:159) ~[elasticsearch-7.4.2.jar:7.4.2]",
persona02    | "... 6 more",
persona02    | "Caused by: java.nio.file.AccessDeniedException: /usr/share/elasticsearch/data/nodes",
persona02    | "at sun.nio.fs.UnixException.translateToIOException(UnixException.java:90) ~[?:?]",
persona02    | "at sun.nio.fs.UnixException.rethrowAsIOException(UnixException.java:111) ~[?:?]",
persona02    | "at sun.nio.fs.UnixException.rethrowAsIOException(UnixException.java:116) ~[?:?]",
persona02    | "at sun.nio.fs.UnixFileSystemProvider.createDirectory(UnixFileSystemProvider.java:389) ~[?:?]",
persona02    | "at java.nio.file.Files.createDirectory(Files.java:693) ~[?:?]",
persona02    | "at java.nio.file.Files.createAndCheckIsDirectory(Files.java:800) ~[?:?]",
persona02    | "at java.nio.file.Files.createDirectories(Files.java:786) ~[?:?]",
persona02    | "at org.elasticsearch.env.NodeEnvironment.lambda$new$0(NodeEnvironment.java:272) ~[elasticsearch-7.4.2.jar:7.4.2]",
persona02    | "at org.elasticsearch.env.NodeEnvironment$NodeLock.<init>(NodeEnvironment.java:209) ~[elasticsearch-7.4.2.jar:7.4.2]",
persona02    | "at org.elasticsearch.env.NodeEnvironment.<init>(NodeEnvironment.java:269) ~[elasticsearch-7.4.2.jar:7.4.2]",
persona02    | "at org.elasticsearch.node.Node.<init>(Node.java:275) ~[elasticsearch-7.4.2.jar:7.4.2]",
persona02    | "at org.elasticsearch.node.Node.<init>(Node.java:255) ~[elasticsearch-7.4.2.jar:7.4.2]",
persona02    | "at org.elasticsearch.bootstrap.Bootstrap$5.<init>(Bootstrap.java:221) ~[elasticsearch-7.4.2.jar:7.4.2]",
persona02    | "at org.elasticsearch.bootstrap.Bootstrap.setup(Bootstrap.java:221) ~[elasticsearch-7.4.2.jar:7.4.2]",
persona02    | "at org.elasticsearch.bootstrap.Bootstrap.init(Bootstrap.java:349) ~[elasticsearch-7.4.2.jar:7.4.2]",
persona02    | "at org.elasticsearch.bootstrap.Elasticsearch.init(Elasticsearch.java:159) ~[elasticsearch-7.4.2.jar:7.4.2]",
persona02    | "... 6 more"] }
persona02 exited with code 1
persona01 exited with code 1




I also noticed the following errors:

"persona01", "message": "uncaught exception in thread [main]",
persona01    | "stacktrace": ["org.elasticsearch.bootstrap.StartupException: ElasticsearchException[failed to bind service]; nested: AccessDeniedException[/usr/share/elasticsearch/data/nodes];",
...
"persona02", "message": "uncaught exception in thread [main]",
persona02    | "stacktrace": ["org.elasticsearch.bootstrap.StartupException: ElasticsearchException[failed to bind service]; nested: AccessDeniedException[/usr/share/elasticsearch/data/nodes];",

But I really don´t know how to solve them.
So I appreciate any help.

Thank you in advance.

Diego Pacheco
  • 37
  • 2
  • 6
  • `AccessDeniedException[/usr/share/elasticsearch/data/nodes]` Did you check the permissions on that path ? These are on your bind mounted directory for both services. – Zeitounator Jan 28 '20 at 21:53
  • I tried it, but I can´t go inside the containers since they are not running... I don´t know if I did it correctly, but I tried the following command to get inside them: docker exec -it persona01 /bin/bash ... and I got the following message: Error response from daemon: Container 9f46eadb5fbd2fe3ba1c18325b46446eb0a31706f0a983137d41a215eb3e5640 is not running – Diego Pacheco Jan 28 '20 at 21:57
  • 1) you can check the perms on your disk first since this is a bind mount 2) you can override your container command with a dummy one (e.g. `sh -c "while true; do sleep 2000; done"`), then enter your container and check from inside. – Zeitounator Jan 28 '20 at 22:00
  • 1) Perms are ok, set to full control... 2)Like this? "PS D:\docker\diego\elastic> docker exec -it persona01 sh -c "while true; do sleep 2000; done" Error response from daemon: Container 9f46eadb5fbd2fe3ba1c18325b46446eb0a31706f0a983137d41a215eb3e5640 is not running" – Diego Pacheco Jan 28 '20 at 22:12
  • 1
    No. Have a look at this: https://stackoverflow.com/questions/32353055/how-to-start-a-stopped-docker-container-with-a-different-command. Else the easiest is to destroy your container, change the command in your compose file, start the service and then enter the container and look at the files permissions. – Zeitounator Jan 28 '20 at 22:21
  • 1
    Thanks, Zeitounator, I really appreciate your support but it didn´t help yet... So.. I decided to make a new container from scratch. I think it´s the easiest way to bring my service up again. In fact, I´m newbie on docker and I didn´t understand all the concepts that are involved here.. So I´ll take a careful reading on persisting data and backup strategies before starting that new container.. Thank you and have a nice day. – Diego Pacheco Jan 29 '20 at 16:52

1 Answers1

-1

This error is occurring due to permission issue on specified path.

Change the path from /usr/share/elasticsearch/data to /var/lib/elasticsearch/data.

It will work!

NOTE: It worked for me.

Sagar Kulthe
  • 516
  • 3
  • 14