全网最详细elasticsearch7.10.2安装手册

本文涉及的产品
检索分析服务 Elasticsearch 版,2核4GB开发者规格 1个月
简介: 全网最详细elasticsearch7.10.2安装手册

前言


网上关于elasticsearch的安全教程很多,但是只是局限在最基础的启动就成功就完了。今天给大家分享elasticsearch7.10.2最全安装手册,记录自己踩过的一些坑。


一、环境说明


服务器环境:CentOS 7.9

JDK环境:JDK1.8

ES版本:Elasticsearch7.10.2


说明:

大家如果是搭建ELK平台,一定要保证Elasticsearch、filebeat、kibana这些elastic体系中间件版本的一致性,不然安装过程可能会出现各种版本依赖问题。


推荐下载地址:

Elastic下载中心:https://elasticsearch.cn/download/


这里我直接下载的最新版本7.10.2。


官方文档:

https://www.elastic.co/guide/en/elasticsearch/reference/7.x/targz.html


选择对应的版本和安装的环境:

37.png

36.png


最简步骤:

1、下载、解压elasticsearch

2、执行./bin/elasticsearch

3、执行请求curl http://localhost:9200


PS:

一般直接启动都会报错,启动失败。


二、安装步骤


1.下载、上传、解压

#由于我是重新安装,所以新建test目录,用于测试安装
mkdir /usr/local/test
cd /usr/local/test
cp /usr/local/src/elasticsearch-7.10.2-linux-x86_64.tar.gz  /usr/local/test/
#如果没有执行权限,先执行赋权
#chmod a+x elasticsearch-7.10.2-linux-x86_64.tar.gz
tar -xzf elasticsearch-7.10.2-linux-x86_64.tar.gz
cd elasticsearch-7.10.2/
cd bin
./elasticsearch


如果解压后直接启动,一般会出现一下问题:

问题一:future versions of Elasticsearch will require Java 11;

35.png

当前ES版本的特性需要java11才能支持。


问题二:java.lang.RuntimeException: can not run elasticsearch as root

34.png

ES进程不能在root用户下启动


2、Elasticsearch配置修改

Elasticsearch 主要有三个配置文件:


elasticsearch.yml Elasticsearch配置文件

jvm.options JVM配置文件

log4j2.properties 日志配置文件


2.1 采用内置JDK

首先根据下面的网址,查看需要安装的ES的JDK版本依赖。

https://www.elastic.co/cn/support/matrix#matrix_jvm


33.png


在执行./bin/elasticsearch启动命令的时候,也会主动提示我们需要什么版本的jdk才能支持当前ES版本的所有特性。


另外,ES安装包内部也包含了jdk。

有时候我们本机已经安装了jdk1.8,不希望升级太新的jdk版本,就可以直接使用ES内置的jdk。


进入es的bin目录:


vi elasticsearch-env


添加如下内容:

#使用ES内置的jdk,注意制定出自己的es安装目录
export JAVA_HOME=/usr/local/test/elasticsearch-7.10.2/jdk/
export PATH=$JAVA_HOME/bin:$PATH
#添加jdk判断
if [ -x "$JAVA_HOME/bin/java" ]; then
    JAVA="/usr/local/test/elasticsearch-7.10.2/jdk/bin/java"
else
    JAVA=`which java`
fi

具体位置参考:

32.png


2.2 新建用户esuser

由于es不能使用root用户启动,我们新增esuser用户。

创建esuser用户组及esuser用户:

groupadd esuser
useradd esuser -g esuser

更改elasticsearch文件夹及内部文件的所属用户及组为esuser:esuser

chown -R esuser:esuser ./elasticsearch-7.10.2


2.3 启动

#切换成esuser用户

su esuser
#启动,
cd bin
./elasticsearch
#后台启动,只需要添加-d参数
#./elasticsearch -d


2.4 测试

执行请求 curl localhost:9200

curl localhost:9200
{
  "name" : "Mobile",
  "cluster_name" : "elasticsearch",
  "cluster_uuid" : "M5EGtEmzRQG5ri3Yy_Wpxg",
  "version" : {
    "number" : "7.10.2",
    "build_flavor" : "default",
    "build_type" : "tar",
    "build_hash" : "747e1cc71def077253878a59143c1f785afa92b9",
    "build_date" : "2021-01-13T00:42:12.435326Z",
    "build_snapshot" : false,
    "lucene_version" : "8.7.0",
    "minimum_wire_compatibility_version" : "6.8.0",
    "minimum_index_compatibility_version" : "6.0.0-beta1"
  },
  "tagline" : "You Know, for Search"
}

2.5 停用

通过命令查看进程号:

ps -ef|grep elasticsearch
kill -9  pid


2.6 修改elasticsearch.yml

vim elasticsearch.yml

