【ES实战】Elacticsearch6开始的CCR的实践

这篇具有很好参考价值的文章主要介绍了【ES实战】Elacticsearch6开始的CCR的实践。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Elacticsearch6的CCR的实践

基本流程

CCR 的主从索引的建立流程

按照上述流程的操作步骤

  1. 两个集群建立远程连接关系

    在从索引所在的集群下执行以下命令。这样就可以知道远程集群的地址了。

    PUT /_cluster/settings
    {
      "persistent" : {
        "cluster" : {
          "remote" : {
            "leader" : { 
              "seeds" : [
                "127.0.0.1:9300" 
              ]
            }
          }
        }
      }
    }
    

    leader是对远程连接的命名,可以采用与远程集群名一样的名称,增加识别性。seeds配置的是远程集群的连接地址,支持多地址,使用,号分隔,"ip/域名:tcp端口","ip/域名:tcp端口"

    查询集群已配置远程关系

    GET /_remote/info
    
  2. 创建主索引

    在远程集群上创建常规索引index1要求索引开启软删除

    PUT /twitter
    {
      "settings" : {
        "index" : {
          "number_of_shards" : 1,
          "number_of_replicas" : 0,
          "soft_deletes" : {
            "enabled" : true 
          }
        }
      },
      "mappings" : {
        "_doc" : {
          "properties" : {
            "user" : {
              "type" : "keyword"
            },
            "post_date" : {
              "type" : "date"
            },
            "message" : {
              "type" : "keyword"
            }
          }
        }
      }
    }
    
  3. 直接通过CCR的API,创建从索引,同时建立建立主从关系和开启复制。

    在从索引所在的集群执行。

    PUT /twitter-copy/_ccr/follow?wait_for_active_shards=1
    {
      "remote_cluster" : "demo-ccr-2",
      "leader_index" : "twitter"
    }
    
  4. 先创建与主索引一致的索引,之后再创建主从关系开启数据复制了。

    1. 创建待从索引(此时还是常规索引)

      PUT /twitter-copy
      {
        "settings" : {
          "index" : {
            "number_of_shards" : 1,
            "number_of_replicas" : 0,
            "soft_deletes" : {
              "enabled" : true 
            }
          }
        },
        "mappings" : {
          "_doc" : {
            "properties" : {
              "user" : {
                "type" : "keyword"
              },
              "post_date" : {
                "type" : "date"
              },
              "message" : {
                "type" : "keyword"
              }
            }
          }
        }
      }
      
    2. 关闭待从索引

      POST /twitter-copy/_close
      
    3. 建立主从关系,开启复制

      PUT /twitter/_ccr/follow?wait_for_active_shards=1
      {
        "remote_cluster" : "demo-ccr-1",
        "leader_index" : "twitter-copy"
      }
      

CCR 的主从索引的建立效果图

当主从索引复制关系建立之后,主索引的mapping变化,从索引也是同样复制的,主索引支持读和写操作,从索引支持读操作。

CCR支持对复制进程进行管理

  • 查询复制情况

    GET /twitter-copy/_ccr/stats
    
  • 暂停复制

    POST /twitter-copy/_ccr/pause_follow
    
  • 恢复复制

    POST /twitter-copy/_ccr/resume_follow
    
  • 解除主从复制关系,即从索引不再从主索引复制数据,支持读写操作。
    CCR 的主从复制关系解除流程

    1. 先暂停复制

      POST /twitter-copy/_ccr/pause_follow
      
    2. 在关闭从索引

      POST /twitter-copy/_close
      
    3. 解除主从关系

      POST /twitter-copy/_ccr/unfollow
      
    4. 打开从索引

      POST /twitter-copy/_open
      

CCR应用场景分析

容灾备份场景

主要是了防止单一机房或集群不可用之后,可以快速的切换到备份的集群上恢复对外服务。借助CCR可以支持灾难恢复和高可用性。

容灾等级定义

