【ES实战】Elasticsearch6开始的CCR

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

【ES实战】学习使用Elasticsearch6开始的CCR

本文涉及官网文章地址

  • Overview
  • Requirements for leader indices
  • Automatically following indices
  • Getting started with cross-cluster replication
  • Upgrading clusters

CCR => Cross-cluster replication


跨集群复制 (CCR) 功能可以将远程集群中的索引复制到本地集群。 此功能可用于一些常见的生产用例:
  • 主集群发生故障时的灾难恢复。 辅助集群可以作为热备份
  • 地理位置邻近,以便可以在本地提供读取服务

概述

跨集群复制是在逐个索引的基础上完成的。 复制关系是在索引级别配置的。 对于每个配置的复制关系,都有一个称为leader index的复制源索引和一个称为follower index的复制目标索引。

复制是主动-被动的。 这意味着虽然leader索引可以直接写入,但follower索引不能直接接收写入。

复制是基于拉模式的。 这意味着复制是由关注者索引驱动的。 这简化了leader索引的状态管理,并且意味着跨集群复制不会干扰leader索引上的索引写入。

为了方便理解,将Leader索引和follower索引定义为主从索引。

配置主从关系

可以通过两种方式配置主从关系:

  • 手动创建特定的从索引
  • 根据自动关注模式自动创建从索引

还必须配置主索引。

当您手动或通过自动跟踪模式启动复制时,将在本地集群上创建从索引。 创建从索引后,远程恢复进程会从远程集群把主索引的所有 Lucene 分段文件复制到本地集群。

默认情况下,如果您手动启动关注,则恢复过程与创建关注者请求是异步的。 该请求在远程恢复过程完成之前返回。 如果您想等待该过程完成,可以使用wait_for_active_shards参数。

主从复制的机制

主从复制关系是在索引级别管理的,而复制是在分片级别执行的。 创建从索引时,它会自动配置为具有与主索引相同数量的分片。从索引中的分片任务通过发送新操作的读取请求来从主索引中相应的分片中拉取。 这些读取请求可以从领导分片的任何副本(主分片或副本)提供服务。

对于从索引的分片任务发送的每个读取请求,如果主索引分片上有可用的新操作,则主索引分片将使用受在配置从索引时建立的读取参数限制的操作进行响应。 如果主索引分片上没有可用的新操作,则主索引分片将等待新操作的配置超时。 如果在该超时时间内发生新操作,主索引分片会立即响应这些新操作。 否则,如果超时,从索引的分片会回复没有新操作。 从索引分片任务更新一些统计数据,并立即向主索引分片发送另一个读取请求。 这确保了远程集群和本地集群之间的网络连接持续被使用,以避免被外部源(例如防火墙)强制终止。

如果读取请求失败,则检查失败的原因。 如果故障原因被认为是可以恢复的故障(例如网络故障),则从索引分片任务进入重试循环。 否则,从索引分片任务将暂停并需要用户干预,然后才能使用 恢复 follower API。

当从索引分片任务接收到操作时,它们被放置在写入缓冲区中。 从索引分片任务管理此写入缓冲区并将批量写入请求从此写入缓冲区提交到从索引分片。 写入缓冲区和这些写入请求由您在配置从索引索引时建立的写入参数进行管理。 写缓冲区充当针对读请求的背压。 如果写入缓冲区超出其配置的限制,则从索引分片任务不会发送额外的读取请求。 当写入缓冲区不再超出其配置的限制时,从索引分片任务将恢复发送读取请求。

从主索引复制操作的复杂性取决于如何创建从索引时或使用 创建追随者 API

应用于主索引的映射更新会根据需要由从索引自动检索。???

从索引所需的mapping会基于主索引的设置更新将根据从索引的需要,进行自动重试。 从索引并不会更新所有设置。 例如,更改主索引上的副本数量不会被跟从索引复制。

如果您对从索引所需的主索引setting采用非动态设置更改,则从索引将经历一个自行关闭、应用设置更新,然后重新打开自身的循环。 在此周期内,从索引将不可用于读取且无法复制写入。

检查复制的进度

您可以使用 get follower stats API 检查分片级别的复制进度 。 通过此 API,您可以深入了解从索引分片任务管理的读写操作。 它还报告可以重试的读取异常和需要用户干预的致命异常。

暂停、恢复数据的复制

