带你读《Elastic Stack 实战手册》之8:—— 3.4.1.1.安装Elasticsearch(本地及docker)(1)

本文涉及的产品
Elasticsearch Serverless通用抵扣包,测试体验金 200元
简介: 带你读《Elastic Stack 实战手册》之8:—— 3.4.1.1.安装Elasticsearch(本地及docker)(1)

 

3.4.入门篇

3.4.1.Elastic Stack 安装部署

3.4.1.1.安装Elasticsearch(本地及docker)


创作人陈晨

审稿人刘帅

 

本章介绍 Elasticsearch (简称 ES )的安装和部署,将会从以下几个方面进行阐述:

 

l 环境准备

l 系统级别参数配置

l 下载、安装及启动

l 常见问题及解决方案

 

环境准备

 

ES 和其他的服务一样,也是部署在服务器上进行使用的系统,为了能够让它更好的支持我们的实际使用,ES 节点/集群的部署环境就显得尤为重要。本节将从系统环境的选择,必须基础应用的安装等方面进行阐述。

 

环境选择策略


操作系统

 

由于绝大部分 ES 集群的部署环境都是基于公有云 Linux 的,所以本文主要以 CentOS7 为基础进行阐述,同时也会针对 Windows 和 MacOS 环境的安装部署进行简要描述。

选择 CentOS 7 作为基础系统有以下一些考虑:

 

l ES 虽然是基于JVM 上运行的 Java 项目,但它在启动、运行时会对一些环境参数,如虚拟内存数、文件句柄等有所要求

l 国内的 ES 使用和部署中,以 CentOS 和 Debian 为主,存在少量的 Ubuntu 和 极少量的 Windows 的服务器

 

官方团队对 64 位系统进行了稳定性测试和系统性兼容,其中除了以下一些版本以外都可以较好的支持:

 

l CentOS 家族(6、7、8)中,CentOS6 不支持 7.9.2 版本捆绑的 JDK15+

l Debian 家族(7~10)中, Debian 7 从 5.x 版本开始不支持

l Ubuntu 家族(14、16、18)中,Ubuntu 14.04 从 7.x 版本开始不支持,但 Ubuntu 16,18 都支持 7.x 。

l Windows 家族(Windows server 2012/R2、2016、2019)中,只有 Windows server 2019 对 ES 7.7 之前的版本兼容性有限。

 

再结合通用云厂商和自建服务器的操作系统选型中,CentOS7 得到了较好的支持和维护,所以此处我们选择以 CentOS7 作为首选操作系统

 

内存、CPU

 

ES 节点启动的默认需求为1C2G (1 核 CPU,2GB 内存)

 

通过调整 $ES_HOME/config/jvm.options 文件中的堆栈配置,也可以让 ES 实例在 1C1G 甚至更小资源的服务器上启动。

 

注意:更小的可用资源意味着更差的性能和节点稳定性,甚至节点启动失败。

 

实际生产中,更大的内存意味着更高的数据处理能力,更多的 CPU 核数可以支持更多的内部线程,但是无可避免的,更多的资源也意味着更高的系统开销。一般情况,内存和 CPU 的配

比大致为 1:2 到 1:4 用以支持绝大部分数据存取、聚合等操作的使用,但是实际的内存、CPU的用量和配比还需要用真实数据模拟真实生产环境的压测结果为准

 

一般的内存、CPU 配置策略大致为以下几种

 

l master 节点需要适当大小的内存

l coordination 节点需要较大的内存和 CPU

l ingest 节点需要较大的 CPU

l data 节点需要较大的内存和硬盘

 

实际生产中,需要通过压测来确定最佳的内存、CPU 配比,一般情况服务器的内存除了系统占用的固定内存之外,会建议设置为服务器可用内存的一半。

 

除了 ES 实例之外,ES 所维护的 Lucene 也是 Java 库,也需要占用相应的内存。此时,ES的最大/小堆栈内存建议不超过 31G,否则会因为指针压缩的原因白白浪费内存资源,甚至可能出现数据存取更慢的问题。如果目标服务器的可用内存超过 64G 的话,可以考虑通过端口的配置部署多个 ES 实例。

 

磁盘

 

l 没做特殊配置的话,ES 会在写入及不断的查询过程中,将数据集中存在最新修改和召回的数据缓存在节点/集群的各级内存(缓存)中。同时将绝大部分数据存在磁盘中的各种索引文件中,仅在内存中保留一部分索引文件的索引以加速数据的读写

l 不同于内存中的文件,ES 放置在磁盘中的文件的读写是随机的不是顺序的,所以更快的随机读写速度将使 ES 提供更快的数据存取速度。

l 在在线搜索等高频存取的场景中,更建议使用固态硬盘以支持数据的高速读写

l 在离线的日志存储等低频读取的场景中,则可以考虑用机械硬盘来节约成本

 

