Ошибка при создание бэкапа

Добрый вечер. Пытаюсь сделать бэкап. По официальной инструкции ввожу:
curl -X PUT "localhost:9200/_snapshot/graylog?pretty" -H 'Content-Type: application/json' -d' { "type": "fs", "settings": { "location": "/var/backup/graylog" } } '

Бэкап делаю на шару NFS, папка создана, думал дело в правах, что эластик не владелец, но тут же рядом сделал папку где он владелец и тот же самый результат:
image

В итоге получаю вот такую ошибку:

{
  "error" : {
    "root_cause" : [
      {
        "type" : "repository_verification_exception",
        "reason" : "[graylog] [[8yNrg7oLS6yhGCGC37b4tg, 'RemoteTransportException[[es-node-01][10.101.15.231:9300][internal:admin/repository/verify]]; nested: RepositoryVerificationException[[graylog] store location [/var/backup/graylog] is not accessible on the node [{es-node-01}{8yNrg7oLS6yhGCGC37b4tg}{x2TCv1ceSja35tGjrUQcvg}{10.101.15.231}{10.101.15.231:9300}{dm}]]; nested: AccessDeniedException[/var/backup/graylog/tests-qHtgX3qdT2KGUxKXixoo9g/data-8yNrg7oLS6yhGCGC37b4tg.dat];']]"
      }
    ],
    "type" : "repository_verification_exception",
    "reason" : "[graylog] [[8yNrg7oLS6yhGCGC37b4tg, 'RemoteTransportException[[es-node-01][10.101.15.231:9300][internal:admin/repository/verify]]; nested: RepositoryVerificationException[[graylog] store location [/var/backup/graylog] is not accessible on the node [{es-node-01}{8yNrg7oLS6yhGCGC37b4tg}{x2TCv1ceSja35tGjrUQcvg}{10.101.15.231}{10.101.15.231:9300}{dm}]]; nested: AccessDeniedException[/var/backup/graylog/tests-qHtgX3qdT2KGUxKXixoo9g/data-8yNrg7oLS6yhGCGC37b4tg.dat];']]"
  },
  "status" : 500
}

Это логи по пути /var/log/Elasticsearch/graylog.log