级别 内容 说明
第一级 本地数据容灾 在服务器硬件故障后,恢复使用,但是无法保障业务的连续性,数据极大可能缺失,恢复耗时长。
第二级 本地应用容灾 应对计算机硬件层面的故障,应用系统可以快速切换,保障业务的连续性。理解为,部署多个应用,当其中一个应用故障,流量转向剩下的应用,保障业务连续可用。
第三级 异地数据冷备份 在本地将关键数据备份后,发送异地保存。发生故障后,将备份的数据进行恢复。问题是,存储介质难于管理。如果备份的数据量很大的话,难以及时恢复,对业务影响很大,损失的数据量也较大。
第四级 异地异步数据容灾 在异地建议一个数据备份点,通过网络以异步的方式进行数据备份。备份点指进行数据的备份,不进行业务的处理。在对待灾害的的容忍程度与第三级相同。由于使用网络进行数据备份,因此,两个数据点的同步程度比第三级高,数据损失少。
第五级 异地同步数据容灾 除了数据是以同步方式进行外,其他基本和第四级相同。出现故障时,数据的损失较少,基本可以做到零损失。但是系统恢复较慢,投入成本也大。同步数据容灾有距离限制,超过一定范围(10km~100km)后,性能下降明显。与第四级别有个相同的问题:没有备用应用系统,无法保障业务的连续性。
第六级 异地异步应用容灾 在异地建立一个与生产系统相同的备用系统,采用异步的方式进行数据复制。当主系统发生故障时,备用系统接替其工作,这个级别的容灾可以保障数据的少量丢失,又可以及时切换,保障业务的连续性。
第七级 异地同步应用容灾 在异地建立一个与生产系统相同的备用系统。采用同步的方式进行数据复制。当主系统发生故障时,备用系统接替其工作。此级别,发生灾难时,可以基本保障数据零丢失和业务的连续性。

数据的异步复制指定期将主存储的数据传到备份数据点,或者定期由备份点拉取主存储的数据。定期代表会有时间间隔,数据复制是以批处理的形式的。定期的周期长度基本是复制的延迟,主备的存在较大差异数据量。

数据的同步复制指实时或近实时的将主存储的数据传输到备份数据点,或者实时的由备份点拉取主存储的数据。实时传输,传输的数据采用小块或者流的形式,最小化网络和资源的使用,复制的延迟低。主备的差异数据量较小。

下面是两种数据备份架构方式(数据单向复制)

单一容灾数据中心

CCR 的单一容灾数据中心效果图

多地容灾数据中心

CCR 的多地容灾数据中心效果图

遗留问题

当主机房(主集群)发生故障之后

  • 如果单纯的为了支持读,那么不需要接触主从复制关系,只需要暂停复制进行和切换读取的地址即可。当主集群恢复之后,重新开启复制进程和读取地址切回朱地址即可。
  • 如果同时需要支持读与写操作。那么需要解除主从复制关系,将备用集群的从索引变为常规索引,这样才能支持读写操作。当主集群恢复之后,如果将故障期间的数据回写到主集群,并重新建立主从复制关系就需要进行特殊方案处理了。
数据本地化

为了让数据更接近用户或应用程序服务器可以减少延迟和响应时间。

在下图中,数据从一个数据中心复制到另外三个数据中心,每个数据中心都位于自己的区域中。 中央数据中心包含主索引,其他数据中心包含复制该特定区域中的数据的从索引。 此方式使数据更接近访问它的应用程序。

CCR 的数据本地化效果图文章来源地址https://www.toymoban.com/news/detail-766689.html