JDK

 

l ES 作为一个 Java 应用,也需要运行在与之相匹配的 JVM上


l 相对于低版本的 ES,高版本的 ES 部署包会自带 JDK,所以只需要保证部署 ES 的系统可以支持对应的 JDK 就好

l 目前 ES 7.10 所对应的 JDK 是 JDK11 至 15,所以部署的系统只要能支持 JDK11 以上的 JDK 版本都可以用来做部署

l ES 的部署建议尽量使用 ES 自带的 OpenJDK,因为 Elastic 团队会在每个版本中对对应的 OpenJDK 版本进行适配和调教,贸然使用其他版本的 JDK 可能会带来不可预见的问题

 

实际系统配置

 

修改源并安装必要工具

 

sudo sed -e 's|^mirrorlist=|#mirrorlist=|g' \
        -e 's|^#baseurl=http://mirror.centos.org/centos|baseurl=https://mirrors.ustc.edu.cn/centos|g' \
        -i.bak \
        /etc/yum.repos.d/CentOS-Base.repo &&  \
        yum makecache && \
        yum update -y && \
        yum install -y epel-release && \
        yum install -y curl wget htop unzip && \
        yum install -y docker docker-compose


开启 docker 服务

 

l systemctl start docker

l systemctl enable docker

 

《Elastic Stack 实战手册》——三、产品能力——3.4.入门篇——3.4.1.Elastic Stack 安装部署—— 3.4.1.1.安装Elasticsearch(本地及docker)(2) https://developer.aliyun.com/article/1231512


相关实践学习
以电商场景为例搭建AI语义搜索应用
本实验旨在通过阿里云Elasticsearch结合阿里云搜索开发工作台AI模型服务,构建一个高效、精准的语义搜索系统,模拟电商场景,深入理解AI搜索技术原理并掌握其实现过程。
ElasticSearch 最新快速入门教程
本课程由千锋教育提供。全文搜索的需求非常大。而开源的解决办法Elasricsearch(Elastic)就是一个非常好的工具。目前是全文搜索引擎的首选。本系列教程由浅入深讲解了在CentOS7系统下如何搭建ElasticSearch,如何使用Kibana实现各种方式的搜索并详细分析了搜索的原理,最后讲解了在Java应用中如何集成ElasticSearch并实现搜索。  
相关文章
|
4月前
|
关系型数据库 应用服务中间件 nginx
Docker一键安装中间件(RocketMq、Nginx、MySql、Minio、Jenkins、Redis)
本系列脚本提供RocketMQ、Nginx、MySQL、MinIO、Jenkins和Redis的Docker一键安装与配置方案,适用于快速部署微服务基础环境。
|
2月前
|
关系型数据库 数据库 PostgreSQL
docker 安装 Postgres 17.6
本文介绍如何通过Docker安装和配置PostgreSQL 17.6。内容包括拉取镜像、导出配置文件、运行容器并挂载数据与配置文件目录,以及进入容器使用psql操作数据库的完整步骤,便于持久化管理和自定义配置。
290 3
docker 安装 Postgres 17.6
|
1月前
|
NoSQL 算法 Redis
【Docker】(3)学习Docker中 镜像与容器数据卷、映射关系!手把手带你安装 MySql主从同步 和 Redis三主三从集群!并且进行主从切换与扩容操作,还有分析 哈希分区 等知识点!
Union文件系统(UnionFS)是一种**分层、轻量级并且高性能的文件系统**,它支持对文件系统的修改作为一次提交来一层层的叠加,同时可以将不同目录挂载到同一个虚拟文件系统下(unite several directories into a single virtual filesystem) Union 文件系统是 Docker 镜像的基础。 镜像可以通过分层来进行继承,基于基础镜像(没有父镜像),可以制作各种具体的应用镜像。
278 5
|
1月前
|
Java Linux 虚拟化
【Docker】(1)Docker的概述与架构,手把手带你安装Docker,云原生路上不可缺少的一门技术!
1. Docker简介 1.1 Docker是什么 为什么docker会出现? 假定您在开发一款平台项目,您的开发环境具有特定的配置。其他开发人员身处的环境配置也各有不同。 您正在开发的应用依赖于您当前的配置且还要依赖于某些配置文件。 您的企业还拥有标准化的测试和生产环境,且具有自身的配置和一系列支持文件。 **要求:**希望尽可能多在本地模拟这些环境而不产生重新创建服务器环境的开销 问题: 要如何确保应用能够在这些环境中运行和通过质量检测? 在部署过程中不出现令人头疼的版本、配置问题 无需重新编写代码和进行故障修复
299 2
|
2月前
|
缓存 前端开发 Docker
Docker Layer Caching:加速你的容器构建
Docker Layer Caching:加速你的容器构建

热门文章

最新文章

相关产品

  • 检索分析服务 Elasticsearch版