【elasticsearch】linux环境搭建ES

作者 : admin 本文共5234个字,预计阅读时间需要14分钟 发布时间: 2024-06-17 共1人阅读

安装

下载与java版本匹配的elasticsearch版本elasticsearch下载链接

Elasticsearch 7.x 系列推荐使用 JDK 8 或 JDK 11,而更高版本的 Elasticsearch 可能会要求更新的 Java 版本

# 下载
/usr/local$ curl -O https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-8.12.2-linux-x86_64.tar.gz
# 解压
/usr/local$ tar zxvf elasticsearch-8.12.2-linux-x86_64.tar.gz

【elasticsearch】linux环境搭建ES插图

bin 可执行脚本目录
config 配置目录
jdk 内置 JDK 目录(ES是采用Java语言开发的)
lib 类库
logs 日志目录
modules 模块目录
plugins 插件目录

启动es

增加elasticSearch用户

必须创建一个非root用户来运行ElasticSearch(ElasticSearch5及以上版本,基于安全考虑,强制规定不能以root身份运行。)
如果你使用root用户来启动ElasticSearch,则会有如下错误信息:

[root]/usr/local# cd elasticsearch-7.12.0/
[root]/usr/local/elasticsearch-8.12.2# ./bin/elasticsearch
[2021-04-05T21:36:46,510][ERROR][o.e.b.ElasticsearchUncaughtExceptionHandler] [pdai-centos] uncaught exception in thread [main]
org.elasticsearch.bootstrap.StartupException: java.lang.RuntimeException: can not run elasticsearch as root
at org.elasticsearch.bootstrap.Elasticsearch.init(Elasticsearch.java:163) ~[elasticsearch-7.12.0.jar:7.12.0]
at org.elasticsearch.bootstrap.Elasticsearch.execute(Elasticsearch.java:150) ~[elasticsearch-7.12.0.jar:7.12.0]
at org.elasticsearch.cli.EnvironmentAwareCommand.execute(EnvironmentAwareCommand.java:75) ~[elasticsearch-7.12.0.jar:7.12.0]
at org.elasticsearch.cli.Command.mainWithoutErrorHandling(Command.java:116) ~[elasticsearch-cli-7.12.0.jar:7.12.0]
at org.elasticsearch.cli.Command.main(Command.java:79) ~[elasticsearch-cli-7.12.0.jar:7.12.0]
at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:115) ~[elasticsearch-7.12.0.jar:7.12.0]
at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:81) ~[elasticsearch-7.12.0.jar:7.12.0]
Caused by: java.lang.RuntimeException: can not run elasticsearch as root
at org.elasticsearch.bootstrap.Bootstrap.initializeNatives(Bootstrap.java:101) ~[elasticsearch-7.12.0.jar:7.12.0]
at org.elasticsearch.bootstrap.Bootstrap.setup(Bootstrap.java:168) ~[elasticsearch-7.12.0.jar:7.12.0]
at org.elasticsearch.bootstrap.Bootstrap.init(Bootstrap.java:397) ~[elasticsearch-7.12.0.jar:7.12.0]
at org.elasticsearch.bootstrap.Elasticsearch.init(Elasticsearch.java:159) ~[elasticsearch-7.12.0.jar:7.12.0]
... 6 more
uncaught exception in thread [main]
java.lang.RuntimeException: can not run elasticsearch as root
at org.elasticsearch.bootstrap.Bootstrap.initializeNatives(Bootstrap.java:101)
at org.elasticsearch.bootstrap.Bootstrap.setup(Bootstrap.java:168)
at org.elasticsearch.bootstrap.Bootstrap.init(Bootstrap.java:397)
at org.elasticsearch.bootstrap.Elasticsearch.init(Elasticsearch.java:159)
at org.elasticsearch.bootstrap.Elasticsearch.execute(Elasticsearch.java:150)
at org.elasticsearch.cli.EnvironmentAwareCommand.execute(EnvironmentAwareCommand.java:75)
at org.elasticsearch.cli.Command.mainWithoutErrorHandling(Command.java:116)
at org.elasticsearch.cli.Command.main(Command.java:79)
at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:115)
at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:81)
For complete error details, refer to the log at /opt/elasticsearch-7.12.0/logs/elasticsearch.log
2021-04-05 13:36:46,979269 UTC [8846] INFO  Main.cc@106 Parent process died - ML controller exiting

