最近因为客户项目需要,所以专门调研了Elasticsearch的这些不常用的重要功能,并整理成文档,现在分享出来,希望对有这方面需求的同行有些帮助
由于内容较多,一共分为三部分分享
- Elasticsearch多主、多数据、多协调、多冷节点节点说明及配置
- Elasticsearch灾备同步方案设计
- Elasticsearch灾备同步方案设计验证
- 为了避免ElasticSearch发生意外情况所以对存储的数据进行灾备是在使用ElasticSearch过程中,必不可少的重要环节,通过快照快照进行本地或者分布式备份,ElasticSearch支持多种存储,可以适应与各种场景下的数据灾备需求,并在意外发生后及时的数据还原,持续化的提供ElasticSearch服务能力。
- 工作流程图
- 为了多集群共享数据,所以需要创建分布式存储仓库,可以支持NFS、S3,同时需要设置ElasticSearch对应用户的权限
- 第一次ElasticSearch数据备份是全量备份,再次备份则是增量备份,可以根据业务具体设置增量时间间隔。
- 如果出现ElasticSearch出现问题,可以用镜像数据进行还原,同时如果也可以在另一个集群实时还原增量数据,以便出现故障时及时切换。
- 涉及到的elasticsearch.yml配置文件的主要配置项
cluster.name: "BoCloud_cluster"
node.name: master_1
node.master: true
http.port: 9200
path.repo: /mount/elasticsearch/data
transport.tcp.port: 9300
discovery.seed_hosts: ["dc_es1","dc_es2","dc_es3"]
cluster.initial_master_nodes: ["dc_es1","dc_es2","dc_es3"]
- 涉及到主要操作
- 创建仓库
POST _snapshot/es_snapshot_202205
{
"type": "fs",
"settings": {
"location": "/mount/elasticsearch/data",
"compress": true
}
}
- 创建镜像
PUT /_snapshot/es_snapshot_202205/snapshot_log?wait_for_completion=true
{
"indices": "access_log"
}
- 数据还原&全量还原
POST /_snapshot/es_snapshot_202205/snapshot_log/_restore
- 数据还原&部分索引还原
POST /_snapshot/es_snapshot_202205/snapshot_log/_restore
{
"indices": "access_log",
"ignore_unavailable": true,
"include_global_state": false,
"rename_pattern": "access_log",
"rename_replacement": "restored_access_log",
"include_aliases": false
}
- 实施建议
- 快照名称带有日期时间,镜像文件管理
- 恢复数据之前保证恢复的索引在当前ElasticSearch中没有创建,否则会恢复失败
- 可以使用定时任务根据业务需求进行定时执行快照任务以保证ElasticSearch数据的可靠性