使用 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}
参考