Elasticsearch知识汇总之 ElasticSearch高可用方案
六 ElasticSearch高可用方案
6.1 高可用架构
请求协调节点根据负载均衡,转发给主分片节点,主分片同步复制给从节点,主从节点都写入完成返回客户端请求成功。对于读请求,协调负载到任意节点数据节点,数据节点把各自符合要求的数据汇反馈给协调节点,协调节点做最后的数据整合,最终反馈给客户端。
一个运行中的 Elasticsearch 实例称为一个节点,而集群是由一个或者多个拥有相同 cluster.name 配置的节点组成,它们共同承担数据和负载的压力。当有节点加入集群中或者从集群中移除节点时,集群将会重新平均分布所有的数据。
当一个节点被选举为主节点时,它将负责管理集群范围内的所有变更,例如增加、删除索引,或者增加、删除节点等。而主节点并不需要涉及到文档级别的变更和搜索等操作,所以当集群只拥有一个主节点的情况下,即使流量的增加它也不会称为瓶颈。任何节点都可以称为主节点。
作为用户,我们可以将请求发送到集群中的任何节点,包括主节点。每个节点都知道任意文档所处的位置,并且能够将我们的请求直接转发到存储所需文档的节点。无论我们将请求发送到哪个节点,它都能负责从各个包含我们所需文档的节点收集回数据,并将最终结果返回给用户,Elasticsearch 对这一切的管理都是透明的。
ES的目录含义
目录 | 含义 |
modules | 模块依赖目录 |
lib | 依赖库目录 |
logs | 日志目录 |
plugins | 插件目录 |
bin | 可执行文件目录 |
config | 配置文件目录 |
data | 数据存储目录 |
6.2 节点角色
Elasticsearch通过node.roles配置节点角色,在配置文件elasticsearch.yml设置
角色选项 | 说明 |
master | node.roles: [ master ]:拥有选举权和被选举权 |
master, voting_only | node.roles: [ master, voting_only ]:只有选举权没有被选举权 |
data | node.roles: [ data ]:处理与数据相关的操作CRUD、搜索、聚合 |
data_content | node.roles: [ data_content ]:冷热分层架构,通用节点,CRUD、搜索、聚合 |
data_hot | node.roles: [ data_hot ]:冷热分层架构,hot节点承担快速读写操作,可以配置为SSD盘 |
data_warm | node.roles: [ data_warm ]:冷热分层架构,warm节点索引不定期更新 |
data_cold | node.roles: [ data_cold ]:冷热分层架构,cold节点只存只读索引 |
ingest | node.roles: [ ingest ]:ingest节点用于对写入和查询的数据进行预处理 |
Coordinating only node | node.roles: [ ]:协调节点不承担master职责、不保存数据、不预处理 |
备注:生产环境建议一个节点设置单一角色,有利于更好的性能和根据角色定制化配置。
6.2 集群状态
衡量集群健康与否的三种状态:
Green:主分片与副本正常分配
Yellow:主分片全部正常分配,有副本分片未正常分配
Red:有主分片未能正常分配