GNU/Linux >> Linux の 問題 >  >> Linux

Elasticsearchクラスターのバックアップを取る方法

Elasticsearchでバックアップを取るメカニズムはスナップショットと呼ばれます。スナップショットは、実行状態にあるElasticsearchクラスターから取得されたバックアップです。クラスタを停止する必要はありません。これにより、アプリケーションのメンテナンスウィンドウを回避できます。個々のインデックスまたはクラスター全体のスナップショットを取得して、共有ファイルシステムのリポジトリに保存できます。

Elasticsearchのスナップショットは段階的に取得されます。これは、インデックスのスナップショットを作成するときに、Elasticsearchが同じインデックスの以前のスナップショットの一部としてすでに保存されているデータのコピーを回避することを意味します。したがって、クラスターのスナップショットを定期的に取得すると効率的です。

実行中のクラスターのバックアップを取るのと同じ方法で、実行中のクラスターにスナップショットを復元することもできます。インデックスを復元するときに、復元されたインデックスの名前とその設定の一部を変更することもできます。

バックアップを作成するには、スナップショットと復元の操作を実行する前に、スナップショットリポジトリを登録する必要があります。クラスタの共有ファイルシステムリポジトリを登録するには、すべてのマスターノードとデータノードの同じ場所に同じ共有ファイルシステムをマウントする必要があります。この場所は、すべてのマスターノードとデータノードの構成ファイルに登録する必要があります。

この記事では、NFS共有リポジトリを確認し、スナップショットを作成して復元する手順を確認します。

前提条件
  1. 同じ場所にあるElasticsearchの3つのノードすべてで利用可能でマウントされているNFS共有ディレクトリ
  2. 3つのUbuntuサーバー上の3つのノードのElasticsearchクラスター。
何をするか
  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クラスターのバックアップと復元

バックアップを取る

リポジトリを作成したら、バックアップを取る準備ができています。

次のコマンドを使用して、「snapshot_name」という名前のバックアップを作成します

curl -XPUT "https://IP_Of_Elasticsearch_Node_Or_Master:9200/_snapshot/my_backup/snapshot_name?wait_for_completion=true"
バックアップを復元する

取得したスナップショットは、次のコマンドを使用して復元できます。

次のコマンドを使用して、「snapshot_name」という名前のバックアップを復元します

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

結論

この記事では、リポジトリを登録し、バックアップを取り、それを復元する手順を説明しました。


Linux
  1. CLI から Zimbra アカウントのメールボックスのバックアップを取る方法

  2. rsync のような暗号化されたバックアップを行うには?

  3. crontab -e ファイルをバックアップする方法

  1. Ubuntu18.04にElasticsearchをインストールする方法

  2. Ubuntu20.04にElasticsearchをインストールする方法

  3. バックアップを作成する方法

  1. CentOS7にElasticsearchをインストールする方法

  2. CentOS8にElasticsearchをインストールする方法

  3. Debian10にElasticsearchをインストールする方法