本文介绍如何在 Linux 操作系统上下载、安装 Elasticsearch 7.17.11,并进行必要的配置。在centos或者是unbuntu中配置启动的流程基本一致,开放端口处的脚本不相同。
首先,访问 Elasticsearch 下载页面 并下载 Elasticsearch 7.17.11
点击 “下载” 并将下载的文件上传到服务器指定目录中
在服务器上,使用以下命令解压 Elasticsearch:
tar -zxvf elasticsearch-7.17.11-linux-x86_64.tar.gz
创建一个名为 “es” 的用户和一个名为 “es” 的群组,然后将用户添加到该群组中:
# 新建群组es
groupadd es
# 新建用户es并指定群组为es
useradd -g es es
# 设置用户密码
passwd es
# usermod 将用户添加到某个组group
usermod -aG root es
为了防止 Elasticsearch 用户拥有的可创建文件描述符权限过低而导致错误,需要修改文件句柄数和线程数。编辑 /etc/security/limits.conf
文件并添加以下内容:
# 文件句柄
es soft nofile 65536
es hard nofile 65536
# 线程
es soft nproc 4096
es hard nproc 4096
保存退出后,需要重新启动系统
以上配置是为了解决:
报错问题:max file descriptors [4096] for elasticsearch process is too low, increase to at least [65535]
问题描述:elasticsearch用户拥有的可创建文件描述的权限太低,至少需要65536;
编辑 /etc/sysctl.conf
文件并添加以下内容:
vm.max_map_count=262144
保存退出后,刷新配置文件:
sysctl -p
验证是否修改成功:
sysctl vm.max_map_count
以上配置是为了解决:
报错问题:max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]
官方建议:把内存的一半给Lucene+不要超过32G+关闭swap
ES建议要关闭 swap 内存交换空间,禁用swapping。因为当内存交换到磁盘上,一个100微秒的操作可能变成 10毫秒,然后100 微秒的操作时延累加起来,可以看出 swapping 对于性能的影响是致命的
vim /etc/fstab
保存退出后需要系统重启!
编辑 Elasticsearch 配置文件 conf/elasticsearch.yml
并根据你的需求进行配置,以下是一些示例配置项:
# 禁用了 es 的机器学习功能(Machine Learning)减少资源消耗
xpack.ml.enabled: false
# 设置 Elasticsearch 集群的名称
cluster.name: es-single
# 设置当前 Elasticsearch 节点的名称
node.name: node
# 数据目录
path.data: /home/es/path/node/data
# 日志目录
path.logs: /home/es/path/node/logs
# 当前主机的 IP
network.host: 192.168.0.10
# 暴露的 HTTP 端口
http.port: 11700
# 暴露的 Transport 端口
transport.port: 11710
# 设置节点发现的种子主机列表
discovery.seed_hosts: ["192.168.0.10:11710"]
# 设置初始的主节点列表,新节点将联系这些主节点以加入集群
cluster.initial_master_nodes: ["node"]
设置 Elasticsearch 数据目录所属的用户和组:
chown -R es:es /mnt/data/elasticsearch-7.17.11
注意当前目录是在 ../elasticsearch-7.17.11
创建启动和停止 Elasticsearch 服务的脚本:
#!/bin/bash
cd "$(dirname "$0")"
# -d:后台(daemon)方式运行 Elasticsearch
./bin/elasticsearch -d -p pid
#!/bin/bash
cd "$(dirname "$0")"
if [ -f "pid" ]; then
pkill -F pid
fi
给这两个脚本赋予执行权限:
chmod 755 startes-single.sh stopes-single.sh
chown es:es startes-single.sh stopes-single.sh
然后,以 Elasticsearch 用户身份启动 Elasticsearch 服务:
su - es
cd /mnt/data/elasticsearch-7.17.11
./startes-single.sh
# 查看防火墙状态
systemctl status firewalld
# 查看开放的端口
firewall-cmd --query-port=9200/tcp
# 添加端口
firewall-cmd --zone=public --add-port=9200/tcp --permanent
# 重载防火墙
firewall-cmd --reload
# 再次查看端口是否已经开放
firewall-cmd --query-port=9200/tcp
# 查看防火墙状态
sudo ufw status
# 开放端口 9200
sudo ufw allow 9200/tcp
# 查看已添加的规则
sudo ufw status numbered
# 查看防火墙状态
sudo ufw status