Поиск по сайту:

Как сделать резервную копию кластера Elasticsearch


На этой странице

  1. Предварительные требования
  2. Что мы будем делать
  3. Проверьте конфигурацию кластера Elasticsearch.
    1. Конфигурация на узле 1
    2. Конфигурация на узле 2
    3. Конфигурация на узле 3

    1. Создать резервную копию
    2. Восстановить резервную копию

    Механизм резервного копирования в Elasticsearch называется Snapshot. Моментальный снимок — это резервная копия, полученная из кластера Elasticsearch, который находится в рабочем состоянии. Нет необходимости отключать кластер, что помогает избежать периодов обслуживания приложений. Моментальный снимок отдельного индекса или всего кластера можно сделать и сохранить в репозитории в общей файловой системе.

    Снимки в Elasticsearch создаются постепенно. Это означает, что при создании снимка индекса Elasticsearch избегает копирования любых данных, которые уже сохранены как часть более раннего снимка того же индекса. Поэтому может быть эффективным регулярно делать моментальные снимки кластера.

    Таким же образом мы можем сделать резервную копию работающего кластера, мы также можем восстановить моментальный снимок работающего кластера. Когда мы восстанавливаем индекс, мы можем даже изменить имя восстановленного индекса, а также некоторые его настройки.

    Чтобы делать резервные копии, мы должны зарегистрировать репозиторий моментальных снимков, прежде чем мы сможем выполнять операции моментального снимка и восстановления. Чтобы зарегистрировать общий репозиторий файловой системы для кластера, необходимо смонтировать одну и ту же общую файловую систему в одно и то же место на всех главных узлах и узлах данных. Это расположение должно быть зарегистрировано в файле конфигурации на всех основных узлах и узлах данных.

    В этой статье мы проверим общий репозиторий NFS и рассмотрим шаги по созданию моментального снимка и его восстановлению.

    Предпосылки

    1. Общий каталог NFS доступен и смонтирован на всех 3 узлах Elasticsearch в одном месте.
    2. Кластер Elasticsearch из 3 узлов на 3 серверах Ubuntu.

    Что мы будем делать

    1. Проверьте установку сервера NFS.
    2. Проверьте конфигурацию кластера Elasticsearch
    3. Зарегистрируйте репозиторий, чтобы делать резервные копии.
    4. Сделайте резервную копию и восстановите.

    Проверьте настройку сервера/клиента NFS.

    В этой статье мы не будем говорить о настройке NFS, так как это не входит в рамки этой статьи. Но для резервного копирования Elasticsearch нам потребуется следующая настройка.

    es-node-1(10.11.10.61)  : NFS Client
    es-node-2(10.11.10.62) : NFS Client
    es-node-3(10.11.10.63) : NFS Client
    NFS Server(10.11.10.64) : NFS Server

    Здесь,

    Сервер NFS поделился своим каталогом \/home/ubuntu/shared/” с узлами Elasticsearch.

    Каждый Elasticsearch имеет свой локальный каталог \/home/ubuntu/mounted”, подключенный к общему каталогу NFS \/home/ubuntu/shared/” . Нам нужно убедиться, что право собственности на все каталоги принадлежит тому же пользователю, с которым мы запускаем Elasticsearch.

    Когда у нас есть эта настройка, мы можем двигаться дальше.

    Проверка конфигурации кластера Elasticsearch

    Выполните следующие настройки, чтобы настроить Elasticsearch для работы в режиме кластера:

    Здесь, если вы настроили кластер Elasticsearch, вы должны знать о следующей конфигурации.

    Единственная конфигурация, которую нам нужно сделать, чтобы выделить резервную копию кластера Elasticsearch из существующей конфигурации кластера Elasticsearch, — это \path.repo: [\/home/ubuntu/mounted\]\:

    vim config/elasticsearch.yml
    path.repo: ["/home/ubuntu/mounted"] 

    Сохраняйте то же самое на каждом узле.

    Конфигурация на узле 1

    #give your cluster a name.
    cluster.name: my-cluster
    #give your nodes a name (change node number from node to node).
    node.name: "es-node-1"
    #define node 1 as master-eligible:
    node.master: true
    #define nodes 2 and 3 as data nodes:
    node.data: true
    #enter the private IP and port of your node:
    network.host: 10.11.10.61
    http.port: 9200
    #detail the private IPs of your nodes:
    discovery.zen.ping.unicast.hosts: ["10.11.10.61", "10.11.10.62", "10.11.10.63"]
    cluster.initial_master_nodes:
    - 10.11.10.61
    path.repo: ["/home/ubuntu/mounted"]

    Конфигурация на узле 2

    #give your cluster a name.
    cluster.name: my-cluster
    #give your nodes a name (change node number from node to node).
    node.name: "es-node-2"
    #define node 2 as master-eligible:
    node.master: false
    #define nodes 2 and 3 as data nodes:
    node.data: true 
    #enter the private IP and port of your node:
    network.host: 10.11.10.62
    http.port: 9200 
    #detail the private IPs of your nodes:
    discovery.zen.ping.unicast.hosts: ["10.11.10.61", "10.11.10.62", "10.11.10.63"
    path.repo: ["/home/ubuntu/mounted"]

    Конфигурация на узле 3

    #give your cluster a name.
    cluster.name: my-cluster
    #give your nodes a name (change node number from node to node).
    node.name: "es-node-3"
    #define node 3 as master-eligible:
    node.master: false
    #define nodes 2 and 3 as data nodes:
    node.data: true
    #enter the private IP and port of your node:
    network.host: 10.11.10.63
    http.port: 9200
    #detail the private IPs of your nodes:
    discovery.zen.ping.unicast.hosts: ["10.11.10.61","10.11.10.62","10.11.10.63""]
    path.repo: ["/home/ubuntu/mounted"]

    Когда у вас будет вся эта конфигурация, запустите все узлы Elasticsearch, сначала запустив начальный мастер.

    Зарегистрируйте репозиторий, чтобы делать резервные копии

    Проверьте существующие репозитории с помощью следующей команды.

    curl -XGET 'http://IP_Of_Elasticsearch_Node_Or_Master:9200/_snapshot/_all?pretty=true'

    Если мы получаем пустой ответ, это означает, что у нас еще нет настроенных репозиториев.

    Чтобы настроить репозиторий, выполните следующую команду.

    curl -XPUT 'http://IP_Of_Elasticsearch_Node_Or_Master:9200/_snapshot/my_backup' -d {
    "type": "fs",
    "settings": {
    "location": "/home/ubuntu/mounted",
    "compress": true
    }
    }'

    Здесь \my_backup в приведенной выше команде — это имя репозитория.

    Мы можем проверить зарегистрированные репозитории с помощью следующей команды

    curl -XGET 'http://IP_Of_Elasticsearch_Node_Or_Master:9200/_snapshot/_all?pretty=true'

    Резервное копирование и восстановление кластера Elasticsearch

    Сделать резервную копию

    После того, как мы создали репо, мы готовы сделать резервную копию.

    Используйте следующую команду, чтобы сделать резервную копию с именем «имя_снимка»

    curl -XPUT "https://IP_Of_Elasticsearch_Node_Or_Master:9200/_snapshot/my_backup/snapshot_name?wait_for_completion=true"

    Восстановить резервную копию

    Снимок, который мы сделали, можно восстановить с помощью следующей команды.

    Используйте следующую команду, чтобы восстановить резервную копию с именем «имя_снимка».

    curl -XPOST "http://IP_Of_Elasticsearch_Node_Or_Master:9200/_snapshot/my_backup/snapshot_name/_restore?wait_for_completion=true"

    Заключение

    В этой статье мы увидели, как зарегистрировать репозиторий, сделать резервную копию и восстановить ее.