ElasticSearch 同城容灾调研

基础知识:

服务节点角色:master node,data node,client node

主节点负责集群状态管理,创建或者删除索引,分配分片等操作,选主需满足quorum原则

数据节点负责存储数据

客户端节点负责处理路由请求,处理搜索,分发索引操作

数据存储结构:

索引:文档存储集合

分片:一个索引由一个或者多个分片组成,分片分布在集群各处,扩展了索引存储能力和读写性能,分片分为主分片和副本分片,同一分片的主副分片不能在一个节点

       分片数量不可更改,单个分片的文档数量21亿

       海量分片不可行,每个节点会分配到过多分片,抢占资源效率低下

副本:为主分片的拷贝,分布在集群中,可以提供搜索操作,可以在主分片所在集群故障时成为主分片,提供读写操作,有效防止数据丢失

别名:可以给索引配置别名,读取别名可以多个索引共用一个,写入别名则只可以一对一设置

reindex:重新索引,可以修改字段类型,也可用于同步

集群健康状态:

green  所有的主分片和副本分片都正常运行

yellow 所有的主分片都正常运行,但不是所有的副本分片都正常运行

red  有主分片没能正常运行

同城跨机房部署集群

一、双节点,主节点数据节点统一

机房A

机房B

内网域名

主节点/数据节点

主节点/数据节点

主分片a

副本分片a

数据同步

 

单个机房挂掉之后,集群仍然可用,但是专线断连会出现脑裂问题

二、三个机房,主节点数据节点分离

机房A

机房B

内网域名

数据节点

数据节点

主分片a

副本分片a

数据同步

主节点

主节点

机房C

主节点

 

可以解决脑裂问题,但是需要多一个机房部署主节点

三、双机房,三个主节点

机房A

机房B

内网域名

数据节点

数据节点

主分片a

副本分片a

数据同步

主节点

主节点

主节点

 

机房A挂掉时,机房B集群可以正常提供服务

机房B挂掉时A因为无法选主,需要人工接入重建节点才可提供服务

双集群双写

在客户端连接两个机房的es集群,写入时同时写入两个集群,查询时就近访问搜索索引数据

对客户端要求较高,需要重做写入逻辑,改造成本过高

也可以通过写入成功后发送消息的方式,进行异步双写,需要实现消费服务,而且可能出现数据一致性问题

 

双集群同步

一、双活CCR跨集群复制 

ES cluster1

ES cluster2

CCR

CCR

机房1

机房2

index-a

index-a-2-follwer

index-a

index-a-1-follwer

APP

save to index-a

APP

save to index-a

query from index-a*

query from index-a*

CCR为ES的白金授权所具有的功能,可以进行集群数据同步,实时性比较好,可以支持数据修改的同步

同步索引的跟随者为只读,可以在主集群故障时脱离跟随着身份,转为可读写

说明:

  1. 两个机房各部署ES集群,设置CCR同步,可以指定索引或者指定索引模式进行同步,同步后的索引可以加入前缀后缀,进行标识
  2. 应用只需要连接当前机房的ES集群,进行数据写入or更新,查询搜索时通过索引的匹配进行多索引查询

二、logstash\reindex

该方法与CCR结构类似

logstash基于索引遍历实现,比较适合日志类数据(不做修改),因为该方式无法实现数据更新的同步,而且有一定延迟,会出现数据落后情况

reindex 基于es reindex接口,可以实现集群到集群的数据同步,不过该方法只会在目标索引创建文档,所以对于数据的修改无法同步

三、双活with snapshot/restore

支持增量备份

ES cluster1

ES cluster2

机房1

机房2

index-a

index-a

APP

save to index-a

APP

save to index-a

query from cluster1 and cluster2

query from cluster2 and cluster1

ES cluster1 snapshot

ES cluster2
snapshot

 

说明:

  • 两个机房各部署一个es集群,通过es的snapshot功能备份数据到另外一个机房,用于灾难恢复
  • 各个机房的app只访问本机房实例,写入到本机房es集群,搜索时利用es的remote cluster进行集合搜索,可以搜索两个集群的数据,由当前机房集群进行聚合
  • 单个机房发生故障时,在正常机房利用备份恢复es集群,配置remote cluster,可以继续提供服务
  • 根据索引的segment file是否有变化判断是否需要进行备份,支持增量备份,

负面:

  • 应用端需要对搜索代码进行修改,使用跨集群搜索
  • snapshot备份不适合频繁备份,所以实时性不够好,备份会有一段时间的数据落后
  • segment file的合并操作会导致重新备份,数据传输量可能会很大

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
根据提供的引用内容,以下是关于Elasticsearch技术调研的介绍: Elasticsearch是一个开源的分布式搜索和分析引擎,它构建在Apache Lucene库之上。它提供了一个分布式多租户的全文搜索引擎,可以实时地存储、检索和分析大规模数据。Elasticsearch具有高可用性、可扩展性和强大的搜索功能,适用于各种应用场景,包括日志分析、实时数据分析、全文搜索等。 在进行Elasticsearch技术调研时,可以关注以下几个方面: 1. 数据存储和索引:Elasticsearch使用倒排索引来加速搜索和过滤操作。它将数据存储在分片中,并使用主分片和副本分片来提供高可用性和容错性。 2. 分布式架构:Elasticsearch采用分布式架构,可以水平扩展以处理大规模数据。它使用分片和副本来实现数据的分布和冗余存储,提供高可用性和负载均衡。 3. 查询和搜索:Elasticsearch提供了丰富的查询语法和搜索功能,包括全文搜索、过滤、聚合等。它支持复杂的查询操作,并提供了相关性评分和高亮显示等功能。 4. 实时数据分析:Elasticsearch支持实时数据分析,可以对大规模数据进行聚合、统计和可视化。它提供了强大的聚合功能,可以对数据进行分组、求和、平均等操作。 5. 可视化和监控:Elasticsearch提供了Kibana工具,用于可视化和监控数据。Kibana可以连接到Elasticsearch集群,提供实时的数据可视化和仪表盘。 6. 安全性和权限控制:Elasticsearch提供了安全性和权限控制功能,可以对数据进行访问控制和身份验证。它支持基于角色的访问控制和SSL/TLS加密。 7. 故障恢复和容错性:Elasticsearch具有故障恢复和容错性,可以自动处理节点故障和数据丢失。它使用分片和副本来实现数据的冗余存储和自动恢复。 8. 扩展性和集成:Elasticsearch具有良好的扩展性和集成性,可以与其他工具和系统进行集成。它提供了丰富的API和插件机制,可以扩展其功能和集成其他系统。 以上是关于Elasticsearch技术调研的介绍,希望对您有帮助。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值