您可以使用 pause follower API 暂停复制,然后使用 resume follower API。 如果您的初始配置不适合您的用例,串联使用这些 API 使您能够调整从分片任务的读写参数。

复制时的主索引保的留操作

如果从索引在一段时间内无法从主索引复制操作,则以下过程可能会由于主索引缺乏复制所需的完整操作历史记录而失败。

复制到从索引的操作是使用最初执行操作时生成的序列号来标识的。 Lucene 段文件偶尔会合并,以优化搜索并节省空间。 当这些合并发生时,与已删除或更新的文档相关的操作可以在合并期间被修剪。 当从索引请求修剪操作的序列号时,该过程将由于主索引上丢失的操作而失败。

这种情况在仅添加的工作流程中是不可能的。 由于文档永远不会被删除或更新,因此底层操作不会被修剪。

Elasticsearch 尝试使用称为软删除的 Lucene 功能来缓解更新工作流程的这一潜在问题。 当文档被更新或删除时,底层操作会在 Lucene 索引中保留一段时间。 这段时间由index.soft_deletes.retention_lease.period设置控制,可以在主索引上配置。

index.soft_deletes.retention_lease.period:控制创建或续订保留租期后,将其视为过期的最长时间。

index.soft_deletes.retention.operations:控制软删除文档在合并前的保留数量。保留更多已删除文档可增加基于操作的恢复机会,并允许查询更长的文档历史。 如果启用了软删除,引擎默认情况下会保留直至全局检查点的所有操作。

当从索引启动索引复制时,它会从主索引那里获取保留租约。 这通知主索引不应允许软删除被修剪,直到从索引指示它已收到操作或租约到期。 在租约到期之前进行监控以检测从索引复制问题非常有价值,以便可以在追随者严重落后之前解决问题。

发现数据复制远远落后的从索引,尝试修复

如果从索引远远落后于主索引,以至于无法再复制操作,则可以使用 get follow stats API。 它将被报告为indices[].fatal_exception

为了重新启动从索引,您必须暂停复制进程,关闭索引,然后再次创建从索引。 例如:

POST /follower_index/_ccr/pause_follow

POST /follower_index/_close

PUT /follower_index/_ccr/follow?wait_for_active_shards=1
{
  "remote_cluster" : "remote_cluster",
  "leader_index" : "leader_index"
}

重新创建从索引是一种破坏性行为。 从属集群上所有现有的 Lucene 段文件都将被删除。 远程恢复进程再次从leader复制Lucene段文件。 当follower索引初始化后,复制的过程会再次开始。

结束主从复制关系

您可以使用 unfollow API 终止复制。 此 API 将关注者索引转换为常规(非从)索引。

主索引的必须项

跨集群复制的工作原理是重放在主索引分片上执行的各个写入操作的历史记录。 这意味着这些操作的历史记录需要保留在主索引分片上,以便从索引分片任务可以拉动它们。 用于保留这些操作的底层机制是“软删除”。 每当删除或更新现有文档时都会发生软删除。 通过将这些软删除保留到可配置的限制,操作历史记录可以保留在主索引分片上,并在从索引分片任务重放操作历史记录时可供其使用。

必须为要用作主索引的索引启用软删除。 启用软删除需要在创建索引时添加一些索引设置项。 必须将这些设置项添加到创建索引请求或用于管理新索引创建的索引模板中。

这意味着跨集群复制不能用于现有索引。 如果您想要从另一个集群复制现有数据,则必须将数据重新索引到启用软删除的新索引。

软删除配置
  • index.soft_deletes.enabled

    索引上是否启用软删除。 软删除只能在创建索引时配置,并且只能在 6.5.0 或之后创建的索引上配置。 默认值为false

  • index.soft_deletes.retention_lease.period

    在分片历史保留租约被视为过期之前保留分片历史保留租约的最长期限。 分片历史保留租约可确保在 Lucene 索引合并期间保留软删除。 如果软删除在复制到从索引之前被合并,则由于主索引的历史记录不完整,后续过程将失败。 默认值为12h

自动创建从索引

在您想要复制定期创建的新索引(例如每日 Beats 索引)的时间序列用例中,为每个新的主索引手动配置从索引可能会成为操作负担。 跨集群复制中的自动复制功能旨在减轻这种负担。 通过自动复制功能,您可以指定自动复制远程集群中名称与模式匹配的新索引。

管理自动复制模式

