Elastic Stack-03-Elasticsearch7.10.0-集群部署

一、基本介绍

1 集群条件

集群最少 3 个节点, 集群的每个节点都需要使用非 root 用户启动。

2 Elasticsearch 基本概念介绍

2.1 文档

在这里插入图片描述
在这里插入图片描述

2.2 文档源数据

在这里插入图片描述
_all 字段在7.0版本中已被废除
_version 为了解决在大量并发写入时候文档冲突问题
_score 用于标识在一次查询结果中某条数据和希望查询到的目标的相似度

2.3 索引

在这里插入图片描述

2.4 Type

在 7.0 之前,一个 Index 可以设置多个 Types
7.0 开始一个索引只能建立一个 Type: _doc

2.5 Elasticsearch 和关系型数据库的比较

在这里插入图片描述

2.6 增删改查

要增删改查 Elasticsearch 的中数据,需要使用 REST API
在这里插入图片描述

3 集群基本概念

3.1 集群的特性

Elasticsearch 集群是一个多节点组成的高可用可扩展的分布式系统
在这里插入图片描述

在这里插入图片描述

3.2 集群中的节点角色

Master-eligible NodeMaster Node

在这里插入图片描述
Date NodeCoordinating Node
在这里插入图片描述

3.3 设置节点角色的建议

在这里插入图片描述

4 分片

4.1 主分片和副本

在这里插入图片描述
分片分布示例
在这里插入图片描述

4.2 分片的设定

主分片是在一开始建立索引时候设置的,后期无法更改

生产中要做好数据容量规划。

  • 分片过少
    后期如果数量量不断增多,也无法通过增加节点来实现水平扩展
    也会导致单个分片存储数据量过多,在以后数据重新分配时耗时。
  • 分片过多
    假如长期分片过多,会影响查询结果的相关性打分,从而影响查询结果的准确性
    单节点上存放过多的分片会造成资源的浪费,也会影响性能

二、部署步骤

Elasticsearch 是一个分布式、RESTful 风格的搜索和数据分析引擎,能够解决不断涌现出的各种用例。 作为 Elastic Stack 的核心,它集中存储您的数据,帮助您发现意料之中以及意料之外的情况。

1 在每个节点上修改安装主目录的属主和属组

 chown  -R ela.ela  /usr/local/elasticsearch-7.10.0

2 在每个节点上设置系统内核参数

设置内存映射

sysctl -w vm.max_map_count=262144 > /etc/sysctl.conf
sysctl -p

还需要设置关于这个进程可以打开的文件描述符数量

[root@prod ~]# tail /etc/security/limits.conf
#@faculty        soft    nproc           20
#@faculty        hard    nproc           50
#ftp             hard    nproc           0
#@student        -       maxlogins       4

# End of file
* soft nofile 65536
* hard nofile 131072
* soft nproc 2048
* hard nproc 4096

3 不同的版本依赖不同版本的 Java

官方链接:https://www.elastic.co/cn/support/matrix#matrix_jvm

4 下载二进制压缩包

二进制压缩包可以解压后直接使用无需编译


 wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.10.0-linux-x86_64.tar.gz

5 在每个节点上解压到指定目录

tar -xf elasticsearch-7.10.0-linux-x86_64.tar.gz -C /usr/local/

程序的主目录会是: /usr/local/elasticsearch-7.10.0

这里假设变量 ES_HOME 的值是 /usr/local/elasticsearch-7.10.0, 此变量将会在下文以及以后的文章中使用。

6 目录结构介绍

在这里插入图片描述

7 在每个节点创建用户 ela

useradd ela

8 在每个节点上对 ela 用户授权

chown -R ela.ela /usr/local/elasticsearch-7.10.0

9 在每个节点设置如下集群参数

默认情况下 Elasticsearch 会使用:
$ES_HOME/config/elasticsearch.yml 作为配置文件启动进程。

编译配置文件 /usr/local/elasticsearch-7.10.0/config/elasticsearch.yml
并添加如下内容:

ela1 节点 设置的内容如下:

cluster.name: elk
node.name: ela1
node.data: true
network.host: 0.0.0.0
http.port: 9200

discovery.seed_hosts:
   - ela1
   - 192.168.122.106:9300
   - 192.168.122.218
cluster.initial_master_nodes: ["ela1", "ela2", "ela3"]

ela2 节点设置的内容如下:

cluster.name: elk
node.name: ela2
node.data: true
network.host: 0.0.0.0
http.port: 9200

discovery.seed_hosts:
   - ela1
   - 192.168.122.106:9300
   - 192.168.122.218
cluster.initial_master_nodes: ["ela1", "ela2", "ela3"]

