分布式机制的透明隐藏特性
- 分布式机制:分布式数据存储及共享(如何分配数据和共享ES已经帮我们实现)。
- 分片机制:数据存储到哪个分片,副本数据如何写入ES已经帮我们实现。
- 集群发现机制:新启动的ES实例,会自动加入集群。
- shard负载均衡机制:大量数据写入及查询,ES会将数据平均分配。
- shard副本机制:新增副本数,分片会重分配。
水平扩容与垂直扩容
假设原来有6台1TB的机器,现在需要8TB的ES集群。
- 水平扩容
新增两台1TB加入集群。
- 垂直扩容
使用2台2TB的机器替换原来的两台1TB机器。
由于成本的原因,在现实中常常采用水平扩容以节省成本。
rebalance机制
新增或减少ES实例或服务器负载不均匀时,ES集群会将数据重新分配。
master节点
master节点的作用主要是管理索引的创建与删除和节点的新增和减少。
默认情况下,ES会自定选择一台机器作为master。
当master宕机时,ES会选举出新的机器作为master(不必担心,老大是一直有的)。
节点对等的分布式架构
当系统随机向shard6请求id=1的数据时,shard6不存在id=1的数据,此时会自动向其它机器寻找,使得每个节点都能接收所有的请求,这就是节点对等。
shard&replica机制
- 每个index包含一个或多个shard。
- 每个shard都是一个最小工作单元,承载部分数据和完整的建立索引和处理请求的能力。
- 增减节点时,shard会自动在nodes中负载均衡。
- 每个文档(document)只存在于某一个主分片(primary shard)以及其对应的副本分片(replica shard)中,不可能存在于多个主分片。
- 副本分片是主分片的副本,负责容错以及承担读请求负载。
- 主分片的数量在创建索引的时候已经固定,副本分片的数量可以随时修改。
- 主分片的默认数量是1,副本默认是1,默认共有2个分片,1个主分片,1个副本分片。
注意:es7以前主分片的默认数量是5,副本默认是1,默认有10 个分片,5个主分片,5个副本分片。 - 主分片不能和自己的副本分片放在同一个节点上,否则节点宕机,主分片和副本都丢失,起不到容错的作用,但是可以和其它主分片的副本分片放在同一个节点上。
单节点创建索引
- 单节点环境下创建索引,有3个主分片,3个副本分片。
- 此时集群status是yellow,因为副本分片不可用。
- 3个主分片会分配到仅有的一个节点上,另外3个副本节点是无法分配,积压在内存中。
- 集群可以正常工作,但是一旦出现节点宕机,数据全部丢失。
横向扩容
- 分片自动负载均衡,分片向空闲机器转移。
- 每个节点存储更少分片,系统资源给予每个分片的资源更多,整体集群性能提高。
- 扩容极限:节点数大于整体分片数,则必有空闲机器。
- 超出扩容极限时,可以增加副本数,提高搜索性能和容错性。