#使用一个名称描述你的集群,这里我们设置为mobile
cluster.name: mobile
# 本节点名词
node.name: node-1
# 服务ip,0表示所有本地ip,放开为允许所有网段访问es
network.host: 0.0.0.0
# 服务端口号
http.port: 9200 
# es节点列表,集群时配置多个,数组
discovery.seed_hosts: ["127.0.0.1"]
# es启动时,参数选主的node列表,集群时配置多个
cluster.initial_master_nodes: ["node-1"]
#配置数据存储目录,必需保证目录存在,目录挂载的磁盘存储空间足够,且启动es进程的用户esuser具有目录的读写权限
path.data: /home/es/data
#配置日志存储目录
path.logs: /home/es/logs


2.7 修改JVM参数

一般主要是调整堆内存的大小,默认堆内存只有1g。

cd config
vi   jvm.options
-Xms4g
-Xmx4g


说明:

Xmx 和 Xms不能超过物理内存的50% ;

Xmx 和 Xms不能超过32g;


官方建议:把内存的一半给Lucene+不要超过32G+关闭swap


jvm.options中的默认配置就已经对GC机制进行了优化。JDK8~13使用CMS垃圾回收器,JDK14-使用G1垃圾回收器。

31.png


2.8 其他参数配置

Elasticsearch只需要修改少量的配置就能启动,但是如果是上生产环境,还需要考虑如下配置:

重要的Elasticsearch配置:链接

30.png


3、服务器参数优化

生产环境一定要注意下面这些系统配置

重要的系统配置:链接

29.png

下面摘取一些核心配置做下说明:


4.1关闭swapping

临时禁用:


swapoff -a


永久禁用swap:

用vi修改/etc/fstab文件,在swap分区这行前加 # 禁用掉,保存退出后重启。

28.png

说明:

ES建议要关闭 swap 内存交换空间,禁用swapping。频繁的swapping 对服务器来说是致命的。

当内存交换到磁盘上,一个100微秒的操作可能变成 10毫秒,然后10 微秒的操作时延累加起来,可以看出 swapping 对于性能的影响是多么致命。


4.2配置ulimit

临时配置:

#临时设置打开的最大文件数
ulimit -n 262144
#临时设置打开的最大进程数
ulimit -u 262144

永久配置:

修改/etc/security/limits.conf文件

在文件末尾添加

* soft nofile 262144  
* hard nofile 262144  
* soft nproc 262144  
* hard nproc 262144


说明:

nofile打开的文件句柄数量

nproc打开的进程数量


4.3配置vm.max_map_count

切换到root用户修改配置sysctl.conf

vi /etc/sysctl.conf

添加下面配置(如果没修改过会是一个空文件,直接添加就行):

vm.max_map_count=655360

并执行命令:

sysctl -p


三、问题记录


问题一:

max file descriptors [4096] for elasticsearch process is too low, increase to at least [65535]


原因:文件描述符的值太小

解决:

切换到root用户

临时配置:

#临时设置打开的最大文件数
ulimit -n 262144
#临时设置打开的最大进程数
ulimit -u 262144


持久配置:

编辑limits.conf添加类似如下内容


修改/etc/security/limits.conf文件,增加配置,用户退出后重新登录生效。也可以在shell上断开重连,检查修改是否生效。

*               soft    nofile          262144
*               hard    nofile          262144


问题二:

max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]


解决:

切换到root用户修改配置sysctl.conf

vi /etc/sysctl.conf

添加下面配置(如果没修改过会是一个空文件,直接添加就行):

vm.max_map_count=655360

并执行命令:

sysctl -p


问题三:

the default discovery settings are unsuitable for production use; at least one of [discovery.seed_hosts, discovery.seed_providers, cluster.initial_master_nodes] must be configured


原因:至少要配置discovery.seed_hosts, discovery.seed_providers, cluster.initial_master_nodes属性中的一个。

解决:

# es节点列表,集群时配置多个,数组
discovery.seed_hosts: ["127.0.0.1"]
# es启动时,参数选主的node列表,集群时配置多个
cluster.initial_master_nodes: ["node-1"]

问题四:

Transport SSL must be enabled if security is enabled on a [basic] license. Please set [xpack.security.transport.ssl.enabled] to [true] or disable security by setting [xpack.security.enabled] to [false]

原因:

如果开启了xpack安全认证配置,transport.ssl认证也需要开启。


解决:

添加xpack安排配置。具体操作后面会讲到怎么开启xpack安全配置。


在elasticsearch.yml配置文件中,添加如下配置

xpack.security.enabled: true
xpack.security.transport.ssl.enabled: true
xpack.security.transport.ssl.verification_mode: certificate
xpack.security.transport.ssl.keystore.path: certs/elastic-certificates.p12
xpack.security.transport.ssl.truststore.path: certs/elastic-certificates.p12

总结


elasticsearch整个安装过程其实相对简单,主要需要注意的有如下几点:

1、安装elastic体系中间件需要注意版本的一致性问题。

2、采用elasticsearch内置的jdk可以避免修改jdk的环境变量,又可以兼容elasticsearch的jdk版本依赖