ela3 节点设置的内容如下:

cluster.name: elk
node.name: ela3
node.data: true
network.host: 0.0.0.0
http.port: 9200

discovery.seed_hosts:
   - ela1
   - 192.168.122.106:9300
   - 192.168.122.218
cluster.initial_master_nodes: ["ela1", "ela2", "ela3"]

参数说明

  • cluster.name 集群名称,各节点配成相同的集群名称。
  • node.name 节点名称,各节点配置不同。
  • node.data 指示节点是否为数据节点。数据节点包含并管理索引的一部分。
  • network.host 绑定节点IP。
  • http.port 监听端口。
  • path.data 数据存储目录。
  • path.logs 日志存储目录。
  • discovery.seed_hosts 指定集群成员,用于主动发现他们,所有成员都要写进来,包括自己,每个节点中应该写一样的信息。
  • cluster.initial_master_nodes 指定有资格成为 master 的节点
  • http.cors.enabled 用于允许head插件访问ES。
  • http.cors.allow-origin 允许的源地址。

注意:

  • 当您为提供自定义设置时 network.host,Elasticsearch会假设您正在从开发模式过渡到生产模式,并将许多系统启动检查从警告升级到异常。
  • cluster.initial_master_nodes 中的节点名称需要和 node.name 的名称一致。

10 启动集群

在每个节点上启动 elasticsearch 进程

切换到普通用户 ela

su - ela

执行如下命令

cd /usr/local/elasticsearch-7.10.0

./bin/elasticsearch -d -p /tmp/elasticsearch.pid

-d 后台运行
-p 指定一个文件,用于存放进程的 pid

默认端口号是 :

  • 9200 用于外部访问的监听端口,比如查看集群状态,向其传输数据,查询数据等
  • 9300 用户集群中节点之间的互相通信,比如主节点的选举,集群节点信息的通告等。

查看端口的命令如下:

ss -ntal

11 日志

日志消息可以在 $ES_HOME/logs/ 目录中找到

ls logs/elk.log

假如启动失败,从这个日志中查询报错信息

12 查看集群健康状态

curl -X GET "localhost:9200/_cat/health?v"


[elastic@ela3 elasticsearch-7.10.0]$ curl -X GET "localhost:9200/_cat/health?v"
epoch      timestamp cluster status node.total node.data shards pri relo init unassign pending_tasks max_task_wait_time active_shards_percent
1609065251 10:34:11  elk     green           3         3      0   0    0    0        0             0                  -                100.0%

三种不同状态的含义

  • 黄色 如果您仅运行单个Elasticsearch实例,则集群状态将保持黄色。单
    节点群集具有完整的功能,但是无法将数据复制到另一个节点以提供弹性。
  • 绿色 副本分片必须可用,群集状态为绿色。
  • 红色 如果群集状态为红色,则某些数据不可用。

13 查看集群节点信息

curl -X GET "localhost:9200/_cat/nodes?v"


[elastic@ela3 elasticsearch-7.10.0]$ curl -X GET "localhost:9200/_cat/nodes?v"
ip              heap.percent ram.percent cpu load_1m load_5m load_15m node.role  master name
192.168.122.106           59          93   0    0.00    0.01     0.05 cdhilmrstw -      ela2
192.168.122.218           65          94   0    0.00    0.02     0.06 cdhilmrstw -      ela3
192.168.122.6             49          94   0    0.07    0.05     0.05 cdhilmrstw *      ela1

14 排错

一般报错,常出现之前使用 root 用户启动,之后又使用普通用户启动的情况。
还有集群节点的 IP 地址变化的情况。

# 找到进程
[ela@ela1 elasticsearch-7.10.0]$ jdk/bin/jps
8244 Jps
7526 Elasticsearch

# 杀死进程
[ela@ela1 elasticsearch-7.10.0]$ kill -9 7526

查看相关日志

logs/elk.log

根据日志修改相关配置信息

解决完成后执行如下操作

# 删除数据目录中的所有文件
[ela@ela1 elasticsearch-7.10.0]$ rm -rf data/*

# 删除日志
[ela@ela1 elasticsearch-7.10.0]$ rm -rf logs/*


# 删除 keystore 文件
[ela@ela1 elasticsearch-7.10.0]$ rm -rf config/elasticsearch.keystore

# 重新启动进程
[ela@ela1 elasticsearch-7.10.0]$ bin/elasticsearch -d -p /tmp/elk.pid

15 关闭 Elasticsearch 进程

pkill -F /tmp/elasticsearch.pid
  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

shark_西瓜甜

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

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

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

打赏作者

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

抵扣说明:

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

余额充值