Перейти к основному содержимому

Бекапы индексов в Elasticsearch

·399 слов·2 минут
Работа
Юрий Семеньков
Автор
Юрий Семеньков
DevOps, tech, geek, mentor
Оглавление

👌 Ты заходишь в Кибану, а там ничего нет.

Случилась у нас однажды беда: люди начали заходить в Кибану, и удивлялись, почему они не видят их любимых дашбордов. Не было ничего: ни индексов, ни дашбордов, ни визуализаций.

Причиной этого является, скорее всего, скоропостижная кончина системного индекса .kibana, в котором хранятся все ее настройки.

Люди делятся на два типа: те, кто еще не делает бекапы и те, кто уже делает бекапы

Бекапы индексов
#

Вот мы сейчас и научимся делать бекапы\снапшоты индексов

Ссылка на официальную документацию вот: https://www.elastic.co/guide/en/elasticsearch/reference/current/snapshot-restore.html, но я попробую сделать саммари.

Что нужно сделать
#

  • добавить директорию как репозиторий для хранения снапшотов на машины с эластикой
  • настроить бекапы в новый репозиторий
  • ????
  • PROFIT

Добавить директорию
#

Предположим, что у нас уже смонтирована какая-нибудь сетевая шара как директория /mnt/bck01. Подключение к шаре выполняется с помощью программы cifs-utils и запись в /etc/fstab выглядит так:

//<server_hostname>/BackupServers$/LinuxServers/kibana /mnt/bck01 cifs user,rw,credentials=/root/.smbclient,iocharset=utf8,uid=elasticsearch,gid=elasticsearch,file_mode=0775,dir_mode=0775 0 0 

Подробнее про подключение сетевых шар в другой статье.

Нужно добавить эту директорию в настройки Elasticsearch. Идем в /etc/elasticsearch/elasticsearch.yml и добавляем:

path:
  repo:
    - /mnt/bck01

Сохраняем файл и делаем:

systemctl restart elasticsearch

💡 Добавлять в конфигурацию путь к директории нужно на каждой ноде в кластере эластики

Настройка репозитория
#

Дальше есть два варианта настройки:

  • В Кибане
  • Через АПИ

В Кибане
#

Stack Management → Snaphot and restore → Repositories → Register repository

Вводим имя и выбираем Shared file system

Location - путь к нашей директории. Нас предупреждают, что путь должен быть добавлен в конфигурацию на всех нодах кластера!

Read only - если мы подключаем эту шару к нескольким кластерам, то рекомендуют только одному кластеру работать на запись. Остальным следует установить этот переключатель.

Через API
#

Делаем cURL запрос к кластеру:

curl -X PUT "localhost:9200/_snapshot/bck01?pretty" -H 'Content-Type: application/json' -d'
{
  "type": "fs",
  "settings": {
    "location": "/mnt/bck01/",
    "compress": true
  }
}
'

Настройка политик снапшотов
#

Укажем системе что и когда бекапить:

Переходим в раздел Policies и нажимаем Create a policy.

Name - имя политики ни на что не влияет

Snapshot name - это именно имя снапшота, желательно разделять по дням добавив {now/d}

На следующем экране убираем переключатель, с которым будут бекапиться все индексы и указываем название индекса, который мы хотим резервировать:

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

Всё.

На экране политик можно руками запустить выполнение бекапа:

🔥 Не забудь забекапить бекап проверить восстановление из бекапа


💡 Если вам нравятся мои посты, то подписывайтесь также: