基础知识:
服务节点角色: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的白金授权所具有的功能,可以进行集群数据同步,实时性比较好,可以支持数据修改的同步
同步索引的跟随者为只读,可以在主集群故障时脱离跟随着身份,转为可读写
说明:
- 两个机房各部署ES集群,设置CCR同步,可以指定索引或者指定索引模式进行同步,同步后的索引可以加入前缀后缀,进行标识
- 应用只需要连接当前机房的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的合并操作会导致重新备份,数据传输量可能会很大