Linux中安装es
好的,这是一个非常详细的、分步的教程,指导您在 Linux 系统上部署 Elasticsearch 7.13.4。
部署前准备
-
系统要求:
◦ 内存:建议至少 4GB RAM,生产环境推荐 8GB 或更多。Elasticsearch 默认使用 1GB 堆内存,这对于学习测试足够,但生产需要调整。◦ 磁盘空间:根据您的数据量决定,建议至少 10GB 可用空间。
◦ 操作系统:大多数现代 Linux 发行版(如 Ubuntu, CentOS, Red Hat 等)均可。
-
软件依赖:
◦ Java JDK:Elasticsearch 7.13.4 需要 Java 11。请确保已安装并配置好正确的 Java 版本。OpenJDK 是官方推荐的选择。 -
下载安装包:
◦ 从官方镜像站或官网下载 elasticsearch-7.13.4-linux-x86_64.tar.gz。◦ 您可以使用 wget 命令直接下载到服务器:
wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.13.4-linux-x86_64.tar.gz◦ 下载后,验证 SHA 校验码以确保文件完整(可选但推荐):
shasum -a 512 elasticsearch-7.13.4-linux-x86_64.tar.gz
# 将输出与从官网下载页获得的 SHA512 码进行对比
详细部署步骤
步骤 1:安装 Java JDK 11
如果您的系统没有安装 Java 11,请先安装。
• 对于 Ubuntu/Debian:
sudo apt update
sudo apt install openjdk-11-jdk
• 对于 CentOS/RHEL:
sudo yum install java-11-openjdk-devel
• 验证安装:
java -version
输出应显示 openjdk version "11.0.x"。
步骤 2:创建专用用户
出于安全原因,Elasticsearch 不允许使用 root 用户运行。我们必须创建一个专用用户。
创建一个名为 elasticsearch 的用户组
sudo groupadd elasticsearch
创建一个名为 elasticsearch 的用户,并将其添加到该用户组,同时创建家目录
sudo useradd -m -g elasticsearch -s /bin/bash elasticsearch
为 elasticsearch 用户设置密码(可选,用于切换用户)
sudo passwd elasticsearch
步骤 3:解压安装包
假设您将安装包下载到了 /opt 目录,这是一个常见的软件安装位置。
切换到安装包所在目录
cd /opt
解压压缩包
sudo tar -xzf elasticsearch-7.13.4-linux-x86_64.tar.gz
将解压后的目录重命名为一个更简洁的名字(可选但推荐)
sudo mv elasticsearch-7.13.4 elasticsearch
将目录的所有权授予我们刚创建的 elasticsearch 用户
sudo chown -R elasticsearch:elasticsearch /opt/elasticsearch
步骤 4:修改系统配置(重要)
Elasticsearch 可能需要比默认限制更多的资源。
-
修改文件描述符和线程数限制:
编辑 /etc/security/limits.conf 文件,在文件末尾添加:
elasticsearch - nofile 65535
elasticsearch - memlock unlimited- soft nproc 4096
- hard nproc 4096
◦ nofile 65535:允许 Elasticsearch 同时打开大量文件(索引由文件组成)。
◦ memlock unlimited:允许锁定内存,防止交换(SWAP)影响性能。
-
修改虚拟内存映射限制:
Elasticsearch 使用 mmap 来高效存储索引。编辑 /etc/sysctl.conf 文件,添加:
vm.max_map_count=262144然后应用更改:
sudo sysctl -p
步骤 5:配置 Elasticsearch
主要配置文件是 /opt/elasticsearch/config/elasticsearch.yml。使用 nano 或 vim 进行编辑。
sudo -u elasticsearch nano /opt/elasticsearch/config/elasticsearch.yml
找到并修改以下关键配置(取消注释并修改值):
---------------------------------- Cluster -----------------------------------
集群名称,默认是 elasticsearch。同一集群内的节点应使用相同的名称。
cluster.name: my-es-cluster
------------------------------------ Node ------------------------------------
节点名称,默认是随机生成的UUID。建议赋予一个有意义的名称。
node.name: node-1
该节点是否有资格成为主节点(Master-eligible node)
node.master: true
该节点是否存储数据(Data node)
node.data: true
----------------------------------- Paths ------------------------------------
数据目录路径。可以配置多个路径(用逗号分隔)。
path.data: /opt/elasticsearch/data
日志目录路径。
path.logs: /opt/elasticsearch/logs
----------------------------------- Memory -----------------------------------
启动时锁定内存,与之前在 limits.conf 中的配置对应。
bootstrap.memory_lock: true
---------------------------------- Network -----------------------------------
设置绑定的主机地址。0.0.0.0
表示绑定所有网络接口,允许外部访问。
警告:生产环境请结合防火墙设置,不要随意开放为 0.0.0.0。
network.host: 0.0.0.0
设置HTTP访问端口,默认是 9200。
http.port: 9200
--------------------------------- Discovery ----------------------------------
设置初始主节点的地址列表,用于节点发现和组建集群。
对于单节点部署,填写本机节点名称。
discovery.seed_hosts: [“localhost”]
cluster.initial_master_nodes: [“node-1”]
保存并退出编辑器。
步骤 6:启动 Elasticsearch
切换到 elasticsearch 用户,并启动服务。
切换到 elasticsearch 用户
sudo -u elasticsearch -s
如果提示符变了,说明切换成功。然后进入 Elasticsearch 的 bin 目录
cd /opt/elasticsearch/bin/
在后端启动 Elasticsearch (使用 -d 参数)
./elasticsearch -d
• -d 参数表示以守护进程(daemon)模式运行。
步骤 7:验证安装
等待十几秒后,通过 HTTP API 检查 Elasticsearch 是否运行正常。
curl -X GET “localhost:9200/”
或者,如果您的服务器有图形界面浏览器,也可以从另一台机器访问 http://<您的服务器IP>:9200/。
您应该会收到一个类似以下的 JSON 响应:
{
“name” : “node-1”,
“cluster_name” : “my-es-cluster”,
“cluster_uuid” : “abcd1234…”,
“version” : {
“number” : “7.13.4”,
“build_flavor” : “default”,
“build_type” : “tar”,
“build_hash” : “…”,
“build_date” : “2021-07-14T…”,
“build_snapshot” : false,
“lucene_version” : “8.8.2”,
“minimum_wire_compatibility_version” : “6.8.0”,
“minimum_index_compatibility_version” : “6.0.0-beta1”
},
“tagline” : “You Know, for Search”
}
步骤 8(可选):配置为系统服务
手动启动不方便管理,最好配置为 systemd 服务。
-
创建服务文件:
sudo nano /etc/systemd/system/elasticsearch.service -
将以下内容写入文件:
[Unit]
Description=Elasticsearch
Documentation=https://www.elastic.co
After=network.target[Service]
Type=simple
User=elasticsearch
Group=elasticsearch
Environment=“ES_JAVA_OPTS=-Xms1g -Xmx1g”
Environment=“ES_PATH_CONF=/opt/elasticsearch/config”
ExecStart=/opt/elasticsearch/bin/elasticsearch
Restart=always
LimitNOFILE=65535
LimitMEMLOCK=infinity[Install]
WantedBy=multi-user.target◦ User 和 Group:指定运行服务的用户和组。
◦ ES_JAVA_OPTS:设置 JVM 堆内存大小。-Xms1g -Xmx1g 表示初始和最大堆内存均为 1GB。生产环境请根据服务器内存调整(通常不超过物理内存的50%)。
◦ ES_PATH_CONF:指定配置目录路径。
-
重新加载 systemd 并启动服务:
sudo systemctl daemon-reload
sudo systemctl enable elasticsearch # 设置开机自启
sudo systemctl start elasticsearch # 启动服务
sudo systemctl status elasticsearch # 查看服务状态
现在,您可以使用 systemctl 命令来管理 Elasticsearch 了(start, stop, restart, status)。
故障排除
• 无法绑定到 9200 端口:检查是否有其他进程占用了该端口 (netstat -tulpn | grep :9200)。
• 内存锁定失败:确保已正确配置 /etc/security/limits.conf 并且用户是 elasticsearch。查看日志 /opt/elasticsearch/logs/my-es-cluster.log 获取详细信息。
• 无法用外网 IP 访问:
1. 确认 network.host 设置为 0.0.0.0。
2. 检查服务器防火墙(如 ufw 或 firewalld)是否放行了 9200 端口。▪ UFW (Ubuntu):sudo ufw allow 9200/tcp▪ Firewalld (CentOS):sudo firewall-cmd --add-port=9200/tcp --permanent && sudo firewall-cmd --reload
• 查看日志:日志文件是解决问题的第一选择,路径在 /opt/elasticsearch/logs/。
恭喜您!现在您已经成功在 Linux 上部署并运行了 Elasticsearch 7.13.4。接下来您可以开始安装 Kibana 作为可视化界面,或者开始学习如何插入和查询数据。