IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> ElasticSearch 同城容灾调研 -> 正文阅读

[大数据]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的合并操作会导致重新备份,数据传输量可能会很大

  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2022-03-11 22:17:06  更:2022-03-11 22:18:44 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 9:49:39-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码