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

在这里插入图片描述

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