所以我们增加一个独立的elasticsearch用户来运行

# 增加elasticsearch用户
[root]/usr/local/elasticsearch-8.12.2# useradd elasticsearch
[root]/usr/local/elasticsearch-8.12.2# passwd elasticsearch
Changing password for user elasticsearch.
New password: 
BAD PASSWORD: The password contains the user name in some form
Retype new password: 
passwd: all authentication tokens updated successfully.
# 修改目录权限至新增的elasticsearch用户
[root]/usr/local/elasticsearch-8.12.2# chown -R elasticsearch /usr/local/elasticsearch-8.12.2
修改Linux系统的限制配置

错误1

ERROR: [1] bootstrap checks failed
[1]: max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]

这个错误提示表示虚拟内存区域的数量(vm.max_map_count)过低,需要将其增加到至少262144。你可以通过以下命令来修改:

sudo sysctl -w vm.max_map_count=262144
echo "vm.max_map_count=262144" | sudo tee -a /etc/sysctl.conf

错误2

ERROR: [2] bootstrap checks failed
[1]: max file descriptors [65535] for elasticsearch process is too low, increase to at least [65536]

修改系统中允许应用最多创建多少文件等的限制权限。Linux默认来说,一般限制应用最多创建的文件是65535个。但是ES至少需要65536的文件创建权限。
修改系统中允许用户启动的进程开启多少个线程。默认的Linux限制root用户开启的进程可以开启任意数量的线程,其他用户开启的进程可以开启1024个线程。必须修改限制数为4096+。因为ES至少需要4096的线程池预备。ES在5.x版本之后,强制要求在linux中不能使用root用户启动ES进程。所以必须使用其他用户启动ES进程才可以。
Linux低版本内核为线程分配的内存是128K。4.x版本的内核分配的内存更大。如果虚拟机的内存是1G,最多只能开启3000+个线程数。至少为虚拟机分配1.5G以上的内存。
修改如下配置

/usr/local/elasticsearch-8.12.2# vi /etc/security/limits.conf
elasticsearch soft nofile 65536
elasticsearch hard nofile 65536
elasticsearch soft nproc 4096
elasticsearch hard nproc 4096
防止es启动时内存飙升
#更新配置文件
vi /etc/profile

指定ES_HEAP_SIZE环境变量,服务进程在启动时候会读取这个变量,并相应的设置堆的大小。设置命令如下:

# 根据实际可用内存大小设置
export ES_HEAP_SIZE=3g
#重载配置文件
source /etc/profile
启动ES
[root]/usr/local/elasticsearch-8.12.2# su elasticsearch
[elasticsearch]/usr/local/elasticsearch-8.12.2# ./bin/elasticsearch
公网访问

1、修改es配置文件 config/elasticsearch.yml

/usr/local/elasticsearch-8.12.2# vi ./config/elasticsearch.yml
network.host: 0.0.0.0
http.port: 9200

2、开启安全组端口
【elasticsearch】linux环境搭建ES插图(1)
3、放行Linux系统上的防火墙(如iptables或firewalld)9200端口

# iptables 开放9200端口
sudo iptables -A INPUT -p tcp --dport 9200 -j ACCEPT
# firewall 开放9200端口
sudo firewall-cmd --zone=public --add-port=9200/tcp --permanent
sudo firewall-cmd --reload
ik分词器

下载与elasticsearch版本对应的IK包
IK分词器下载地址
https://github.com/infinilabs/analysis-ik/releases?page=1

/usr/local/elasticsearch-8.12.2/plugins# tar zxvf elasticsearch-analysis-ik-8.12.2.tar.gz

解压至plugins目录
重启ES
【elasticsearch】linux环境搭建ES插图(2)
IK插件加载成功

停止

# 查看es进程
netstat -ntlp | grep 9200

【elasticsearch】linux环境搭建ES插图(3)

kill 25126
本站无任何商业行为
个人在线分享 » 【elasticsearch】linux环境搭建ES
E-->