文章目录
1. 简介
elasticsearch的node的类型一般分为master-eligible-node,data-node,ingest-node,machine-learning-node,coordinate-node
每个node都有两个网络线路,http和transport。
正常情况建议将master-eligible独立出来,也就是只做master不存储data数据。
2. master-eligible-node
master主要负责一些cluster范围内的轻量的操作,比如index的create,delete,追踪cluster中有哪些node,决定某个shard应该被allocated到哪个node上面。保证master节点的稳定对于cluster的稳定性非常重要。
indexing和search操作都是cpu,memory,i/0敏感型的work,会在node上面造成压力。所以在比较大的cluster中建议设置专用的master node。
即使是一个专用的master也可以承担转发indexing和search的需求,所以最好不要将master暴露到外部请求当中,可能会引起不必要的转发。
专用的master可以这样配置
node.master: true
node.data: false
node.ingest: false
node.ml: false
xpack.ml.enabled: true
cluster.remote.connect: false #禁止跨集群的查询
3. data-node
data node在cluster中的主要功能就是存储数据,主要是对data的CRUD.
专用的data-node可以这样设置
node.master: false
node.data: true
node.ingest: false
node.ml: false
cluster.remote.connect: false
4. ingest-nodes
ingest-node的功能是执行一些pipelines来对数据进行预处理,提前进行解析来增加,删除或者修改一些字段。
专用的ingest-node可以这样设置
node.master: false
node.data: false
node.ingest: true
node.ml: false
cluster.remote.connect: false
5. Coordinating only node
coordinating node就是把上面的各种node都设置成false就变成coordinating-node了,coordinating-node就像nginx只是一个负载均衡的转发。
正常情况下,一个集群里面也不需要专用的coordinating-node,他们在职责直接由data-node兼任就可以了
专用的coordinating-node可以这样设置
node.master: false
node.data: false
node.ingest: false
node.ml: false
cluster.remote.connect: false
6. Machine learning node
机器学习的node,这个需要开会员才能用奥,跑一些机器学习的任务。没钱,没有用过。
专用的机器学习node设置
node.master: false
node.data: false
node.ingest: false
node.ml: true
xpack.ml.enabled: true
cluster.remote.connect: false
7. data-node的path设置
data-node会在磁盘上存储下面的数据
- node上allocated的shard
- index的每个shard的metadata
- cluster范围的metadata(settings和index templates)
master-eligible node 存储的数据
- cluster中的每个index的metadata
- cluster范围的metadata(settings和index templates)
elasticsearch可以设置多个数据路径
node.name: ESV06
path:
data:
- /data1/elasticsearch/data
- /data2/elasticsearch/data