您可以使用创建自动跟随模式 API。 当您创建新的自动遵循模式配置时,您正在针对单个远程集群配置模式集合。 每当在远程集群中创建名称与集合中的模式之一匹配的新索引时,都会在本地集群中配置从索引。 从索引使用新索引作为其主索引。

您可以使用获取自动跟踪模式 API 。 要删除已配置的自动跟随模式集合,请使用删除自动跟随模式 API。

由于自动跟踪功能是在后台代表您自动处理的,因此错误报告是通过所选主节点上的日志和跨集群复制统计 API完成的。

CCR快速入门指南

  • Connect a local cluster to a remote cluster 将本地集群连接到远程集群
  • Create a leader index in a remote cluster 在远程集群中创建主索引
  • Create a follower index that replicates a leader index 创建复制主索引的从索引
  • Automatically create follower indices 自动创建从索引
常规的开始之前
  1. 安装两个集群作为本地集群和远程集群。

  2. 购买具有CCR使用权的license

  3. 如果在本地和远程集群中启用了 Elastic 安全功能,则您需要具有适当权限的用户来执行本教程中的步骤。

    跨集群复制功能使用集群权限和内置角色,可以更轻松地控制哪些用户有权管理跨集群复制。

    默认情况下,您可以使用内置的“elastic”用户执行本教程中的所有步骤。 但是,必须先为此用户设置密码,然后用户才能执行任何操作。 有关如何设置该密码的信息,请参阅教程:安全性入门。

    如果您在生产环境中执行这些步骤,请格外小心,因为 elastic用户具有superuser 角色,您可能会无意中进行重大更改。

    或者,您可以将适当的权限分配给您选择的用户 ID。 在包含主索引的远程集群上,用户将需要主索引的read_ccr集群权限以及monitorread权限。

    ccr_user:
      cluster:
        - read_ccr
      indices:
        - names: [ 'leader-index' ]
          privileges:
            - monitor
            - read
    

    在包含从索引的本地集群上,同一用户将需要从索引的manage_ccr集群权限以及monitorreadwritemanage_follow_index权限。

    ccr_user:
      cluster:
        - manage_ccr
      indices:
        - names: [ 'follower-index' ]
          privileges:
            - monitor
            - read
            - write
            - manage_follow_index
    

    如果您正在管理连接到远程集群 通过集群更新设置 API,您还需要一个具有all集群权限的用户。

连接到远程集群

跨集群复制功能要求将本地集群连接到远程集群。 我们将使用集群别名leader将本地集群连接到远程集群。

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

指定远程集群中种子节点的主机名和传输端口。

您可以验证本地集群与远程集群是否成功连接。

GET /_remote/info

API 将通过显示本地集群已连接到远程集群来做出响应。

{
  "leader" : {
    "seeds" : [
      "127.0.0.1:9300"
    ],
    "http_addresses" : [
      "127.0.0.1:9200"
    ],
    "connected" : true, 
    "num_nodes_connected" : 1, 
    "max_connections_per_cluster" : 3,
    "initial_connect_timeout" : "30s",
    "skip_unavailable" : false
  }
}

这表明本地集群已连接到远程集群,集群别名为leader

这显示了本地集群连接到的远程集群中的节点数。

创建主索引

主索引需要一个特殊的索引设置,以确保当从索引向主索引请求时,需要复制的操作是可用的。该设置用于在领导者索引上启用软删除。每当删除或更新文档时,就会发生软删除。软删除只能在 Elasticsearch 6.5.0 或之后创建的新索引上启用。

在下面的示例中,我们将在远程群集中创建一个主索引:

PUT /server-metrics
{
  "settings" : {
    "index" : {
      "number_of_shards" : 1,
      "number_of_replicas" : 0,
      "soft_deletes" : {
        "enabled" : true 
      }
    }
  },
  "mappings" : {
    "metric" : {
      "properties" : {
        "@timestamp" : {
          "type" : "date"
        },
        "accept" : {
          "type" : "long"
        },
        "deny" : {
          "type" : "long"
        },
        "host" : {
          "type" : "keyword"
        },
        "response" : {
          "type" : "float"
        },
        "service" : {
          "type" : "keyword"
        },
        "total" : {
          "type" : "long"
        }
      }
    }
  }
}

开启主索引的软删除。

创建从索引

从索引是通过create follower API创建的。创建从索引时,必须引用remote cluster 和在远程群集中创建的leader index。

PUT /server-metrics-copy/_ccr/follow?wait_for_active_shards=1
{
  "remote_cluster" : "leader",
  "leader_index" : "server-metrics"
}

