Linux 环境下 ElasticSearch8.0 版本安装指南
在当今大数据和云计算盛行的时代,高效的数据搜索和分析工具对于互联网软件开发人员来说至关重要。ElasticSearch 作为一款分布式、RESTful 风格的搜索和数据分析引擎,凭借其强大的功能,深受广大开发者的喜爱。本文将详细介绍在 Linux 系统中安装 ElasticSearch8.0 版本的全过程,帮助各位开发者顺利搭建起自己的搜索服务环境。
安装前的准备
(一)系统要求
在安装 ElasticSearch8.0 之前,需要确保我们的 Linux 系统满足一定的条件。首先,ElasticSearch 基于 Java 构建,虽然其安装包中自带了 OpenJDK 版本,但如果我们希望使用自己指定的 Java 环境,建议使用支持矩阵中列出的 Java LTS 版本的最新发布版本。其次,为了保证 ElasticSearch 的正常运行,我们需要对系统的一些参数进行调整。
虚拟内存设置:ElasticSearch 对虚拟内存有一定要求。通过以下命令,我们可以设置系统的虚拟内存参数vm.max_map_count为 262144,这是一个推荐值,有助于提升 ElasticSearch 的性能:
echo "vm.max_map_count=262144" >> /etc/sysctl.conf
sysctl -p
文件打开数设置:ElasticSearch 在运行过程中可能会打开大量文件,因此需要调整系统允许的最大文件打开数。我们可以通过修改/etc/security/limits.conf文件来实现:
cat >>/etc/security/limits.conf<<EOF
* soft nofile 65536
* hard nofile 65536
EOF
同时,还需要在/etc/pam.d/login文件中添加一行,确保设置生效:
echo "session required pam_limits.so" >> /etc/pam.d/login
禁用 swap 交换分区:swap 交换分区在一定程度上会影响 ElasticSearch 的性能,尤其是在内存紧张的情况下。为了获得更好的性能,建议禁用 swap 分区。可以通过以下命令临时禁用:
swapoff -a
如果希望永久禁用,则需要编辑/etc/fstab文件,找到 swap 相关的行,在前面加上#注释掉:
vi /etc/fstab
# 找到类似如下的行,添加#注释
# /dev/mapper/centos-swap swap swap defaults 0 0
设置 TCP 重传超时:适当调整 TCP 重传超时时间,有助于优化网络通信。通过以下命令可以设置net.ipv4.tcp_retries2为 5:
sysctl -w net.ipv4.tcp_retries2=5
echo "net.ipv4.tcp_retries2=5" >> /etc/sysctl.conf
(二)下载安装包
ElasticSearch 的官方网站提供了各个版本的安装包下载,我们可以通过wget命令直接从官网下载 ElasticSearch8.0 版本的安装包及校验文件:
wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-8.0.0-linux-x86_64.tar.gz
wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-8.0.0-linux-x86_64.tar.gz.sha512
下载完成后,为了确保安装包的完整性和正确性,我们需要对其进行校验。通过shasum命令进行校验:
shasum -a 512 -c elasticsearch-8.0.0-linux-x86_64.tar.gz.sha512
如果校验通过,会输出elasticsearch-{version}-linux-x86_64.tar.gz: OK。
安装过程
(一)解压安装包
在下载并校验完安装包后,接下来就是解压安装包。使用tar命令将下载的安装包解压到指定目录,这里我们解压到当前目录:
tar -xzf elasticsearch-8.0.0-linux-x86_64.tar.gz
cd elasticsearch-8.0.0/
解压完成后,我们进入到解压后的目录,此时该目录即为$ES_HOME,其中bin目录包含启动节点的elasticsearch脚本和安装插件的elasticsearch - plugin脚本;config目录包含elasticsearch.yml等重要的配置文件。
(二)用户权限设置
ElasticSearch 出于安全考虑,不允许使用root用户直接启动。因此,我们需要创建一个新的用户和用户组来运行 ElasticSearch。
创建用户组和用户:使用useradd命令创建一个名为es的用户组,并在该用户组下创建一个名为es的用户,同时设置用户密码(这里假设密码为yourpassword):
groupadd es
useradd es -g es -p yourpassword
赋予用户权限:回到 ElasticSearch 的安装目录上层,将整个 ElasticSearch 目录的所有权赋予新创建的es用户:
cd..
chown -R es:es elasticsearch-8.0.0
这样,es用户就拥有了对 ElasticSearch 目录的操作权限。
(三)配置文件调整
JVM 堆内存配置:ElasticSearch 默认的堆内存大小可能并不适合我们的服务器配置。例如,如果我们的服务器内存总共只有 4G,而 ElasticSearch 默认的堆内存大小是 4G,这显然会导致服务器内存紧张,甚至可能无法正常启动 ElasticSearch。我们可以通过修改config/jvm.options.d/目录下的配置文件来调整 JVM 堆内存。进入该目录,创建一个heap.options文件(如果不存在的话),并在其中写入如下配置(这里将堆内存设置为 1G,可根据实际情况调整):
-Xms1g
-Xmx1g
网络配置:默认情况下,ElasticSearch 只允许本地访问。如果我们希望通过其他机器也能访问该 ElasticSearch 服务,需要修改config/elasticsearch.yml文件中的网络配置。找到network.host这一行,将其值修改为0.0.0.0,表示允许所有网络访问:
network.host: 0.0.0.0
此外,如果我们要搭建集群,还需要配置discovery.seed_hosts等相关参数,这里我们先以单机安装为例,暂不涉及集群配置。
启动 ElasticSearch
在完成上述配置后,我们就可以启动 ElasticSearch 了。由于我们之前创建了es用户来运行 ElasticSearch,因此需要先切换到es用户:
su es
cd elasticsearch-8.0.0
./bin/elasticsearch -d
这里使用-d参数表示以守护进程的方式启动,这样我们退出当前终端后,ElasticSearch 进程依然会在后台运行。如果启动成功,我们可以通过日志来查看相关信息。首次启动 ElasticSearch 时,默认情况下会启用并配置安全功能,会为弹性内置超级用户生成密码,还会为传输层和 HTTP 层生成 TLS 的证书和密钥等,这些信息都会在启动日志中输出,我们需要特别注意记录下超级用户的密码,后续登录时会用到。
验证安装结果
(一)使用curl命令测试
ElasticSearch 启动后,我们可以使用curl命令来测试是否安装成功。默认情况下,ElasticSearch 监听在 9200 端口,我们可以通过以下命令进行测试:
curl http://localhost:9200
如果安装成功且服务正常运行,会返回类似如下的 JSON 数据:
{
"name" : "your - node - name",
"cluster_name" : "elasticsearch",
"cluster_uuid" : "your - cluster - uuid",
"version" : {
"number" : "8.0.0",
"build_flavor" : "default",
"build_type" : "tar",
"build_hash" : "your - build - hash",
"build_date" : "your - build - date",
"build_snapshot" : false,
"lucene_version" : "9.0.0",
"minimum_wire_compatibility_version" : "7.17.0",
"minimum_index_compatibility_version" : "7.0.0"
},
"tagline" : "You Know, for Search"
}
(二)通过浏览器访问
如果我们在elasticsearch.yml文件中配置了network.host: 0.0.0.0,并且服务器的防火墙或云服务器安全组开放了 9200 端口,我们还可以通过浏览器访问http://your - server - ip:9200来验证安装结果,同样会看到类似上述的 JSON 数据展示在浏览器中。
常见问题及解决方法
(一)内存不足问题
在启动 ElasticSearch 时,如果出现闪退且没有明显的报错信息,只有ERROR:Elasticsearch exited unexpectedly,很可能是内存不足导致的。此时,我们需要进一步检查系统内存使用情况,并适当调整 JVM 堆内存大小,如前文所述修改
config/jvm.options.d/heap.options文件。
(二)root用户启动问题
如果使用root用户启动 ElasticSearch,会报fatal exception while booting
Elasticsearchjava.lang.RuntimeException: can not run elasticsearch as root错误。解决方法就是按照前文所述,创建新的用户和用户组,并赋予相应权限,使用新用户来启动 ElasticSearch。
(三)端口被占用问题
如果启动 ElasticSearch 时提示端口被占用,我们需要检查是哪个进程占用了 9200 端口(ElasticSearch 默认端口)。可以使用lsof -i:9200命令查看占用该端口的进程,然后根据情况决定是否关闭该进程,或者修改 ElasticSearch 的监听端口。修改监听端口同样在elasticsearch.yml文件中进行,找到http.port这一行,修改其值为其他未被占用的端口即可。
总结
通过以上详细的步骤,我们就完成了在 Linux 系统中安装 ElasticSearch8.0 版本的过程。希望这篇文章能帮助各位互联网软件开发人员顺利搭建起自己的 ElasticSearch 服务,为后续的数据搜索和分析工作打下坚实的基础。在实际使用过程中,如果遇到其他问题,欢迎大家查阅官方文档或者在技术论坛上交流讨论,共同进步。