【问题标题】:Elastic search AccessDeniedException[/usr/share/elasticsearch/data/nodes/0] -- Access denied error弹性搜索 AccessDeniedException[/usr/share/elasticsearch/data/nodes/0] -- 访问被拒绝错误
【发布时间】:2021-04-16 11:22:47
【问题描述】:

我正在尝试使用 nfs mount 作为我的 elasticsearch 数据目录,之前我使用的是主机存储。 但是当我尝试升级我的容器时,我遇到了下面提到的错误:

 ElasticsearchException[failed to bind service]; nested: AccessDeniedException[/usr/share/elasticsearch/data/nodes/0];
es02    | Likely root cause: java.nio.file.AccessDeniedException: /usr/share/elasticsearch/data/nodes/0
es02    |   at java.base/sun.nio.fs.UnixException.translateToIOException(UnixException.java:90)
es02    |   at java.base/sun.nio.fs.UnixException.rethrowAsIOException(UnixException.java:106)
es02    |   at java.base/sun.nio.fs.UnixException.rethrowAsIOException(UnixException.java:111)
es02    |   at java.base/sun.nio.fs.UnixFileSystemProvider.createDirectory(UnixFileSystemProvider.java:388)
es02    |   at java.base/java.nio.file.Files.createDirectory(Files.java:694)
es02    |   at java.base/java.nio.file.Files.createAndCheckIsDirectory(Files.java:801)
es02    |   at java.base/java.nio.file.Files.createDirectories(Files.java:787)
es02    |   at org.elasticsearch.env.NodeEnvironment.lambda$new$0(NodeEnvironment.java:275)
es02    |   at org.elasticsearch.env.NodeEnvironment$NodeLock.<init>(NodeEnvironment.java:212)
es02    |   at org.elasticsearch.env.NodeEnvironment.<init>(NodeEnvironment.java:272)
es02    |   at org.elasticsearch.node.Node.<init>(Node.java:362)
es02    |   at org.elasticsearch.node.Node.<init>(Node.java:289)

我使用 docker-compose 之前我的集群工作正常,当我使用主机存储时,但当我尝试切换到 NFS 存储时,我遇到了上述错误。 下面是我的 docker-compose 文件:

version: '3.3'
volumes:
  data:
    driver: local
    driver_opts:
       type: nfs
       device: ":/data1/elasticsearch_data"
       o: addr=10.10.15.46,rw
#volumes:
#  repo:
#    driver: local
#    driver_opts:
#       type: none
#       device: /apm_backup
#       o: bind
#
services:
  es02:
    image: docker.elastic.co/elasticsearch/elasticsearch:7.10.0
    container_name: es02
    volumes:
      - data:/usr/share/elasticsearch/data
#      - ./unicast_hosts.txt:/usr/share/elasticsearch/config/unicast_hosts.txt
    environment:
      - node.name=es02
      - node.master=true
      - node.data=true
      - cluster.name=apm-docker-cluster
      - discovery.seed_hosts=es01
#      - discovery.seed_providers=file
      - cluster.initial_master_nodes=es01,es02
      - bootstrap.memory_lock=true
      - "ES_JAVA_OPTS=-Xms10g -Xmx10g"
      - XPACK_SECURITY_ENABLED=false
#      - path.repo=/apm_backup
#    command: ["elasticsearch", "-Elogger.level=DEBUG"]
    ulimits:
      memlock:
        soft: -1
        hard: -1
      nofile:
        soft: 65536
        hard: 65536
    restart: "unless-stopped"
    logging:
      driver: 'json-file'
      options:
          max-size: '2m'
          max-file: '5'
    ports:
      - 9200:9200
      - 9300:9300
    extra_hosts:
      - "es01:10.10.26.27"
      - "es02:10.10.26.111"
      - "es03:10.10.26.111"
    network_mode: "host"
    labels:
      org.label-schema.group: "APM-monitoring"
    healthcheck:
      test: ["CMD", "curl", "--write-out", "'HTTP %{http_code}'", "--silent", "--output", "/dev/null", "http://es02:9200/"]
      retries: 10
      interval: 10s

This is my directory permission and location

到目前为止我所尝试的:

chown 1000:1000 elasticsearch_data(照片中提到的 vimzy 用户的 1000 uid)。

我在 docker-compose 中尝试过 priviliged=true。 除此之外,还尝试了多种方法来应对权限被拒绝的问题。

任何帮助...

【问题讨论】:

    标签: docker elasticsearch docker-compose elastic-stack


    【解决方案1】:

    可能是与 NFSv3 不兼容,请尝试切换到 NFSv4,详见此博客:

    https://www.frakkingsweet.com/elasticsearch-nfs-and-locking-issues/

    【讨论】:

    • ` o: "addr=10.10.15.46,vers=4,rw" `嗨也添加了这个,但没有改变与上面提到的相同的错误@RIcardo
    • 我认为您还必须在 NFS 服务器中启用 v4。请记住,更新卷选项和重新部署堆栈不会修改已经存在的卷。当不再使用时,卷也不会从 docker swarm 节点中删除。您需要转到每个单独的节点并使用 docker volume rm 手动删除卷。
    • 嗨,Ricardo,我正在使用 docker-compose down -v 删除卷孤儿卷、容器。 NFS 服务器上已经启用了 V4
    【解决方案2】:

    以下解决方案对我有用:

    我格式化了我的 NFS 磁盘,然后将 nfs 磁盘作为设备安装在 docker-compose.yml 中

    version: '3.3'
    volumes:
      data:
        driver: local
        driver_opts:
           type: nfs
           device: ":/data1/elasticsearch_data"
           o: addr=10.10.15.46,rw
    

    【讨论】:

    • 您的答案可以通过额外的支持信息得到改进。请edit 添加更多详细信息,例如引用或文档,以便其他人可以确认您的答案是正确的。你可以找到更多关于如何写好答案的信息in the help center
    猜你喜欢
    • 2021-03-25
    • 1970-01-01
    • 1970-01-01
    • 2019-11-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-16
    • 2016-06-27
    相关资源
    最近更新 更多