Elasticsearch集群搭建手册及配置详情(基于elasticsearch-8.5.2版本)

0 安装前准备工作

0.1 安装包下载

组件 安装包 下载地址
es elasticsearch-8.5.2-linux-x86_64.tar.gz elastic官网:https://www.elastic.co/cn/downloads/past-releases#elasticsearch elastic中文社区:https://elasticsearch.cn/download/
java openjdk-17.0.1_linux-x64_bin.tar.gz https://www.injdk.cn/

0.2 自定义部署标准

自定义部署标准 标准描述
es elasticsearch不允许使用root账号启动服务,如果你当前账号是root,则需要创建一个专有账户。本文档使用es作为专有用户。
/home/es/software 用于解压安装elasticsearch和java的软件安装包和相关配置文件
/data00,/data01,/data02 1、raid0数据盘,用于存放节点、分片、索引、文档的所有数据。2、目前elastic社区计划删除MDP多数据路径方案,在8.x权威指南已经警告 在 7.13.0 中弃用(https://www.elastic.co/guide/en/elasticsearch/reference/current/important-settings.html#path-settings)。可能是因为遭受到用户的强烈反对,issues从最初的弃用调整到了最后的告警(https://github.com/elastic/elasticsearch/issues/71205)。如果你配置了MDP多路径方案,可能会像我一样在*_server.json日志中收到如下WAIN内容“Configuring [path.data] with a list is deprecated. Instead specify as a string value.”。不过我还是建议用户放弃多数据库路径,在文件系统层面使用raid方案。
/home/es/logs 用于存放elasticsearch输出的日志,有条件的建议目录单独挂盘使用。
/home/es/software/elasticsearch elasticsearch-8.5.2的软连接
/home/es/software/java jdk-17.0.1的软连接
/home/es/.bashrc 用于存放elasticsearch、java和logs相关的用户环境变量

0.3 节点角色划分

IP node.name cluster.initial_master_nodes
192.168.168.1 node-1 true
192.168.168.2 node-2 true
192.168.168.3 node-3 true
192.168.168.4 node-4 false
192.168.168.5 node-5 false

0.4 elasticsearch目录介绍

elasticsearch目录 描述
bin 可执行脚本文件,包括启动elasticsearch服务、插件管理、函数命令等。
config 配置文件目录,如elasticsearch配置、角色配置、jvm配置等。
jdk elasticsearch7.x 以后特有,自带的 java 环境,8.x版本自带 jdk17或jdk19
lib elasticsearch所依赖的java库。
modules 包含所有的Elasticsearch模块,如Cluster、Discovery、Indices等。
plugins 插件安装后会自动解压安装在此目录下

0.5 系统重要配置介绍

文件 配置 描述
/etc/security/limits.d/90-nproc.conf(或/etc/security/limits.conf) es - nproc 4096 确保 es 用户可以创建的线程数至少为 4096
同上 es - nofile 65535 Elasticsearch 使用大量文件描述符或文件句柄。 用完文件描述符可能是灾难性的,很可能会导致数据丢失。 确保将运行 es 的用户的打开文件描述符数量限制增加到 65536 或更高。
同上 es soft memlock unlimited allow user ‘elasticsearch’ mlockall
同上 es hard memlock unlimited 同上
/etc/sysctl.conf vm.max_map_count=262144 限制虚拟内存
同上 vm.swappiness=0 1、Linux系统上可用的另一个选项是确保sysctl值vm.swappiness设置为1。这减少了内核的交换倾向,在正常情况下不会导致交换,同时仍允许整个系统在紧急情况下交换。2、以上是elsatic官网的建议,但是我们一般都是禁止使用swappiness,所以直接将vm.swappiness设置为0。
同上 vm.overcommit_memory=1 内存分配控制
同上 vm.zone_reclaim_mode=0 这个参数可以取值0/1/3/4。其中0表示在local内存不够用的情况下可以去其他的内存区域分配内存;1表示在local内存不够用的情况下本地先回收再分配;3表示本地回收尽可能先回收文件缓存对象;4表示本地回收优先使用swap回收匿名内存。由此可见,将其设为0可以降低swap发生的概率。
同上 net.ipv4.tcp_retries2=5 TCP重传超时。(此设置适用于所有TCP连接,也会影响与Elasticsearch集群以外的系统的通信可靠性。如果集群通过低质量网络与外部系统通信,则可能需要为net.ipv4.tcp_retrys2选择更高的值。)

0.6 elasticsearch重要配置项介绍

文件 配置项 配置内容样例 描述
elasticsearch.yml cluster.name: es-v8.5.2 集群名称。一个节点只有在与集群中的所有其他节点共享其 cluster.name 时才能加入集群。 默认名称是 elasticsearch,但您应该将其更改为描述集群用途的适当名称。
同上 node.name: node-1 节点名称。Elasticsearch使用node.name作为集群特定实例的可读标识符。该名称包含在许多API的响应中。当Elasticsearch启动时,节点名默认为机器的主机名,但可以在elasticsearch.yml中显式配置为指定的名称。节点名称之前应该有一定的规则,且唯一。
同上 node.roles: [ master, data ] node.roles您可以通过在 中设置来定义节点的角色elasticsearch.yml。如果设置node.roles,则仅向节点分配您指定的角色。如果您不设置node.roles,节点将分配以下角色:master,data,data_content,data_hot,data_warm,data_cold,data_frozen,ingest,ml,remote_cluster_client,transform。本文档暂不做解释,后面会单独写一篇介绍node.roles,需要了解的可以阅读如下链接内容(https://www.elastic.co/guide/en/elasticsearch/reference/current/modules-node.html#node-roles)
同上 path.data: /data00/es-v8.5.2,/data01/es-v8.5.2,/data02/es-v8.5.2 数据路径,包含节点、分片、索引、文档的所有数据。
同上 path.logs: /home/es/logs 日志路径
同上 bootstrap.memory_lock: true linux在使用内存锁时仍会交换堆外内存。要防止堆外内存交换,请禁用所有交换文件。
同上 network.host: 10.237.181.71 (静态,字符串)为 HTTP 和传输流量设置此节点的地址。 该节点将绑定到该地址,并将其用作其发布地址。 接受 IP 地址、主机名或特殊值。默认为 local。例如127.0.0.1。需要搭建集群,此处需要修改为本机ip或hostname。
同上 http.port: 默认值为:9200-9300,使用默认值,不需要再配置。 (静态,整数)为 HTTP 客户端通信绑定的端口。接受单个值或范围。如果指定了一个范围,节点将绑定到该范围内的第一个可用端口。
同上 transport.port: 默认值为:9300-9400,使用默认值,不需要再配置。 静态,整数)为节点之间的通信绑定的端口。接受单个值或范围。如果指定了一个范围,节点将绑定到该范围内的第一个可用端口。在每个符合主节点条件的节点上将此设置设置为单个端口,而不是一个范围。
同上 discovery.seed_hosts: [“10.237.181.71”,“10.237.181.72”,“10.237.181.73”] 要将新节点添加到现有集群中,请配置 discovery.seed_hosts 或其他相关发现设置,以便新节点可以发现集群中现有的 master-eligible 节点。 要引导新的多节点集群,请按照集群引导部分中的描述配置 cluster.initial_master_nodes 以及 discovery.seed_hosts 或其他相关发现设置。
同上 cluster.initial_master_nodes: [“10.237.181.71”,“10.237.181.72”,“10.237.181.73”] 当您启动符合主节点资格的节点时,您可以在命令行或 elasticsearch.yml 文件中提供此设置。 集群形成后,从每个节点的配置中删除此设置。
同上 xpack.security.enabled: false elasticsearch-8.x默认是开启Security的,内网搭建集群的话,此处建议关闭Security。如果是在公网使用,则建议打开,使用可以阅读官网文档。
jvm.options -Xms -Xms4g 建议设置为机器内存大小的1/4~1/2范围内,最大不超过32G。默认情况下,Elasticsearch 根据节点的 角色和总内存自动设置 JVM 堆大小。对于大多数生产环境,建议使用默认大小。
同上 -Xmx -Xmx4g 同上

0.7 elasticsearch产品兼容性

与elasticsearch兼容性 参考地址
操作系统 https://www.elastic.co/cn/support/matrix#matrix_os
JVM https://www.elastic.co/cn/support/matrix#matrix_jvm
浏览器 https://www.elastic.co/cn/support/matrix#matrix_browsers
插件等 https://www.elastic.co/cn/support/matrix#matrix_browsers
Logstash 插件 https://www.elastic.co/cn/support/matrix#matrix_browsers

1 修改系统重要配置

1.1 线程数,句柄数和锁定内存

修改es用户创建的最小线程数,可打开的最小文件描述符和文件句柄,锁定内存

文件:/etc/security/limits.d/90-nproc.conf(或/etc/security/limits.conf)

echo 'es  -  nproc   4096' >> /etc/security/limits.d/90-nproc.conf
echo 'es  -  nofile  65535' >> /etc/security/limits.d/90-nproc.conf
echo 'es soft memlock unlimited' >> /etc/security/limits.d/90-nproc.conf
echo 'es hard memlock unlimited' >> /etc/security/limits.d/90-nproc.conf

1.2 修改内核参数

文件:/etc/sysctl.conf

echo 'vm.max_map_count=262144'    >> /etc/sysctl.conf
echo 'vm.swappiness=0'           >> /etc/sysctl.conf
echo 'vm.overcommit_memory=1'    >> /etc/sysctl.conf
echo 'vm.zone_reclaim_mode=0'    >> /etc/sysctl.conf
echo 'net.ipv4.tcp_retries2=5'   >> /etc/sysctl.conf#执行命令生效
sysctl -p

2 软件部署

2.1 创建es用户及用户组

root用户操作

groupadd es -g 750 && useradd -g es -u 750 es

2.2 配置用户环境变量

cd /home/es
echo 'export ES_HOME=/home/es/software/elasticsearch' >> .bashrc
echo 'export ES_TMPDIR=/home/es/logs/tmp' >> .bashrc
echo 'export JAVA_HOME=/home/es/software/java' >> .bashrc
echo 'export PATH=$JAVA_HOME/bin:$ES_HOME/bin:$PATH' >> .bashrc

2.3 创建相关目录

软件目录

su - es -c "mkdir /home/es/software"

日志目录

su - es -c "mkdir -p /home/es/logs;mkdir -p /home/es/logs/tmp"

数据目录

elastic官网提示在 7.13.0 中弃用多个数据路径,每个节点(或进程服务)只能配置一个数据路径。

mkdir /data00/es-v8.5.2;mkdir /data01/es-v8.5.2;mkdir /data02/es-v8.5.2chown es:es /data*/es-v8.5.2

2.4 上传软件包

上传软件包到/home/es/software目录下

scp elasticsearch-8.5.2-linux-x86_64.tar.gz $ip:/home/es/softwarescp openjdk-17.0.1_linux-x64_bin.tar.gz $ip:/home/es/software

解压软件包,为elasticsearch和jdk创建软连接,和环境变量路径保持一致

cd /home/es/software
tar -zxvf elasticsearch-8.5.2-linux-x86_64.tar.gz
rm -f elasticsearch-8.5.2-linux-x86_64.tar.gz
ln -s elasticsearch-8.5.2 elasticsearch
tar -zxvf openjdk-17.0.1_linux-x64_bin.tar.gz
rm -f openjdk-17.0.1_linux-x64_bin.tar.gz
ln -s jdk-17.0.1 java
chown -R es:es /home/es

3 修改elasticsearch重要配置项

切换到es用户下执行

su - escd /home/es/software/elasticsearch/config/

3.1 node-1节点elasticsearch.yml

cluster.name: es-v8.5.2
node.name: node-1
path.data: /data00/es-v8.5.2,/data01/es-v8.5.2,/data02/es-v8.5.2
path.logs: /home/es/logs
bootstrap.memory_lock: true
network.host: 192.168.168.1
discovery.seed_hosts: ["192.168.168.1", "192.168.168.2" , "192.168.168.3"]
cluster.initial_master_nodes: ["192.168.168.1", "192.168.168.2" , "192.168.168.3"]
xpack.security.enabled: false

3.2 node-2节点修改elasticsearch.yml

cluster.name: es-v8.5.2
node.name: node-2
path.data: /data00/es-v8.5.2,/data01/es-v8.5.2,/data02/es-v8.5.2
path.logs: /home/es/logs
bootstrap.memory_lock: true
network.host: 192.168.168.2
discovery.seed_hosts: ["192.168.168.1", "192.168.168.2" , "192.168.168.3"]
cluster.initial_master_nodes: ["192.168.168.1", "192.168.168.2" , "192.168.168.3"]
xpack.security.enabled: false

3.3 node-3节点修改elasticsearch.yml

cluster.name: es-v8.5.2
node.name: node-3
path.data: /data00/es-v8.5.2,/data01/es-v8.5.2,/data02/es-v8.5.2
path.logs: /home/es/logs
bootstrap.memory_lock: true
network.host: 192.168.168.3
discovery.seed_hosts: ["192.168.168.1", "192.168.168.2" , "192.168.168.3"]
cluster.initial_master_nodes: ["192.168.168.1", "192.168.168.2" , "192.168.168.3"]
xpack.security.enabled: false

3.4 node-4节点修改elasticsearch.yml

cluster.name: es-v8.5.2
node.name: node-4
path.data: /data00/es-v8.5.2,/data01/es-v8.5.2,/data02/es-v8.5.2
path.logs: /home/es/logs
bootstrap.memory_lock: true
network.host: 192.168.168.4
discovery.seed_hosts: ["192.168.168.1", "192.168.168.2" , "192.168.168.3"]
xpack.security.enabled: false

3.5 node-5节点修改elasticsearch.yml

cluster.name: es-v8.5.2
node.name: node-5
path.data: /data00/es-v8.5.2,/data01/es-v8.5.2,/data02/es-v8.5.2
path.logs: /home/es/logs
bootstrap.memory_lock: true
network.host: 192.168.168.5
discovery.seed_hosts: ["192.168.168.1", "192.168.168.2" , "192.168.168.3"]
xpack.security.enabled: false

4 依次启动Elasticsearch服务

切换到es用户下执行

su - escd /home/es/software/elasticsearch/bin/./elasticsearch -d#es用户下jps -ml查看Elasticsearch服务是否存在
jps -ml

5 验证集群服务

#查看集群监控状态
$ curl -XGET 'http://192.168.168.1: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
1669797905 08:45:05  es-v8.5.2 green           5         5      0   0    0    0        0             0                  -                100.0%#查看节点状态
$ curl -XGET 'http://192.168.168.1:9200/_cat/nodes?v&s=name'
ip            heap.percent ram.percent cpu load_1m load_5m load_15m node.role   master name
192.168.168.1           11          49   0    0.00    0.01     0.05 cdfhilmrstw -      node-1
192.168.168.2            6          98   0    0.00    0.01     0.05 cdfhilmrstw -      node-2
192.168.168.3            4          99   0    0.00    0.01     0.05 cdfhilmrstw *      node-3
192.168.168.4            2          99   0    0.00    0.05     0.09 cdfhilmrstw -      node-4
192.168.168.5            2          99   7    0.61    0.21     0.11 cdfhilmrstw -      node-5

6 删除cluster.initial_master_nodes配置项

删除master节点中cluster.initial_master_nodes: [“192.168.168.1”, “192.168.168.2” , “192.168.168.3”]配置项。

附录

附1 Elasticsearch和JDK兼容性对应关系表

Elasticsearch 和 JVM 版本对应关系见如下链接 Oracle/OpenJDK**/AdoptOpenJDK Oracle/OpenJDK** Oracle/OpenJDK** Oracle/OpenJDK** AdoptOpenJDK Oracle/OpenJDK** Oracle/OpenJDK**/AdoptOpenJDK Oracle/OpenJDK**/AdoptOpenJDK Oracle/OpenJDK**/AdoptOpenJDK Oracle/OpenJDK**/AdoptOpenJDK/Temurin Oracle/OpenJDK**/Temurin Oracle/OpenJDK**/Temurin Oracle/OpenJDK**/Temurin Azul Zing IBM
https://www.elastic.co/cn/support/matrix#matrix_jvm 1.8.0 9 10 11 11 12 13 14 15 16 17 18 19 16.01.9.0+ J9 (any version)
Elasticsearch 5.0.x X X X X X X X X X X X X X
Elasticsearch 5.1.x X X X X X X X X X X X X X
Elasticsearch 5.2.x X X X X X X X X X X X X X
Elasticsearch 5.3.x X X X X X X X X X X X X X
Elasticsearch 5.4.x X X X X X X X X X X X X X
Elasticsearch 5.5.x X X X X X X X X X X X X X
Elasticsearch 5.6.x X X X X X X X X X X X X X
Elasticsearch 6.0.x X X X X X X X X X X X X X X
Elasticsearch 6.1.x X X X X X X X X X X X X X X
Elasticsearch 6.2.x X X X X X X X X X X X X X
Elasticsearch 6.3.x X X X X X X X X X X X X X
Elasticsearch 6.4.x X X X X X X X X X X X X X
Elasticsearch 6.5.x X X X X X X X X X X X X X
Elasticsearch 6.6.x X X X X X X X X X X X X X
Elasticsearch 6.7.x X X X X X X X X X X X X
Elasticsearch 6.8.x X X X X X
Elasticsearch 7.0.x X X X X X X X X X X X X
Elasticsearch 7.1.x X X X X X X X X X X X X
Elasticsearch 7.2.x X X X X X X X X X X X X
Elasticsearch 7.3.x X X X X X X X X X X X X
Elasticsearch 7.4.x X X X X X X X X X X X
Elasticsearch 7.5.x X X X X X X X X X X X
Elasticsearch 7.6.x X X X X X X X X X X X
Elasticsearch 7.7.x X X X X X X X X X X X
Elasticsearch 7.8.x X X X X X X X X X X X
Elasticsearch 7.9.x X X X X X X X X X X
Elasticsearch 7.10.x X X X X X X X X X X
Elasticsearch 7.11.x X X X X X X X X X X X
Elasticsearch 7.12.x X X X X X X X X X X
Elasticsearch 7.13.x X X X X X X X X X X X
Elasticsearch 7.14.x X X X X X X X X X X X
Elasticsearch 7.15.x X X X X X X X X X X
Elasticsearch 7.16.x X X X X X X X X X X X
Elasticsearch 7.17.x X X X X X X X X X
Elasticsearch 8.0.x X X X X X X X X X X X X X X
Elasticsearch 8.1.x X X X X X X X X X X X X X
Elasticsearch 8.2.x X X X X X X X X X X X X X
Elasticsearch 8.3.x X X X X X X X X X X X X X
Elasticsearch 8.4.x X X X X X X X X X X X X X
Elasticsearch 8.5.x X X X X X X X X X X X X

Elasticsearch集群搭建手册及配置详情(基于elasticsearch-8.5.2版本)相关推荐

  1. (六)elasticsearch 集群 网络超时解决方案 --- Elasticsearch 集群搭建

    上一篇: (五)elasticsearch 集群扩展 --- Elasticsearch 集群搭建 因为网络原因,可能会有节点被踢出集群,如果网络恢复,节点会再次加入集群,但是这中间的过程是比较耗费性 ...

  2. elasticsearch 集群搭建 + kibana配置

    elasticsearch 集群搭建 + kibana配置 一.elasticsearch 集群搭建 1.下载并解压elasticsearch 2.ES集群搭建 2.1 打开防火墙9200,9300端 ...

  3. elasticsearch集群搭建及springboot集成使用

    elasticsearch集群搭建及springboot集成使用 1. ES介绍 2. 原理 2.1 核心概念 2.2 索引功能 2.3 ES特性 3. 分词器(analyzer) 4. 集群搭建 4 ...

  4. elasticsearch集群搭建记录

    elasticsearch集群搭建记录 一.集群服务器配置信息 二.安装 JDK 三.下载 ElasticSearch 安装包和中文分词器并解压 四.创建用于存放数据与日志的目录 五.集群配置 5.1 ...

  5. Kubernatesv1.21.2集群搭建手册

    Kubernatesv1.21.2集群搭建手册 Kubernetes安装及相关环境搭建手册,以下步骤所有机器都要执行 一.前期准备 1)前提条件 三台兼容的 Linux 主机.Kubernetes 项 ...

  6. mac下ElasticSearch 集群搭建,使用Kibana配置和管理集群

    Elasticsearch如果做集群的话Master节点至少三台服务器或者三个Master实例加入相同集群,三个Master节点最多只能故障一台Master节点,如果故障两个Master节点,Elas ...

  7. elasticsearch集群搭建实例

    下个月又开始搞搜索了,几个月没动这块还好没有落下. 晚上在自己虚拟机上搭建了一个简易搜索集群,分享一下. 操作系统环境: Red Hat 4.8.2-16 elasticsearch : elasti ...

  8. Elasticsearch集群搭建、优化及实践

    文章目录 一.Elasticsearch集群 1.Elasticsearch集群概念 2.Elasticsearch集群安装 3.安装Kibana 4.测试集群状态 二.Elasticsearch优化 ...

  9. elasticsearch集群搭建

    elasticsearch ARM架构集群搭建 一.搭建环境 搭建服务器IP 环境 es版本号 路径 20.10.0.xx CentOS Linux release 7.9.2009 (AltArch ...

最新文章

  1. linux svn 开机启动
  2. CRI-O将如何把Kubernetes推上容器生态系统的中心位置
  3. 2018 blockchain innovation final round of the chain valley
  4. c语言有图小游戏,【图片】C语言小游戏~贪吃蛇【c语言吧】_百度贴吧
  5. 无监督和有监督的区别_干货|全面理解无监督学习基础知识
  6. use putty to log on OS
  7. The absolute uri: http://java.sun.com/jsp/jstl/core cannot be resolved in either web.xml or the jar
  8. LeetCode 1634. 求两个多项式链表的和
  9. 八、华为鸿蒙HarmonyOS应用开发之Java UI框架、常用TextField组件使用
  10. 溢信服务转型之代理商技术培训
  11. Parse error: syntax error, unexpected '__data' (T_STRING), expecting ',' or ')'
  12. 浙江大学黄杨思博计算机学院,浙江大学2010-2011学年大学生学科竞赛获奖名单
  13. 卷积神经网络(CNN)卷积核与滤波器理解
  14. 婚房布置清单 婚房布置图片大全 婚房布置效果图
  15. 巧妙处理pdf转换成jpg的好方法
  16. 斗地主(按照顺序给玩家发牌)
  17. VOSviewer进行中文和英文文献分析
  18. 目标检测网络之 YOLOv3
  19. 全网最全Fiddler攻略,十分钟了解Fiddler抓包
  20. 大数据应用分析解决方案----图书出版

热门文章

  1. 高通(上海)招聘机器学习研究工程师
  2. 【转】游戏类型常用简称
  3. Web前端学习笔记——HTML基础
  4. 查询应用服务器fc端口wwn号,FC磁盘阵列 实现WWN端口绑定功能
  5. element plus 日期选择器,禁用今天之前的时间
  6. 计算机二级考试报名发票,从业资格考试报名
  7. primary key(id) NOT ENFORCED的含义
  8. 模板字面量(模板字符串)
  9. 输入四个球质量分两组 称重C语言,如何提高C语言代码质量?(四)
  10. 幸福企业!天九共享开辟全球最短工时