Es支持集群,简单配置即可,隐藏了分布式的复杂性
- 集群架构
- 解决高可用,分担请求压力
- 分布式架构
- 分担存储和计算压力,提速,解耦
- 集群分布式架构
配置,是否是候选节点,是否仅是数据节点
node.master: true node.data: true
集群中有多个节点,其中有一个为主节点,这个主节点是可以通过选举产生的,主从节点是对于集群内部来说的。es的一个概念就是去中心化,字面上理解就是无中心节点,这是对于集群外部来说的,因为从外部来看es集群,在逻辑上是个整体。
分片ES在后台将一个索引划分多个分片存储,集群中,一个索引分布到不同分片存储在不同节点,构成分布式搜索。
主分片
副分片: 每个主分片可以有多个副本,数据和主分片一样,作用:一提高系统容错;二自动对搜索负载均衡。
自平衡: 当节点挂掉,挂的节点的分片会自平衡到其他节点
Seetings{ "number_of_shards":3,//主本片 "number_of_replicas":1//副本分片,表示每个主分片有一个副本分片 }
路由
es计算分片编号的过程,称为路由
路由算法:
shard_index=hash(id)%number_of_primary_shards
脑裂
一个正常的es集群中只有一个master节点,负责整个集群的管理,创建删除索引,跟踪从节点,决定分片分配给从节点
脑裂:从节点选择主节点产生分歧,出现多个主节点,集群分裂,处于异常状态
产生情况:
1.网络延迟导致,例如使用外网部署集群
2.节点负载:主节点即为master 又data,高并发,导致master停止响应
node.mater:true node.data:true
3.JVM内存回收,mater节点设置的JVM内存较小,JVM频繁内存回收,es失去响应
解决方法
1.网络延迟:discovery.zen.ping.timeout超时设置大一点,默认3s,外网建议10s
2.节点负载:责任单一,角色分离策略,
node.mater:true node.data:false
或相反
3.JVM,内存设置为主内存的一半,config/jvm.options -Xms
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)