搜索引擎(Elasticsearc-集群管理)

学习目标

了解集群规划的基本原则。
掌握集群管理的基本方法。

集群规划

集群规划问题

1. 我们需要多大规模的集群?

2. 集群中的节点角色如何分配?

3. 如何避免脑裂问题?

4. 索引应该设置多少个分片?

5. 分片应该设置几个副本?

 

我们需要多大规模的集群?

当前的数据量有多大?数据增长情况如何?
你的机器配置如何?cpu、多大内存、多大硬盘容量?

推算的依据:

ES JVM heap 最大 32G  。
       30G heap  大概能处理的数据量 10 T。如果内存很大如128G,可在一台机器上运行多个ES节点实例。

集群规划满足当前数据规模+适量增长规模即可,后续可按需扩展。

两类应用场景:

1.用于构建业务搜索功能模块,且多是垂直领域的搜索。数据量级几千万到数十亿级别。一般2-4台机器的规模。
2.用于大规模数据的实时OLAP(联机处理分析),经典的如ELK Stack,数据规模可能达到千亿或更多。几十到上百节点的规模。

集群中的节点角色如何分配?

节点角色:

一个节点可以充当一个或多个角色,默认三个角色都有

Master       
        node.master: true    节点可以作为主节点
DataNode
        node.data: true    默认是数据节点。      
Coordinate node   协调节点
        如果仅担任协调节点,将上两个配置设为false。

如何分配:

1.小规模集群,不需严格区分。
2.中大规模集群(十个以上节点),应考虑单独的角色充当。特别并发查询量大,查询的合并量大,可以增加独立的协调节点。角色分开的好处是分工分开,不互影响。如不会因协调角色负载过高而影响数据节点的能力。

如何避免脑裂问题?

尽量避免脑裂,配置:

discovery.zen.minimum_master_nodes: (有master资格节点数/2) + 1

 这个参数控制的是,选举主节点时需要看到最少多少个具有master资格的活节点,才能进行选举。官方的推荐值是(N/2)+1,其中N是具有master资格的节点的数量。

node.master: true  
node.data: false  

常用做法(中大规模集群):

1 Master 和 dataNode 角色分开,配置奇数个master,如3  
2 单播发现机制,配置master资格节点

discovery.zen.ping.multicast.enabled: false  
discovery.zen.ping.unicast.hosts: ["master1", "master2", "master3"]

3 配置选举发现数,及延长ping master的等待时长

discovery.zen.ping_timeout: 30(默认值是3秒)
discovery.zen.minimum_master_nodes: 2

索引应该设置多少个分片?

分片数指定后不可变,除非重索引。

思考:

分片对应的存储实体是什么?

分片是不是越多越好?

分片多有什么影响?

分片过多的影响:

1 每个分片本质上就是一个Lucene索引, 因此会消耗相应的文件句柄, 内存和CPU资源。
2 每个搜索请求会调度到索引的每个分片中. 如果分片分散在不同的节点倒是问题不太. 但当分片开始竞争相同的硬件资源时, 性能便会逐步下降。
3 ES使用词频统计来计算相关性. 当然这些统计也会分配到各个分片上. 如果在大量分片上只维护了很少的数据, 则将导致最终的文档相关性较差。

分片设置的可参考原则:

1 ElasticSearch推荐的最大JVM堆空间是30~32G, 所以把你的分片最大容量限制为30GB, 然后再对分片数量做合理估算. 例如, 你认为你的数据能达到200GB, 推荐你最多分配7到8个分片。
2 在开始阶段, 一个好的方案是根据你的节点数量按照1.5~3倍的原则来创建分片. 例如,如果你有3个节点, 则推荐你创建的分片数最多不超过9(3x3)个。当性能下降时,增加节点,ES会平衡分片的放置。
3 对于基于日期的索引需求, 并且对索引数据的搜索场景非常少. 也许这些索引量将达到成百上千, 但每个索引的数据量只有1GB甚至更小. 对于这种类似场景, 建议只需要为索引分配1个分片

分片应该设置几个副本?

思考:

1 副本的用途是什么?
2 针对它的用途,我们该如何设置它的副本数?
3 集群规模没变的情况下副本过多会有什么影响?

副本数是可以随时调整的!

基本原则:

1 为保证高可用,副本数设置为2即可。要求集群至少要有3个节点,来分开存放主分片、副本。
2 如发现并发量大时,查询性能会下降,可增加副本数,来提升并发查询能力。

 

 

 

转载于:https://my.oschina.net/u/3728166/blog/3032330

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值