Elasticsearch灾备同步方案功能验证(三)

2022-07-26 09:12:42 浏览数 (3)

最近因为客户项目需要,所以专门调研了Elasticsearch的这些不常用的重要功能,并整理成文档,现在分享出来,希望对有这方面需求的同行有些帮助

由于内容较多,一共分为三部分分享

  1. Elasticsearch多主、多数据、多协调、多冷节点节点说明及配置
  2. Elasticsearch灾备同步方案设计
  3. Elasticsearch灾备同步方案设计验证
  • 搭建两套ElasticSearch集群,k8s-dev1作为备份集群、k8s-dev4作为还原集群
  • 共享目录需要设置读写权限及PV、PVC的多节点读写配置
  • 在备份集群添加一些备份数据
代码语言:javascript复制
curl -XPUT 'http://10.10.5.8:30011/researchdata/_doc/4' -H 'Content-Type:application/json' 
  -d '{"title":"research_3","datetime":"2020-05-28 16:24:22"}'
  • 创建备份仓库
  • curl -XPOST 'http://10.10.5.8:30011/_snapshot/backup' -H 'Content-Type:application/json' -d '{"type":"fs","settings":{"location":"/opt/share/es_snap"}}'
  • 创建备份镜像
  • curl -XPUT 'http://10.10.5.8:30011/_snapshot/backup/snapshot_20220530001?wait_for_completion=true' -H 'Content-Type:application/json' -d '{ "indices": "researchdata", "ignore_unavailable": true, "include_global_state": false }'
  • 查看镜像数据文件
  • 创建还原仓库
  • curl -XPOST 'http://10.10.6.15:30012/_snapshot/backup' -H 'Content-Type:application/json' -d '{"type":"fs","settings":{"location":"/opt/share/es_snap"}}'
  • 还原镜像数据
  • curl -XPOST 'http://10.10.6.15:30012/_snapshot/backup/snapshot_20220530001/_restore?wait_for_completion=true' -H 'Content-Type:application/json' -d '{ "indices": "researchdata", "ignore_unavailable": true, "include_aliases": false }'
    • snapshot_20220530001:镜像名称
    • indices:还原的索引
  • k8s-dev4还原集群查看数据
  • curl -XGET 'http://10.10.6.15:30012/researchdata/_doc/_search?pretty=true' -H 'Content-Type:application/json'
  • 可以看到数据已经还原
  • 注意事项
    • 镜像文件可以创建多次,也可以用定时任务间隔性的创建镜像
    • 多次创建镜像相当于增量创建,每次创建都会检查数据是否已经存在,只会把改动的数据创建成镜像文件
    • 在镜像还原时,如果需要还原的索引应经存在,建议删除或者重命名索引
      • 删除索引
    • curl -XDELETE http://10.10.6.15:30012/researchdata
    • 共享文件夹需要多个集群都能访问及读写权限
    • ElasticSearch对资源要求苛刻,如果资源不够直接导致容器重复重启,可以通过配置限制
代码语言:javascript复制
spec:
      containers:
        - name: elasticsearch
          image: abcsys.cn:5000/public/elasticsearch:7.14.0
          volumeMounts:
            - mountPath: /opt/share/es_snap
              name: elasticsearch-data
          env:
            - name: "path.repo"
              value: "/opt/share/es_snap"
            - name: "http.cors.allow-origin"
              value: "*" 
            - name: ES_JAVA_OPTS
              value: "-Xms1024m -Xmx1024m"
            - name: network.host
              value: "0.0.0.0"
          resources:
            limits:
              cpu: '1'
              memory: 2Gi
            requests:
              cpu: 500m
              memory: 1Gi
代码语言:javascript复制
curl -XDELETE http://10.10.6.15:30012/_snapshot/backup
代码语言:javascript复制
path.repo: /opt/share/es_snap

1 人点赞