服务器测评网
我们一直在努力

虚拟机搭建es

在现代化技术栈中,Elasticsearch(以下简称ES)作为一款开源的分布式搜索引擎,凭借其强大的全文检索、数据分析能力,被广泛应用于日志分析、实时监控、搜索平台等场景,对于开发者和技术爱好者而言,通过虚拟机搭建ES环境是学习实践的重要环节,本文将详细介绍在虚拟机中搭建ES的完整流程,涵盖环境准备、安装配置、启动验证及常见问题处理,帮助读者快速构建可用的ES测试环境。

虚拟机搭建es

环境准备:虚拟机与基础配置

搭建ES的第一步是准备合适的虚拟机环境,ES对系统资源有一定要求,尤其在内存和磁盘方面,合理的配置能确保服务稳定运行。

虚拟机与操作系统选择

推荐使用VMware Workstation、VirtualBox等虚拟化软件,创建一台Linux虚拟机,操作系统建议选择CentOS 7/8或Ubuntu 18.04/20.04等主流发行版,本文以CentOS 7为例(64位系统,最小化安装即可),虚拟机硬件配置建议:

  • CPU:至少2核(ES集群中每个节点建议2核以上,单节点测试1核可勉强运行,但性能受限);
  • 内存:至少4GB(ES重度依赖内存,官方建议至少50%内存分配给ES,单节点测试推荐4GB以上,8GB更佳);
  • 磁盘:至少20GB(建议使用SSD磁盘,ES的磁盘I/O性能直接影响查询效率,分区格式选择XFS或ext4)。

网络与基础工具配置

虚拟机网络模式建议选择“桥接模式”(与宿主机同一网段)或“NAT模式(端口映射)”,确保后续可通过宿主机访问ES服务,安装完成后,更新系统并安装必要工具:

# CentOS系统更新
sudo yum update -y
# 安装wget、vim、curl等工具
sudo yum install -y wget vim curl net-tools

JDK安装:ES运行的基础依赖

ES是基于Java开发的,需要提前安装JDK(Java Development Kit),ES 7.x及以上版本默认集成OpenJDK,但手动安装可更好地控制版本兼容性。

JDK版本选择

ES 7.17.x版本推荐使用OpenJDK 11或17,ES 8.x版本建议使用OpenJDK 17(避免使用JDK 8,部分新特性可能不兼容),本文以OpenJDK 11为例,通过yum安装:

# 安装OpenJDK 11
sudo yum install -y java-11-openjdk-devel
# 验证安装
java -version
# 输出如下信息表示成功
openjdk version "11.0.15" 2022-04-19
OpenJDK Runtime Environment 18.9 (build 11.0.15+10)
OpenJDK 64-Bit Server VM 18.9 (build 11.0.15+10, mixed mode, sharing)

配置JAVA_HOME环境变量

编辑/etc/profile文件,添加JDK环境变量:

虚拟机搭建es

sudo vim /etc/profile

在文件末尾添加:

export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-11.0.15.0.9-1.el7_9.x86_64
export PATH=$JAVA_HOME/bin:$PATH

保存后执行source /etc/profile使配置生效,通过echo $JAVA_HOME验证是否设置成功。

ES安装与配置:核心步骤详解

下载并解压ES安装包

从ES官方镜像站下载对应版本的安装包(本文以ES 7.17.9为例,tar.gz格式适合Linux系统):

# 下载ES 7.17.9(国内用户可使用阿里云镜像源)
wget https://mirrors.aliyun.com/elasticsearch/7.17.9/elasticsearch-7.17.9-linux-x86_64.tar.gz
# 解压到/usr/local目录
sudo tar -zxvf elasticsearch-7.17.9-linux-x86_64.tar.gz -C /usr/local/
# 创建软链接方便后续操作
sudo ln -s /usr/local/elasticsearch-7.17.9 /usr/local/elasticsearch

创建ES专用用户与权限管理

ES出于安全考虑,不允许root用户直接运行,需创建独立用户:

