ES集群部署
ES安装
1、上传ElasticSearch安装包
alt+p # 打开sftp窗口
# 上传es安装包
put e:/software/elasticsearch-7.4.0-linux-x86_64.tar.gz
2、执行解压操作 ,如下图
# 将elasticsearch-7.4.0-linux-x86_64.tar.gz解压到opt文件夹下. -C 大写
tar -zxvf elasticsearch-7.4.0-linux-x86_64.tar.gz -C /opt
3、创建普通用户
因为安全问题,Elasticsearch 不允许root用户直接运行,所以要创建新用户,在root用户中创建新用户,执行如下命令:
useradd es # 新增es用户
passwd Aa1234567. # 为es用户设置密码
5、为新用户授权,如下图
chown -R es:es /opt/elasticsearch-7.4.0 #文件夹所有者
将 /opt/elasticsearch-7.4.0文件夹授权给itheima用户,由上图可见,我们的文件夹权限赋给了itheima
6、修改elasticsearch.yml文件
vim /opt/elasticsearch-7.4.0/config/elasticsearch.yml
#集群名称
cluster.name: task-center
#节点名称,每个ES节点都不一样
node.name: node-master-130
#是否为主节点
node.master: true
#是否存储数据
node.data: false
network.host: 0.0.0.0
#连接端口
http.port: 9200
#ES 集群通信端口
transport.port: 9300
transport.tcp.port: 9300
## 最少主节点数量
discovery.zen.minimum_master_nodes: 1
## 开放网络权限
http.cors.enabled: true
http.cors.allow-origin: "*"
7、修改配置文件
新创建的es用户最大可创建文件数太小,最大虚拟内存太小,切换到root用户,编辑下列配置文件, 添加类似如下内容
# 切换到root用户
su root
#1. ===最大可创建文件数太小=======
vim /etc/security/limits.conf
# 在文件末尾中增加下面内容
es soft nofile 65536
es hard nofile 65536
# =====
vim /etc/security/limits.d/20-nproc.conf
# 在文件末尾中增加下面内容
es soft nofile 65536
es hard nofile 65536
* hard nproc 4096
# 注:* 代表Linux所有用户名称
#2. ===最大虚拟内存太小=======
vim /etc/sysctl.conf
# 在文件中增加下面内容
vm.max_map_count=655360
# 重新加载,输入下面命令:
sysctl -p
8、启动elasticsearch
su es # 切换到itheima用户启动
cd /opt/elasticsearch-7.4.0/bin
./elasticsearch #启动
通过上图我们可以看到elasticsearch已经成功启动
1.2 访问elasticsearch
将指定端口9200开放
firewall-cmd --zone=public --add-port=9200/tcp --permanent
firewall-cmd --reload
ES集群搭建
在了解ES集群的时候我们需要现了解一下ES的节点角色都有那些
ES节点角色
master - 主节点:
配置: elasticsearch.yml
node.master: true
node.data: false
- 主要功能:维护元数据,管理集群节点状态;不负责数据写入和查询。
- 配置要点:内存可以相对小一些,但是机器一定要稳定,最好是独占的机器。
data - 数据节点 :
配置: elasticsearch.yml
node.master: false
node.data: true
- 主要功能:负责数据的写入与查询,压力大。
- 配置要点:大内存,最好是独占的机器。
client - 客户端节点 :
配置: elasticsearch.yml
node.master: false
node.data: false
mixed- 混合节点(不建议):
配置: elasticsearch.yml
node.master: true
node.data: true
- 主要功能:综合上述三个节点的功能。
- 配置要点:大内存,最好是独占的机器。
-
特别说明:不建议这种配置,节点容易挂掉
。
ES 集群部署测试
我们准备了4台服务器,一台作为ES Client节点,一台为ES master 节点,两台为ES data 节点
各ES 节点:
ES Client: 192.168.200.128
ES Master: 192.168.200.130
ES Data-1: 192.168.200.132
ES Data-2: 192.168.200.133
访问ES 9200 查看集群详情:
可以访问任意一个节点查询集群信息,因为我们有一个Master节点在存活,Master节点是用于管理集群信息和数据分片
标 * 为主节点
测试1: 关于各节点角色的作用
前提: 我们创建一个test 索引,两个映射字段,2个分片一个副本
创建后如下:
可以看到数据存储到ES 数据节点上
(1) 当master节点 死掉
我们关停master节点:
再去查看ES 索引状态
我们访问ES 索引信息访问不到,我们往ES 中存入数据试一下
我们发现ES 所有的信息都不可见,查询,存储都无法使用
master解释:
用来管理ES 集群,并通过master 节点进行对 数据进行分片分发,如果maste 死掉,ES 集群就不可用
(2)当Client节点 死掉
ES 操作正常
client解释:
Client节点用于分发请求,用于负载均衡,Master节点和Data 数据节点都可以有Client节点的功能,但是如果使用Master或者Data节点取访问ES 会给改节点巨大的压力,容易死掉
(3)Data 节点 死掉:
死一个Data 节点:
我们看到健康值变为了黄色,因为我们对数据分片的合理配置,将数据均匀的分配到了两个数据节点上,即使一个数据节点死掉,也可以提供全量数据
死两个Data 节点:
健康值变为了红色,数据丢失风险大,数据已经没有了
Data节点:
用于存储分片数据,并备份数据
测试2:关于各个ES 数据节点数据同步问题
准备两个数据节点133,132,测试以下几种情况
(1) 133,132同时存活,插入数据后,死亡133
查看数据:
死亡133
查看数据:
数据存在
(2) 133死亡,132存活,插入一条数据后,存活133,死亡132
主要用于测试当A数据节点存活时,B节点死亡,有数据存储到A 节点,当B节点存活后是否会将A节点的存入数据再同步到B节点上
存入两条数据
启动133,稍等片刻死亡132
查看数据
数据存在
测试3:关于分片与备份的使用
我们在对索引进行分片与备份的时候,既要求高可用,又要求最后即使只剩一个数据节点,也能保证数据的全量性,要实现这一个就得要求每个数据节点都得有一个完整的数据
只要准寻以下公式即可
数据节点n个
则分片个数为n,备份为n-1
例如2个数据节点 则
分片个数: 2
副本数: 1
如果3个数据节点:
则分片数3
副本数为2