集群概念
在单台 ES 服务器上,随着一个索引内数据的增多,会产生存储、效 率、安全等问题。
因此引入集群
我们需要将索引拆分成多份,分别放入不同的服务器中,此时这几台服务器维护了同一个索引,我们称这几台服务器为一个 集群 ,其中的每一台服务器为一个 节点 ,每一台服务器中的数据
称为一个 分片。
由于副本机制的存在
此时如果某个节点故障,则会造成集群崩溃,所以每个节点的分片往往还会创建副本 ,存放在 其他节点 中,此时一个节点的崩溃就不会影响整个集群的正常运行。
集群
一组节点组织在一起称为一个集群,它们共同持有整个的数据,并一起提供索引和搜索功能。
节点
一个节点是集群中的一台服务器,是集群的一部分。它存储数据,参与集群的索引和搜索功能。集群中有一个为主节点,主节点通过ES 内部选举产生。
分片
ES 可以把完整的索引分成多个分片,分别存储在 不同的节点上。
副本
ES 可以为每个分片创建副本,提高查询效率,保证在分片数据丢失后的恢复。
此外
1.分片的数量只能在索引创建时指定,索引创建后不能再更改分片数量,但可以改变副本的数量。
2.为保证节点发生故障后集群的正常运行,ES不会将某个分片和它的副本存在同一台节点上。
安装第一个节点
1.修改系统进程最大打开文件数
2.安装
3.修改配置文件
加入以下配置
#集群名称,保证唯一
cluster.name: my_elasticsearch
#节点名称,必须不一样
node.name: node1
#可以访问该节点的ip地址
network.host: 0.0.0.0
#该节点服务端口号
http.port: 9200
#集群间通信端口号
transport.port: 9300
#候选主节点的设备地址
discovery.seed_hosts:
["127.0.0.1:9300","127.0.0.1:9301","127.0.0.
1:9302"]
#候选主节点的节点名
cluster.initial_master_nodes:
["node1","node2","node3"]
#关闭安全认证
xpack.security.enabled: false
4.启动
另外两节点 操作同上
但在修改elasticsearch.yml配置文件时不一样
验证:
访问
出现下列信息,则代表集群成功启动
如何验证每个节点是否成功启动
关闭该节点
集群_故障应对和水平扩容
Elasticsearch优化_分片策略
分片和副本数并不是越多越好。每个分片的底层都是一个 Lucene 索引,会消耗一定的系统资源。且搜索请求需要命中索引中的所有分片,分片数过多会降低搜索性能
我们一般遵循以下规则:
Elasticsearch优化_内存设置
ES 默认占用内存是 4GB ,我们可以修改 config/jvm.option 设置 ES 的堆内存大小。
Xms 表示堆内存的初始大小
Xmx 表示可分配的最大内存