Во время обычного процесса резервного копирования моментальных снимков индекса неожиданно произошел сбой. Опросите хранилище и обнаружите, что хранилище недоступно, и возвращается следующая информация журнала исключений.
[xxxx_backup] Could not read repository data because the contents of the repository do not match its expected state.
This is likely the result of either concurrently modifying the contents of the repository by a process other than this cluster or an issue with the repository's underlying storage.
The repository has been disabled to prevent corrupting its contents.
To re-enable it and continue using it please remove the repository from the cluster and add it again to make the cluster recover the known state of the repository from its physical contents.
В настоящее время состояние хранилища следующее: все узлы нормально подключены к хранилищу, но хранилище не может получать снимки и не может продолжать выполнять резервное копирование снимков в хранилище.
При записи моментального снимка другие сервисные процессы также изменяют хранилище, в результате чего состояние хранилища становится несоответствующим состоянию, хранящемуся в кластере Elasticsearch, в результате чего хранилище становится недоступным.
1. Содержимое хранилища изменяется одновременно с другими процессами.:Это может привести к тому, что статус склада будет отличаться от Elasticsearch Ожидаемое состояние противоречиво.
2. Основные проблемы с хранением:Вероятно, из-за базового хранилища(нравиться NFS、S3 и т. д.) проблемы.
Текущий кластер проекта использует NFS в качестве носителя хранилища и создает хранилище типа «Общая файловая система» на основе es.
Это позволит кластеру Elasticsearch восстановить известное состояние хранилища из физического контента.
DELETE _snapshot/my_backup
PUT _snapshot/my_backup
{
"type": "fs", // или другие типы складов, такие как "s3"
"settings": {
"location": "/path/to/repository" // или S3 Название сегмента и т. д.
}
}
Здесь мы удаляем хранилище и перестраиваем идентичное хранилище, что эквивалентно предоставлению Elasticsearch возможности обновить состояние хранилища. В то же время эта операция не удалит снимок в хранилище.
В основном без проблем проверяйте базовое хранилище, такое как (NFS, S3 и т. д.).
Если вы используете хранилище nfs, проверьте, нормально ли зависает nfs и нет ли проблем с разрешениями.
mount | grep nfs
Операции чтения и записи можно протестировать в точке монтирования nfs.
touch /path/to/repository/testfile
echo "test" > /path/to/repository/testfile
чтобы убедиться в отсутствии ошибок разрешений.
Если вы используете хранилище S3, вам необходимо убедиться, что с бакетом и учетными данными нет проблем. Используйте интерфейс командной строки AWS, чтобы проверить доступность корзины S3.
aws s3 ls s3://my-bucket
Убедитесь, что никакие другие процессы или кластеры не обращаются одновременно к репозиторию моментальных снимков и не изменяют его. Если несколько кластеров Elasticsearch используют одно и то же хранилище снимков, может возникнуть несогласованность данных. Каждый репозиторий моментальных снимков должен использоваться только одним кластером.
Используйте журналы для определения возможных причин проблемы.
sudo tail -f /var/log/elasticsearch/elasticsearch.log
Если ни один из вышеперечисленных методов не может устранить ошибку склада, рассмотрите возможность использования следующих методов.
В некоторых случаях может потребоваться вручную очистить содержимое репозитория и повторно его инициализировать. Обратите внимание, что это приведет к потере существующих данных моментального снимка, поэтому действуйте осторожно.
Прежде чем выполнять операцию очистки, обязательно остановите кластер Elasticsearch, чтобы избежать одновременного доступа.
Вручную удалите содержимое каталога репозитория (например, файлы в точке монтирования NFS):
sudo rm -rf /path/to/repository/*
Запустите кластер Elasticsearch и повторно добавьте репозиторий снимков.