从索引使用 remote recovery 进程初始化。远程恢复过程会将现有的 Lucene 段文件从主索引传输到从索引。远程恢复过程完成后,复制索引就开始了。

现在,当你将文档索引到主索引中时,你会看到这些文档被复制到从索引中。您可以使用 get follower stats API 查看复制的状态。

自动创建从索引

跨群集复制中的auto-follow功能有助于在时间序列用例中跟踪远程群集定期创建的新指数(如每日 Beats 指数)。自动跟踪可使用创建自动跟踪模式 API进行配置。通过自动跟踪模式,您可以引用与本地集群相连的远程集群。您还必须指定一个与要自动跟踪的索引相匹配的模式集合。

For example:

PUT /_ccr/auto_follow/beats
{
  "remote_cluster" : "leader",
  "leader_index_patterns" :
  [
    "metricbeat-*", 
    "packetbeat-*" 
  ],
  "follow_index_pattern" : "{{leader_index}}-copy" 
}

自动复制新的 Metricbeat 索引。

自动复制新的 Packetbeat 索引。

从索引的名称是通过在主索引的名称上添加后缀-copy而从主索引的名称派生而来的。

远程恢复

当您创建从索引时,在其完全初始化之前您无法使用它。 remote recovery过程通过从主索引所在集群中的主分片复制数据来在从索引的节点上构建分片的新副本。 Elasticsearch 使用此远程恢复过程,使用主索引中的数据来引导从索引。 此过程为从索引提供了主索引当前状态的副本,即使由于 Lucene 段合并导致领导者无法获得完整的更改历史记录。

远程恢复是一个网络密集型过程,它将所有 Lucene 段文件从主索引的集群传输到从索引的集群。 从索引请求在主索引集群中的主分片上启动恢复的会话。 然后,从索引同时向主索引请求文件块。 默认情况下,进程同时请求5个大1mb文件块。 此默认行为旨在支持领导者和追随者集群之间存在高网络延迟。

您可以使用动态设置来限制传输数据的速率并管理远程恢复消耗的资源。 请参阅跨集群复制设置。

您可以使用从索引集群上的 recovery API 获取有关正在进行的远程恢复的信息。 远程恢复是使用snapshot and restore基础设施来实现的。 这意味着正在进行的远程恢复在恢复 API 中被标记为snapshot类型。

集群升级

主动使用跨集群复制的集群需要谨慎升级。 否则,在滚动升级过程中,以下索引可能会因以下原因而失败:

  • 如果新的索引设置或映射类型从升级的群集复制到未升级的群集,那么未升级的群集将拒绝接受,并导致索引跟随失败。
  • Lucene 并不向前兼容,当索引跟随回退到基于文件的恢复时,非升级群集中的节点将拒绝来自较新 Lucene 版本的索引文件。

跨集群复制的滚动升级集群在单向索引复制和双向索引复制的情况下是不同的。

索引单向复制

在两个集群之间的单向设置中,一个集群仅包含主索引,另一个集群仅包含复制第一个集群中的索引的从索引。

在此场景中,具有从索引的集群应首先升级,具有主索引的集群应最后升级。 如果集群按此顺序升级,则索引跟踪可以在升级期间继续进行,而无需停机。

请注意,链式索引跟随设置也可以通过这种方式升级。例如,如果集群 A 包含所有主索引,集群 B 复制集群 A 中的索引,集群 C 复制集群 B 中的索引。在这种情况下,应首先升级群集 C,然后升级群集 B,最后升级群集 A。

索引双向复制

在两个集群之间的双向设置中,每个集群都包含主索引和从索引。

在此设置中升级群集时,需要在升级两个群集之前使用pause follower API 暂停所有索引跟踪。升级两个群集后,可以使用resume follower API 恢复索引跟踪。文章来源地址https://www.toymoban.com/news/detail-791701.html

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

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

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

