Elasticsearch集群搭建

集群概念

在单台 ES 服务器上,随着一个索引内数据的增多,会产生存储、效 率、安全等问题。

因此引入集群

我们需要将索引拆分成多份,分别放入不同的服务器中,此时这几台服务器维护了同一个索引,我们称这几台服务器为一个 集群 ,其中的每一台服务器为一个 节点 ,每一台服务器中的数据
称为一个 分片。
由于副本机制的存在
此时如果某个节点故障,则会造成集群崩溃,所以每个节点的分片往往还会创建副本 ,存放在 其他节点 中,此时一个节点的崩溃就不会影响整个集群的正常运行。

集群

一组节点组织在一起称为一个集群,它们共同持有整个的数据,并一起提供索引和搜索功能。

节点 

一个节点是集群中的一台服务器,是集群的一部分。它存储数据,参与集群的索引和搜索功能。集群中有一个为主节点,主节点通过ES 内部选举产生。

分片

ES 可以把完整的索引分成多个分片,分别存储在 不同的节点上。

副本

ES 可以为每个分片创建副本,提高查询效率,保证在分片数据丢失后的恢复。
此外
1.分片的数量只能在索引创建时指定,索引创建后不能再更改分片数量,但可以改变副本的数量。

2.为保证节点发生故障后集群的正常运行,ES不会将某个分片和它的副本存在同一台节点上。

 安装第一个节点

1.修改系统进程最大打开文件数

vim /etc/security/limits.conf

# 添加如下内容
es soft nofile 65535
es hard nofile 131072

2.安装

# 解压:
tar -zxvf elasticsearch-8.10.4-linux-x86_64.tar.gz -C /usr/local/
#重命名
mv  elasticsearch-8.10.4  myes1
# 安装 ik 分词器
unzip elasticsearch-analysis-ik-8.10.4.zip -d  /usr/local/myes1/plugins/analysis-ik
# 安装拼音分词器
unzip elasticsearch-analysis-pinyin-8.10.4.zip -d   /usr/local/myes1/plugins/analysis-pinyin
#给当前普通用户取得该文件夹权限:
chown -R es1:es1 /usr/local/myes1

3.修改配置文件

# 打开节点一配置文件:
vim    /usr/local/myes1/config/elasticsearch.yml

加入以下配置

#集群名称,保证唯一
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.启动

# 切换为 es 用户:
su es
# 后台启动第一个节点:
ES_JAVA_OPTS = "-Xms512m -Xmx512m"   /usr/local/myes1/bin/elasticsearch -d

另外两节点 操作同上

但在修改elasticsearch.yml配置文件时不一样

第二节点

# 节点名称,必须不一样
node.name : node2
# 该节点服务端口号
http.port : 9201
# 集群间通信端口号
transport.port : 9301
第三节点
# 节点名称,必须不一样
node.name : node3
# 该节点服务端口号
http.port : 9202
# 集群间通信端口号
transport.port : 9302

验证:

访问

http://虚拟机ip:9200/_cat/nodes

出现下列信息,则代表集群成功启动 

如何验证每个节点是否成功启动

curl 虚拟机ip:节点端口号

关闭该节点

1.查看进程

ps -ef |grep elastic

2.杀死该进程

kill -9 进程号 

 集群_故障应对水平扩容

1.关闭一个节点,可以发现 ES 集群可以自动进行故障应对。
2.重新打开该节点,可以发现 ES 集群可以自动进行水平扩容。
3.分片数不能改变,但是可以改变每个分片的副本数

Elasticsearch优化_分片策略

分片和副本数并不是越多越好。每个分片的底层都是一个 Lucene 索引,会消耗一定的系统资源。且搜索请求需要命中索引中的所有分片,分片数过多会降低搜索性能

我们一般遵循以下规则:

1. 每个分片占用的硬盘容量不超过 ES 的最大 JVM 的堆空间设置 ( 一般设置不超过32G
2.分片数一般不超过节点数的 3
3. 推迟分片分配:节点中断后集群会重新分配分片。但默认集群会 等待一分钟来查看节点是否重新加入。我们可以设置等待的时 长,减少重新分配的次数。
4.减少副本数量:进行写入操作时,需要把写入的数据都同步到副本,副本越多写入的效率就越慢。我们进行大批量进行写入操作时可以先设置副本数为0 ,写入完成后再修改回正常的状态

Elasticsearch优化_内存设置 

ES 默认占用内存是 4GB ,我们可以修改 config/jvm.option 设置 ES 的堆内存大小。
Xms 表示堆内存的初始大小
Xmx 表示可分配的最大内存
1. Xmx Xms 的大小设置为相同的,可以减轻伸缩堆大小带来的压力
2. Xmx Xms 不要超过物理内存的 50% ,因为 ES 内部的 Lucene 也要占据一部分物理内存。
3.  Xmx Xms 不要超过 32GB ,由于 Java 语言的特性,堆内存超过 32G 会浪费大量系统资源,所以在内 存足够的情况下,最终我们都会采用设置为31G
-Xms 31g
-Xmx 31g
  • 24
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Victor故里

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值