大数据运维及安全Java学习笔记ElasticSearch 深入

elasticsearch集群搭建及参数详解

2017-03-29  本文已影响3631人  syncwt

介绍

elasticsearch集群的搭建教程很多。网上一搜都是,但是,搭建不难。更重要的是明白集群原理,性能以及运维知识点。所以,本文将从这些点着重介绍。

配置参数详解

elasticsearch配置文件中有以下这些参数,将逐一介绍(其实配置文件中英文描述已经非常清楚):

理解主节点、副节点、分片与复制分片

关系

起初创建节点与分片的关系,设置shards=2,replicas=1

elasticsearch节点与分片的关系图.png

解析

1. `client node` node.master=true,node.data=false 用于转发请求,起到平衡负载的作用
2. `data node` node.master=flase,node.data=true
> 节点上保存了数据分片。它负责数据相关操作,比如分片的 CRUD,以及搜索和整合操作。这些操作都比较消耗 CPU、内存和 I/O 资源

要点

  1. 当集群健康状态为yello表示存在复制分片未被分配(unassigned)到节点中(或者分配的复制节点个数少于设置的个数),这时如果硬件有故障将无法找回数据。
  2. 在同一个节点上既保存原始数据又保存副本是没有意义的,因为一旦失去了那个节点,我们也将丢失该节点上的所有副本数据。
  3. 主分片数量一般是在建立索引时就固定的,一般是不作修改的,如果减少分片数量意味着数据将要丢失
  4. 复制分片一定意义上可以起到负载的功能,提高数据的冗余量。但如果只是在相同节点数目的集群上增加更多的副本分片并不能提高性能,因为每个分片从节点上获得的资源会变少。 你需要增加更多的硬件资源来提升吞吐量

节点与分片模型

同样设置shards=2,replicas=1

elasticsearch节点与分片可分配关系图.png
elasticsearch节点与分片正常存储关系图.png

分布式文档存储的关系原理

这个由于在官网指南中写的很清楚了,直接贴出章节。
分布式文档存储

集群搭建

配置集群

修改配置文件

# vi /etc/elasticsearch/elasticsearch.yml

# 统一的集群名
cluster.name: syncwt-es
# 当前节点名
node.name: syncwt-es-node-1
# 对外暴露端口使外网访问
network.host: 0.0.0.0
# 对外暴露端口
http.port: 9200
# ...还有很多可以设置,这些是基础的。具体看上面的配置参数说明

重启并查看集群健康状态:

# sudo systemctl start elasticsearch.service
# curl -XGET 'http://localhost:9200/_cat/health?v'

集群可视化插件安装elasticsearch-head

# cd ${elasticsearch_HOME}
# ./plugin install mobz/elasticsearch-head

页面访问效果(单节点):
http://119.29.248.199:9200/_plugin/head/

elasticsearch_head效果图.png

注意

  1. 集群中es的版本应保持一致,最好内网部署,外网不是很稳定。
  2. 可用容器(如docker)封装统一部署集群各节点以保持配置一致性
  3. 可在一台机器上运行多个节点来构建集群,只是性能会和机器配置相关

总结

  1. 集群中节点选型策略。node-data节点(随着数据增加而增加),note-client(随着查询压力而增加)节点
  2. 集群节点数量上升时,多关注配置参数,如gateway.recover_after_nodes等,会带来很多效率的提高
  3. 当集群数量较大时,建议横向扩展集群。单纯增加es节点的内存和CPU不会有很大提升,建议多增加节点

参考

上一篇 下一篇

猜你喜欢

热点阅读