Ubuntu部署Elasticsearch教程
Ubuntu 22.04 部署 Elasticsearch 8.15.2 教程
一、引言
Elasticsearch 是一款开源的分布式搜索和分析引擎,广泛应用于日志分析、全文检索、监控告警等场景。本文基于 Ubuntu 22.04 系统,详细介绍 Elasticsearch 8.15.2 的部署过程,包含环境准备、安装配置、安全设置及常见问题解决,全程提供可直接执行的脚本命令。
二、环境准备
2.1 系统要求
- 操作系统:Ubuntu 22.04 LTS
- Java 环境:OpenJDK 11 及以上
- 内存:至少 2GB(生产环境建议 4GB+)
2.2 依赖安装
# 更新系统包
sudo apt update && sudo apt upgrade -y# 安装依赖(Java、HTTPS支持等)
sudo apt install -y openjdk-11-jdk apt-transport-https wget
2.3 验证Java环境
java -version
# 输出应包含 "openjdk version 11.0.x"
三、安装 Elasticsearch
3.1 添加 Elastic 仓库
3.1.1 导入 GPG 密钥
wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo gpg --dearmor -o /usr/share/keyrings/elasticsearch-keyring.gpg
3.1.2 配置仓库源
echo "deb [signed-by=/usr/share/keyrings/elasticsearch-keyring.gpg] https://artifacts.elastic.co/packages/8.x/apt stable main" | sudo tee /etc/apt/sources.list.d/elastic-8.x.list
3.2 安装 Elasticsearch
# 更新仓库并安装
sudo apt update && sudo apt install -y elasticsearch=8.15.2
四、系统优化(必做)
4.1 调整文件句柄限制
# 为 elasticsearch 用户设置文件句柄和进程数限制
sudo tee -a /etc/security/limits.conf <<EOF
elasticsearch - nofile 65535
elasticsearch - nproc 4096
elasticsearch - memlock unlimited
EOF
4.2 配置虚拟内存
# 设置虚拟内存映射数(永久生效)
sudo tee -a /etc/sysctl.conf <<EOF
vm.max_map_count=262144
EOF# 立即生效
sudo sysctl -p
五、配置 Elasticsearch
5.1 修改主配置文件
sudo vim /etc/elasticsearch/elasticsearch.yml
关键配置(按需修改):
# 集群名称(自定义)
cluster.name: my-es-cluster# 节点名称(自定义)
node.name: node-1# 允许远程访问(生产环境建议指定具体IP)
network.host: 0.0.0.0# HTTP端口(默认9200)
http.port: 9200# 单节点模式(测试环境用)
discovery.type: single-node# 数据和日志路径(默认已配置)
path.data: /var/lib/elasticsearch
path.logs: /var/log/elasticsearch
5.2 调整 JVM 内存
sudo vim /etc/elasticsearch/jvm.options
修改以下参数(根据服务器内存调整,建议为物理内存的50%):
-Xms1g # 初始堆内存(如2GB内存设为1g)
-Xmx1g # 最大堆内存(与初始值保持一致)
六、启动与验证
6.1 启动服务并设置开机自启
# 重载systemd配置
sudo systemctl daemon-reload# 启动服务
sudo systemctl start elasticsearch# 设置开机自启
sudo systemctl enable elasticsearch
6.2 验证服务状态
# 检查服务状态
sudo systemctl status elasticsearch# 测试API连接(需输入elastic用户密码)
curl -u elastic:your_password https://localhost:9200
七、安全配置(8.x 必做)
7.1 设置超级用户密码
Elasticsearch 8.x 默认启用安全功能,首次启动后需设置 elastic
用户密码:
sudo /usr/share/elasticsearch/bin/elasticsearch-reset-password -u elastic
# 按提示输入新密码(建议包含大小写、数字和特殊字符)
7.2 禁用HTTPS(仅测试环境)
生产环境请勿禁用!
sudo vim /etc/elasticsearch/elasticsearch.yml
添加:
xpack.security.enabled: false
xpack.security.http.ssl.enabled: false
重启服务:sudo systemctl restart elasticsearch
八、常见问题解决
8.1 启动失败:内存不足
解决:调整 jvm.options
中的 -Xms
和 -Xmx
,设为系统内存的50%(最大不超过31GB)。
8.2 权限错误:无法写入数据目录
解决:检查目录权限:
sudo chown -R elasticsearch:elasticsearch /var/lib/elasticsearch
sudo chmod -R 750 /var/lib/elasticsearch
8.3 虚拟内存不足:max_map_count
解决:执行 sudo sysctl -w vm.max_map_count=262144
,并确保 /etc/sysctl.conf
中已添加配置。
九、总结
通过以上步骤,您已在Ubuntu 22.04上成功部署Elasticsearch 8.15.2。后续可安装Kibana进行可视化(版本需与ES一致),或通过API导入数据测试搜索功能。生产环境中建议配置集群模式,并启用备份策略。
参考文档:Elasticsearch官方文档