Microservice微服务分布式@架构师

Elasticsearch-节点、集群、分片、副本

2023-02-03  本文已影响0人  我可能是个假开发

一、分布式系统的可用性与扩展性

1.高可用

2.可扩展性

3.ES分布式架构的好处

4.ES的分布式架构

二、节点

1.定义

节点是一个ES的实例,本质是一个Java进程,一台机器上可以 运行多个ES进程,但是生产环境一般建议一台机器上只运行一个ES实例

2.Master-eligible nodes和Master Node

集群状态维护了一个集群中必要的信息:

任意节点都能修改信息会导致数据的不一致性

3.Data Node 和 Coordinating Node

每个 节点都默认起到了Coordinating Node的职责

4.Hot 和 Warm Node

不同硬件配置的 Data Node ,用来实现 Hot & Warm 架构,降低集群部署的成本(硬件成本)
Hot机器选择较好的,Warn机器选择较差的

5.Machine Learning Node

负责跑机器学习的job,用来做异常检测

6.Tribe Node

Tribe Node连接到不同的ES集群,并且支持将这些集群当成一个单独的集群处理。

5.3开始使用 Cross Cluster Search

7.配置节点类型

开发环境中一个节点可以承担 多种角色
生产环境中,应该设置单一角色的节点(dedicated node)

节点类型 配置参数 默认值
maste eligible node.master true
data node.data true
ingest node.ingest true
coordinating only 每个节点默认都是coordinating节点。设置其他类型全部都为false
machine learning node.ml true(需enable x-pack)

三、分片

一个索引可以存储超出单个节点硬件限制的大量数据。
比如,一个具有 10 亿文档数据的索引占据 1TB 的磁盘空间,而任一节点都可能没有这样大的磁盘空间。或者单个节点处理搜索请求,响应太慢。为了解决这个问题,Elasticsearch 提供了将索引划分成多份的能力,每一份就称之为分片。当你创建一个索引的时候,你可以指定你想要的分片的数量。每个分片本身也是一个功能完善并且独立的“索引”,这个“索引”可以被放置到集群中的任何节点上。
分片很重要,主要有两方面的原因:
1)允许你水平分割 / 扩展你的内容容量。
2)允许你在分片之上进行分布式的、并行的操作,进而提高性能/吞吐量。
至于一个分片怎样分布,它的文档怎样聚合和搜索请求,是完全由 Elasticsearch 管理的,对于作为用户的你来说,这些都是透明的,无需过分关心。
被混淆的概念是,一个 Lucene 索引 我们在 Elasticsearch 称作 分片 。
一个Elasticsearch 索引 是分片的集合。
当 Elasticsearch 在索引中搜索的时候, 他发送查询到每一个属于索引的分片(Lucene 索引),然后合并每个分片的结果到一个全局的结果集。

1.主分片

用以解决数据水平扩展的问题。通过主分片,可以将数据分布在集群内的所有节点上

2.副本分片

用以解决数据高可用的问题。副本分片是主分片的拷贝

3.分片的设定

对于生产环境中分片的设定,需要提前做好容量规划

4.集群健康状况

安装多个es

#start multi-nodes Cluster
bin/elasticsearch -E node.name=node0 -E cluster.name=hongcaixia -E path.data=node0_data
bin/elasticsearch -E node.name=node1 -E cluster.name=hongcaixia -E path.data=node1_data
bin/elasticsearch -E node.name=node2 -E cluster.name=hongcaixia -E path.data=node2_data
bin/elasticsearch -E node.name=node3 -E cluster.name=hongcaixia -E path.data=node3_data

GET _cluster/health

{
  "cluster_name" : "hongcaixia",
  "status" : "green",
  "timed_out" : false,
  "number_of_nodes" : 1,
  "number_of_data_nodes" : 1,
  "active_primary_shards" : 2,
  "active_shards" : 2,
  "relocating_shards" : 0,
  "initializing_shards" : 0,
  "unassigned_shards" : 0,
  "delayed_unassigned_shards" : 0,
  "number_of_pending_tasks" : 0,
  "number_of_in_flight_fetch" : 0,
  "task_max_waiting_in_queue_millis" : 0,
  "active_shards_percent_as_number" : 100.0
}

GET _cat/shards:

.kibana_1            0 p STARTED 3 11.3kb 172.18.0.4 es7_01
.kibana_task_manager 0 p STARTED 2 12.7kb 172.18.0.4 es7_01

极客时间《Elasticsearch 核心技术与实战》学习笔记Day20 - http://gk.link/a/11VUS

上一篇下一篇

猜你喜欢

热点阅读