3、生产环境一定要注意服务器相关参数的优化,关闭swapping,增大ulimit和max_map_count

4、查看官方文档时注意版本的匹配。

相关实践学习
使用阿里云Elasticsearch体验信息检索加速
通过创建登录阿里云Elasticsearch集群,使用DataWorks将MySQL数据同步至Elasticsearch,体验多条件检索效果,简单展示数据同步和信息检索加速的过程和操作。
ElasticSearch 入门精讲
ElasticSearch是一个开源的、基于Lucene的、分布式、高扩展、高实时的搜索与数据分析引擎。根据DB-Engines的排名显示,Elasticsearch是最受欢迎的企业搜索引擎,其次是Apache Solr(也是基于Lucene)。 ElasticSearch的实现原理主要分为以下几个步骤: 用户将数据提交到Elastic Search 数据库中 通过分词控制器去将对应的语句分词,将其权重和分词结果一并存入数据 当用户搜索数据时候,再根据权重将结果排名、打分 将返回结果呈现给用户 Elasticsearch可以用于搜索各种文档。它提供可扩展的搜索,具有接近实时的搜索,并支持多租户。
目录
相关文章
|
存储 机器学习/深度学习 Prometheus
基于 Elasticsearch 实现预测系统— Elastic Stack 实战手册
当代商业组织面临的最基本挑战,是互联网已经不再是一个替代或可选渠道,它已经成为许多企业最主要的、甚至是惟一的销售平台。网上店面在现实中往往比实体店面还要重要,所以人们就必须要像监视实体店面一样,监控网上应用。
1418 0
基于 Elasticsearch 实现预测系统— Elastic Stack 实战手册
|
Java Linux Docker
安装 Elasticsearch (本地及 Docker)-Elastic Stack 实战手册
本章介绍 Elasticsearch (简称 ES )的安装和部署
2498 1
安装 Elasticsearch (本地及 Docker)-Elastic Stack 实战手册
|
运维 监控 数据可视化
年度盘点 | “三年磨一剑” 阿里云Elasticsearch干货手册
本文为大家梳理阿里云Elasticsearch自发布以来,近三年时间里关于阿里云Elasticsearch相关的产品解读、技术干货及最佳实践,让您从阿里云Elasticsearch发展的“时间线”上,能够更直观、全面的了解阿里云 Elasticsearch。
6845 2
年度盘点 | “三年磨一剑” 阿里云Elasticsearch干货手册
|
存储 数据可视化 安全
从 Elasticsearch 到 Elastic Stack—Elastic Stack 实战手册
从早期开发的 Elasticsearch 到之后 ELK Stack 的发布,Elastic 在此期间经历了辉煌发展,也有混乱的时期,随后又推出了 Elastic Stack,并迎来了新的时代。
862 0
从 Elasticsearch 到 Elastic Stack—Elastic Stack 实战手册
|
存储 缓存 JSON
Elasticsearch 开发人员最佳实践指南—Elastic Stack 实战手册
几个月以来,我一直在记录自己开发 Elasticsearch 应用程序的最佳实践。本文梳理的内容试图传达 Java 的某些思想,我相信其同样适用于其他编程语言。我尝试尽量避免重复教程和 Elasticsearch 官方文档中已经介绍的内容。
2304 0
Elasticsearch 开发人员最佳实践指南—Elastic Stack 实战手册
|
存储 机器学习/深度学习 缓存
Elasticsearch 生产环境集群部署最佳实践—Elastic Stack 实战手册
在生产环境搭建或维护 Elasticsearch 集群和个人搭建集群的小打小闹有非常大的不同。
2755 0
Elasticsearch 生产环境集群部署最佳实践—Elastic Stack 实战手册
|
存储 Ubuntu 测试技术
Elasticsearch 和 Python构建面部识别系统—Elastic Stack 实战手册
你是否曾经尝试在图像中搜索目标? Elasticsearch 可以帮助你存储,分析和搜索图像或视频中的目标。
747 0
Elasticsearch 和 Python构建面部识别系统—Elastic Stack 实战手册
|
消息中间件 缓存 分布式计算
CDN 流媒体服务实时分析 Elasticsearch 实践—Elastic Stack 实战手册
发挥 Elastic Stack 在日志和实时数据分析计算领域的一些优势,对流媒体服务这样规模较大、实时性要求偏高,且分析、业务探索流程要求灵活的业务是一个比较百搭的选择。
588 0
CDN 流媒体服务实时分析 Elasticsearch 实践—Elastic Stack 实战手册
|
运维 自然语言处理 新能源
阿里云 Elasticsearch 服务-Elastic Stack 实战手册
本文将基于阿里云 Elasticsearch,通过快速创建、访问实例,并使用 Restful API,完成创建索引、创建文档、插入数据、搜索数据、删除索引等操作,从而体验 Cloud 云服务。
447 0
阿里云 Elasticsearch 服务-Elastic Stack 实战手册