[2021-10-01T15:47:34,015][WARN ][r.suppressed             ] [es-node-02] path: /_snapshot/graylog, params: {pretty=, repository=graylog}
org.elasticsearch.repositories.RepositoryVerificationException: [graylog] [[8yNrg7oLS6yhGCGC37b4tg, 'RemoteTransportException[[es-node-01][10.101.15.231:9300][internal:admin/repository/verify]]; nested: RepositoryVerificationException[[graylog] store location [/var/backup/graylog] is not accessible on the node [{es-node-01}{8yNrg7oLS6yhGCGC37b4tg}{x2TCv1ceSja35tGjrUQcvg}{10.101.15.231}{10.101.15.231:9300}{dm}]]; nested: AccessDeniedException[/var/backup/graylog/tests-QqtyUBMrRiirBNBLd8Ejew/data-8yNrg7oLS6yhGCGC37b4tg.dat];']]
        at org.elasticsearch.repositories.VerifyNodeRepositoryAction.finishVerification(VerifyNodeRepositoryAction.java:120) [elasticsearch-7.10.2.jar:7.10.2]
        at org.elasticsearch.repositories.VerifyNodeRepositoryAction.access$000(VerifyNodeRepositoryAction.java:49) [elasticsearch-7.10.2.jar:7.10.2]
        at org.elasticsearch.repositories.VerifyNodeRepositoryAction$1.handleException(VerifyNodeRepositoryAction.java:109) [elasticsearch-7.10.2.jar:7.10.2]
        at org.elasticsearch.transport.TransportService$ContextRestoreResponseHandler.handleException(TransportService.java:1181) [elasticsearch-7.10.2.jar:7.10.2]
        at org.elasticsearch.transport.InboundHandler.lambda$handleException$3(InboundHandler.java:277) [elasticsearch-7.10.2.jar:7.10.2]
        at org.elasticsearch.common.util.concurrent.EsExecutors$DirectExecutorService.execute(EsExecutors.java:224) [elasticsearch-7.10.2.jar:7.10.2]
        at org.elasticsearch.transport.InboundHandler.handleException(InboundHandler.java:275) [elasticsearch-7.10.2.jar:7.10.2]
        at org.elasticsearch.transport.InboundHandler.handlerResponseError(InboundHandler.java:267) [elasticsearch-7.10.2.jar:7.10.2]
        at org.elasticsearch.transport.InboundHandler.messageReceived(InboundHandler.java:131) [elasticsearch-7.10.2.jar:7.10.2]
        at org.elasticsearch.transport.InboundHandler.inboundMessage(InboundHandler.java:89) [elasticsearch-7.10.2.jar:7.10.2]
        at org.elasticsearch.transport.TcpTransport.inboundMessage(TcpTransport.java:700) [elasticsearch-7.10.2.jar:7.10.2]
        at org.elasticsearch.transport.InboundPipeline.forwardFragments(InboundPipeline.java:142) [elasticsearch-7.10.2.jar:7.10.2]
        at org.elasticsearch.transport.InboundPipeline.doHandleBytes(InboundPipeline.java:117) [elasticsearch-7.10.2.jar:7.10.2]
        at org.elasticsearch.transport.InboundPipeline.handleBytes(InboundPipeline.java:82) [elasticsearch-7.10.2.jar:7.10.2]
        at org.elasticsearch.transport.netty4.Netty4MessageChannelHandler.channelRead(Netty4MessageChannelHandler.java:74) [transport-netty4-client-7.10.2.jar:7.10.2]
        at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379) [netty-transport-4.1.49.Final.jar:4.1.49.Final]
        at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:365) [netty-transport-4.1.49.Final.jar:4.1.49.Final]
        at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:357) [netty-transport-4.1.49.Final.jar:4.1.49.Final]
        at io.netty.handler.logging.LoggingHandler.channelRead(LoggingHandler.java:271) [netty-handler-4.1.49.Final.jar:4.1.49.Final]
        at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379) [netty-transport-4.1.49.Final.jar:4.1.49.Final]
        at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:365) [netty-transport-4.1.49.Final.jar:4.1.49.Final]
        at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:357) [netty-transport-4.1.49.Final.jar:4.1.49.Final]
        at io.netty.channel.DefaultChannelPipeline$HeadContext.channelRead(DefaultChannelPipeline.java:1410) [netty-transport-4.1.49.Final.jar:4.1.49.Final]
        at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379) [netty-transport-4.1.49.Final.jar:4.1.49.Final]
        at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:365) [netty-transport-4.1.49.Final.jar:4.1.49.Final]
        at io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:919) [netty-transport-4.1.49.Final.jar:4.1.49.Final]
        at io.netty.channel.nio.AbstractNioByteChannel$NioByteUnsafe.read(AbstractNioByteChannel.java:163) [netty-transport-4.1.49.Final.jar:4.1.49.Final]
        at io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:714) [netty-transport-4.1.49.Final.jar:4.1.49.Final]
        at io.netty.channel.nio.NioEventLoop.processSelectedKeysPlain(NioEventLoop.java:615) [netty-transport-4.1.49.Final.jar:4.1.49.Final]
        at io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:578) [netty-transport-4.1.49.Final.jar:4.1.49.Final]
        at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:493) [netty-transport-4.1.49.Final.jar:4.1.49.Final]
        at io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:989) [netty-common-4.1.49.Final.jar:4.1.49.Final]
        at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74) [netty-common-4.1.49.Final.jar:4.1.49.Final]
        at java.lang.Thread.run(Thread.java:832) [?:?]

В чем может быть ошибка и как ее возможно исправить?

Эта папка видна на всех узлах? Цифровые UID и GID для Elasticsearch на всех узлах одни и те же?

Да, на всех. Через NFS шару

А что это такое? Я просто недавно с эластиком связался. Как это узнать можно?

$ id -u elasticsearch

и

$ id -g elasticsearch

Я думаю, что они у вас на разных машинах разные и поэтому папка, созданная этим пользователем на одной машине не доступна на другой машине. Тест, который в данный момент не работает - создает файл на мастере и потом проверяет, что этот файл доступен на всех остальных узлах. Этот тест у вас выдает ошибку.

node1

[root@elastic]# id -u elasticsearch
993

node2

[root@elastic]# id -u elasticsearch
996

node3

[root@elastic]# id -u elasticsearch
996

Ага, я так понимаю мне надо это изменить , что бы на всех узлах было 996, верно?

node1

[root@elastic]# id -u elasticsearch
990

node2

[root@elastic]# id -u elasticsearch
993

node3

[root@elastic]# id -u elasticsearch
993

И здесь тоже самое.

Некоторые id, которые есть на двух других - заняты (посмотрел в /etc/passwd) . Я могу установить везде свои кастомные? например - 5555? Или обязательно нужны трехзначные?

Я починил, Вы были правы, проблема была в этом. Для того, что бы бэкап сделать, мне необходимо запустить только на 1 узле команду или на всех?

Команда на самом деле стартует на мастере, который координирует затем копирование на всех дата-узлах, но запускать команду можно на любом узле, и он перешлет эту команду на мастер. Так что запускать ее надо только один раз.

This topic was automatically closed 28 days after the last reply. New replies are no longer allowed.