# 创建es用户
sudo useradd -r es -s /bin/false
# 设置es用户为/usr/local/elasticsearch目录所有者
sudo chown -R es:es /usr/local/elasticsearch

修改ES核心配置文件

ES的核心配置位于/usr/local/elasticsearch/config/elasticsearch.yml,需重点修改以下参数:

sudo vim /usr/local/elasticsearch/config/elasticsearch.yml

关键配置项说明:

虚拟机搭建es

  • 集群与节点名称
    cluster.name: my-es-cluster    # 集群名称,同一集群内节点需保持一致
    node.name: node-01            # 节点名称,集群内唯一
  • 网络绑定
    network.host: 0.0.0.0         # 允许任何IP访问,生产环境建议设置为具体IP(如192.168.1.100)
    http.port: 9200               # HTTP服务端口,默认9200
  • 单节点模式(测试环境无需集群,需关闭自动发现):
    discovery.type: single-node   # 单节点模式,避免集群发现报错
  • 内存配置
    编辑/usr/local/elasticsearch/config/jvm.options,修改JVM堆内存大小(建议设置为物理内存的50%,不超过32GB):

    -Xms2g                        # 初始堆内存
    -Xmx2g                        # 最大堆内存

解决系统资源限制问题

ES启动时可能因系统资源限制报错,需调整以下配置:

  • 文件描述符限制
    编辑/etc/security/limits.conf,添加:

    * soft nofile 65536
    * hard nofile 65536
    es soft nofile 65536
    es hard nofile 65536
  • 虚拟内存限制
    执行以下命令临时生效,并写入/etc/sysctl.conf永久生效:

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

启动ES与验证服务状态

启动ES服务

切换到es用户,进入ES目录启动服务:

sudo su es
cd /usr/local/elasticsearch
# 前台启动(查看日志,适合调试)
./bin/elasticsearch
# 后台启动(生产环境推荐)
./bin/elasticsearch -d

验证服务状态

  • 检查进程
    ps -ef | grep elasticsearch

    若看到包含org.elasticsearch.bootstrap.Elasticsearch的进程,则启动成功。

  • 访问HTTP API
    在宿主机浏览器或虚拟机内执行curl命令:

    curl -X GET "http://localhost:9200"

    返回如下JSON信息表示ES正常运行:

    {
      "name": "node-01",
      "cluster_name": "my-es-cluster",
      "cluster_uuid": "abc123...",
      "version": {
        "number": "7.17.9",
        "build_flavor": "default",
        "build_type": "tar",
        "build_hash": "...",
        "build_date": "..."
      },
      "tagline": "You Know, for Search"
    }

常见问题与优化建议

常见启动报错处理

  • 错误1:max file descriptors [4096] for elasticsearch process is too low
    解决:按上文“文件描述符限制”配置调整。
  • 错误2:max virtual memory areas vm.max_map_count [65530] is too low
    解决:按上文“虚拟内存限制”配置调整。
  • 错误3:Java is not recognized or version is too old
    解决:检查JAVA_HOME是否配置正确,确保JDK版本符合ES要求。

环境优化建议

  • 关闭swap:ES建议关闭swap分区,避免内存交换影响性能,可通过sudo swapoff -a临时关闭,并修改/etc/fstab注释swap相关行。
  • 磁盘监控:ES对磁盘I/O敏感,建议监控磁盘使用率(df -h),避免磁盘满导致服务异常。
  • 安全加固:测试环境可开放外网访问,生产环境务必配置防火墙(firewalld)、启用X-Pack安全认证(默认开启,需设置密码)。

通过虚拟机搭建ES环境是掌握ES技术的基础,本文从环境准备、JDK安装、ES配置到启动验证,详细拆解了每个环节的关键步骤,在实际操作中,需注意资源分配、系统限制和版本兼容性等问题,完成搭建后,可进一步学习ES的索引管理、数据导入、Kibana可视化等进阶功能,为后续的日志分析、搜索系统开发奠定基础,虚拟机环境灵活且易于重置,适合反复测试和学习,是技术人员入门ES的理想选择。

赞(0)
未经允许不得转载:好主机测评网 » 虚拟机搭建es