相关文章

  • elasticsearch6.6.0设置访问密码

    首先破解 x-pack-core-6.6.0.jar 破解的方式大家可以参考 https://codeantenna.com/a/YDks83ZHjd 中5.破解x-pack 这部分 , 也可以直接下载我编译好的 https://download.csdn.net/download/iBuDongIt/88748782 下载后解压替换 elasticsearch-6.6.0/modules/x-pack-core/x-pack-core-6.6.0.jar即可 注意 : 先切换到 elasticsearch 所属的

    2024年01月17日
    浏览(38)
  • 【ES实战】ES的CCR对多活支撑的探讨

    ES的 Cross-cluster replication(CCR)是什么 跨集群复制 (CCR) 功能可以将远程集群中的索引复制到本地集群。 此功能可用于一些常见的生产用例: 主集群发生故障时的灾难恢复。 辅助集群可以作为热备份 地理位置邻近,以便可以在本地提供读取服务 复制原理的注意点 复制关系是

    2024年02月04日
    浏览(33)
  • elasticsearch高级功能之跨集群复制CCR

    CCR功能允许用户在不同的Elasticsearch集群之间同步索引数据。这对于实现跨集群复制、数据备份、灾难恢复和多数据中心部署等场景非常有用。 CCR功能提供了实时的、异步的、可靠的跨集群数据同步,能够有效地将变更事件从一个集群复制到另一个集群。通过CCR,用户可以保

    2024年02月16日
    浏览(45)
  • elasticsearch系列九:异地容灾-CCR跨集群复制

    概述    起初只在部分业务中采用es存储数据,在主中心搭建了个集群,随着es在我们系统中的地位越来越重要,数据也越来越多,针对它的安全性问题也越发重要,那如何对es做异地容灾呢?    今天咱们就一起看下官方提供的解决方案cross-cluster replication(简称ccr)。 环境准

    2024年02月04日
    浏览(47)
  • Elasticsearch6.x和7.x的区别

    在增删改方面, 6.x 和 7.x 是一样的,在查找方面(分为普通查找和有高亮的查找), 6.x 和 7.x 有区别。 在 7.x 的es中: org.springframework.data.elasticsearch.core.SearchResultMapper 没有这个类了 org.springframework.data.elasticsearch.core.ElasticsearchTemplate 已废弃 org.springframework.data.elasticsearch.repos

    2024年02月13日
    浏览(37)
  • elasticsearch6.8.23集群安装和设置密码

    一、下载安装包 下载地址: https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.8.23.tar.gz  二、安装步骤 1、准备三台机器,192.168.1.1、192.168.1.2、192.168.1.3 2、上传elasticsearch-6.8.23.tar.gz到三台机器的 /usr/local,然后都执行下面的命令 3、验证是否安装成功: curl 192.168.1.1:9200 浏

    2024年02月05日
    浏览(38)
  • 在ElasticSearch6.8及以上版本开启安全认证功能

    title: 在ElasticSearch6.8及以上版本开启安全认证功能 date: 2019-06-20 20:01:00 tags: elastic search es安全认证 categories: 搜索引擎 ElasticSearch 在6.8之前免费版本并不包含安全认证功能,之后版本有开放一些基础认证功能,对于普通用户来说是够用的。 免费版本 TLS 功能,可对通信进行加密

    2024年02月06日
    浏览(46)
  • elasticsearch6.3.2 http-basic身份验证插件安装

    下载地址 https://github.com/AlanYoun/elasticsearch6-http-basic/releases/download/v1.0.0/http-basic.zip 以下步骤需在es集群每台上操作 1、解压文件 将下载的zip包上传到 /opt/elk/elasticsearch-6.3.2/plugins 目录 unzip http-basic.zip 2、修改插件配置文件 vim plugin-descriptor.properties 修改elasticsearch版本为6.3.2 3、修

    2024年02月17日
    浏览(42)
  • Elasticsearch 实战之三:ES 基本操作

    目录 0. 数据格式说明 1. ES的基本操作 1.1 索引操作 1.1.1 建立索引 1.1.2  删除索引 1.1.3  查询索引 1.2 映射操作 1.2.1 建立映射 1.2.2 查询映射 1.3 基本操作-CRUD 1.3.1 新增和替换文档 1.3.2 查询文档 在实战开始之前,为了便于书写和沟通,本文先来约定一下如何在文章中表达请求

    2024年02月11日
    浏览(46)
  • Centos7安装Elasticsearch6.4.3和Kibana6.4.3

    一、下载好安装文件上传到/usr/local 二、安装Java环境 1)、解压jdk 2)、 配置Java环境变量 3)、profile末尾添加 4)、刷新配置文件 5)、检查是否安装成功 三、安装Elasticsearch 1)、解压安装包 2)、修改启动时默认Jvm参数,默认是1G,根据自己需求自行修改 我虚拟机内存不够改

    2023年04月22日
    浏览(45)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包