使用 Minio 存储库的 Elasticsearch 快照

本文介绍如何配置 Elasticsearch 将快照和元数据存储在 Minio 中。Minio 是一款为云应用程序开发人员和 DevOps 构建的对象存储服务器,兼容 Amazon S3 对象存储。

Elasticsearch 当前的 aws 云插件使用的是旧版本的 Amazon SDK 构建,导致了一些问题。我们已创建了一个拉取请求,以将 Elasticsearch 5 的 aws sdk 升级到最新版本,请点击此处查看

更新旧版本 aws sdk 的补丁文件可在此处找到 此处

Elasticsearch 2.3.4 和 2.4 的编译插件可以在此 存储库 中找到。这些插件包含升级版本的 aws sdk 以及修复双哈希问题的代码。

更新 Elasticsearch 的 aws 云插件的构建方法

自定义构建

Elasticsearch 2.x

git clone https://github.com/elastic/elasticsearch/
git reset — hard v2.3.4

更新 pom.xml 中的引用,使其与您的 Elasticsearch 版本一致。否则,在安装插件时,它会提示版本不兼容。

sed -i”.bak” s/”2.3.4-SNAPSHOT”/”2.3.4"/g **pom.xml

应用包含较新 SDK 版本的补丁,并修复双哈希问题。

curl https://gist.githubusercontent.com/nl5887/95352af849089e69150bdf7129a83c92/raw/c36b172ea2c69a3e566194af59c9c3c8ff104010/aws-sdk-upgrade.patch|git apply -

编译 cloud aws 插件。

mvn package -pl plugins/cloud-aws

Elasticsearch 5.x

Elasticsearch 5 使用 gradle。您可以使用以下命令编译更新后的插件:

gradle build -p plugins/repository-s3

插件安装

我们需要安装插件,以便 Elasticsearch 可以使用它。

在 Elasticsearch 2.x (2.3.4) 上安装插件

sudo bin/plugin remove cloud-awssudo bin/plugin install file:/{path to elasticsearch}/plugins/cloud-
aws/target/releases/cloud-aws-2.3.4.zip

在 Elasticsearch 5.x 上安装插件

sudo bin/elasticsearch-plugin remove repository-s3sudo bin/elasticsearch-plugin install file:/plugins/repository-s3/build/distributions/repository-s3–5.0.0-alpha5-SNAPSHOT.zip

配置

通过在 elasticsearch.yml 中添加以下内容,配置 Elasticsearch 使用 V4 签名访问 S3。

cloud:    
    aws:        
        s3:            
            signer: "AWS4SignerType"

现在您应该重启 Elasticsearch。新的配置和已安装的插件将生效。

使用以下命令可以验证已安装和激活的插件。

curl http://127.0.0.1:9200/_cat/plugins?v

使用快照

首先,我们需要在 Minio 中创建一个新的桶,用于存储快照…/mc mb myminio/elasticsearch

创建存储库

现在,我们将使用 Minio 作为后端配置一个 Elasticsearch 存储库。

curl -X POST http://127.0.0.1:9200/_snapshot/my_minio_repository — 
data ‘{ 
“type”: “s3”, 
“settings”: { 
“bucket”: “elasticsearch”, 
“region”: “us-east-1”, 
“endpoint”: “http://127.0.0.1:9000",  
“access_key”: “AJBCFEV8M5Q8XIQPRITQ”, 
“secret_key”: “TBPnPHamh6r7ypXACfO4Nxz59PjE+3SanplAZDzq”, 
“protocol”: “http” 
    }
        }’

检索存储库信息

为了确认存储库已成功创建,我们将使用 get repository 命令。

curl -X GET http://127.0.0.1:9200/_snapshot/my_minio_repository?pretty
{ “my_minio_repository” : { 
“type” : “s3”, 
“settings” : { 
“bucket” : “elasticsearch”, 
“endpoint” : “http://127.0.0.1:9000", 
“protocol” : “http”, 
“region” : “us-east-1” 
    } 
    }
}

创建快照

我们将创建一个快照,并等待其完成。

curl -X PUT 
http://127.0.0.1:9200/_snapshot/my_minio_repository/snapshot_1/\?wait_for_completion=true
{“snapshot”:{“snapshot”:”snapshot_1",”version_id”:2030399,”version”:”2.3.3",”indices”:[“minio”],”state”:”SUCCESS”,”start_time”:”2016–07–18T14:58:05.492Z”,”start_time_in_millis”:1468853885492,”end_time”:”2016–07–18T14:58:36.526Z”,”end_time_in_millis”:1468853916526,”duration_in_millis”:31034,”failures”:[],”shards”:{“total”:41,”failed”:0,”successful”:41}}}

验证快照状态

检索快照状态。

curl -X GET http://127.0.0.1:9200/_snapshot/my_minio_repository/snapshot_1/{“snapshots”:[{“snapshot”:”snapshot_1",”version_id”:2030399,”version”:”2.3.3",”indices”:[“minio”],”state”:”SUCCESS”,”start_time”:”2016–07–18T14:58:05.492Z”,”start_time_in_millis”:1468853885492,”end_time”:”2016–07–18T14:58:36.526Z”,”end_time_in_millis”:1468853916526,”duration_in_millis”:31034,”failures”:[],”shards”:{“total”:41,”failed”:0,”successful”:41}}]}

恢复快照

恢复现有的索引,请确保索引已关闭。

curl -X POST http://127.0.0.1:9200/_snapshot/my_minio_repository/snapshot_1/_restore{“accepted”:true}

参考