到了这里,关于【ES实战】Elacticsearch6开始的CCR的实践的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【Elastic (ELK) Stack 实战教程】06、Filebeat 日志收集实践(下)

    目录 一、Filebeat 收集 Nginx 日志实践 1.1 为什么收集 Nginx 日志 1.2 Nginx 日志收集架构图 1.3 Nginx 日志收集实践 1.3.1 安装 Nginx  1.3.2 配置 filebeat 1.3.3 kibana 展示 1.4 Nginx json 日志收集实践 1.4.1 收集问题 1.4.2 解决方案 1.4.3 配置 json 1.4.4 配置 Filebeat 1.4.5 Kibana 展示 1.5 Nginx 多个日志收

    2024年02月01日
    浏览(41)
  • 【Elastic (ELK) Stack 实战教程】11、使用 ElastAlert 实现 ES 钉钉群日志告警

    目录 一、ElastAlert 概述 二、安装 ElastAlert 2.1 安装依赖 2.2 安装 Python 环境 2.3 安装 ElastAlert 2.4 ElastAlert 配置文件 2.5 创建 ElastAlert 索引 2.6 测试告警配置是否正常 三、ElastAlert 集成钉钉 3.1 下载 ElastAlert 钉钉报警插件 3.2 创建钉钉机器人 3.3 请求 nginx 频繁出现 401 场景 3.3.1 配

    2023年04月23日
    浏览(52)
  • Elastic:使用 Docker 安装 Elastic Stack 8.x 并开始使用

    Elastic Stack 8.0 终于于最近发布了。在我之前的文章 “Elastic Stack 8.0 安装 - 保护你的 Elastic Stack 现在比以往任何时候都简单” 我已经详细地描述了如何在本地部署 Elasticsearch 及 Kibana。设置 Elasticsearch 的最简单方法是使用 Elastic Cloud 上的 Elasticsearch Service 创建托管部署。 如果你

    2024年02月16日
    浏览(35)
  • ES修改字段类型(elastic)

    有个需求是将es的一个date类型的字段改为string类型,经查阅资料发现es不支持直接修改字段类型,只能将原索引结构复制出来,然后单独修改某个字段的类型后,再去新建一个索引将这个结构填充进去,填充完复制原索引数据到新索引,进而使用新的索引(也可以删掉老的索

    2024年02月06日
    浏览(49)
  • ES搜索引擎入门+最佳实践(九):项目实战(二)--elasticsearch java api 进行数据增删改查

            本篇是这个系列的最后一篇了,在这之前可以先看看前面的内容: ES搜索引擎入门+最佳实践(一)_flame.liu的博客-CSDN博客 ES搜索引擎入门+最佳实践(二)_flame.liu的博客-CSDN博客 ES搜索引擎入门+最佳实践(三)_flame.liu的博客-CSDN博客 ES搜索引擎入门+最佳实践(四)_flame.liu的博客

    2024年02月12日
    浏览(55)
  • elastic search es 分组统计 aggs 次数用法

    参考链接:https://www.elastic.co/guide/en/elasticsearch/reference/current/search-aggregations.html es 各个版本的语法可能会不一样,如果大家在用的时候发现语法报错了,请查阅相关版本的语法。 刚需要按 ip 地址统计某个接口的访问次数,查了下 es 分组统计次数 aggs 的用法,特此记录一下,方

    2024年02月11日
    浏览(57)
  • 使用docker安装elastic search[ES]和kibana

    使用docker安装elastic search和kibana,版本均为7.17.1 docker pull# 去dockerhub看具体版本,这里用7.17.1 临时安装生成文件# 参数说明 -d 后台启动 –name 起别名即:NAMES -p 9200:9200 将端口映射出来 elasticsearch的9200端口是供外部访问使用;9300端口是供内部访问使用集群间通讯 -e “discovery.

    2024年02月14日
    浏览(45)
  • ElasticSearch第三讲:ES详解 - Elastic Stack生态和场景方案

    本文是ElasticSearch第三讲,在了解ElaticSearch之后,我们还要了解Elastic背后的生态 即我们 常说的ELK ;与此同时,还会给你展示ElasticSearch的 案例场景 ,让你在学习ES前对它有个全局的印象。 Beats + Logstash + ElasticSearch + Kibana 如下是我从官方博客中找到图,这张图展示了ELK生态以

    2024年02月07日
    浏览(38)
  • Elastic Stack--04--ES中的检索方式、Query DSL

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 在ElasticSearch中支持两种检索方式 通过使用REST request URL 发送检索参数(uri+检索参数) 通过使用 REST request body 来发送检索参数 (uri+请求体) GET bank/_search # 检索bank下的所有信息,包括 type 和 docs GET bank/_sea

    2024年03月21日
    浏览(42)
  • 从白日梦到现实:推出 Elastic 的管道查询语言 ES|QL

    作者:George Kobar, Bahubali Shetti, Mark Settle 今天,我们很高兴地宣布 Elastic® 的新管道查询语言 ES|QL(Elasticsearch 查询语言)的技术预览版,它可以转换、丰富和简化数据调查。 ES|QL 由新的查询引擎提供支持,通过并发处理提供高级搜索功能,无论数据源和结构如何,都可以提高

    2024年02月04日
    浏览(54)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包