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

本文涉及的产品
检索分析服务 Elasticsearch 版,2核4GB开发者规格 1个月
简介: 带你读《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


相关实践学习
利用Elasticsearch实现地理位置查询
本实验将分别介绍如何使用Elasticsearch7.10版本进行全文检索、多语言检索和地理位置查询三个Elasticsearch基础检索子场景的实现。
ElasticSearch 入门精讲
ElasticSearch是一个开源的、基于Lucene的、分布式、高扩展、高实时的搜索与数据分析引擎。根据DB-Engines的排名显示,Elasticsearch是最受欢迎的企业搜索引擎,其次是Apache Solr(也是基于Lucene)。 ElasticSearch的实现原理主要分为以下几个步骤: 用户将数据提交到Elastic Search 数据库中 通过分词控制器去将对应的语句分词,将其权重和分词结果一并存入数据 当用户搜索数据时候,再根据权重将结果排名、打分 将返回结果呈现给用户 Elasticsearch可以用于搜索各种文档。它提供可扩展的搜索,具有接近实时的搜索,并支持多租户。
相关文章
|
2月前
|
SQL API 流计算
实时计算 Flink版产品使用合集之在Mac M1下的Docker环境中开启SQL Server代理的操作步骤是什么
实时计算Flink版作为一种强大的流处理和批处理统一的计算框架,广泛应用于各种需要实时数据处理和分析的场景。实时计算Flink版通常结合SQL接口、DataStream API、以及与上下游数据源和存储系统的丰富连接器,提供了一套全面的解决方案,以应对各种实时计算需求。其低延迟、高吞吐、容错性强的特点,使其成为众多企业和组织实时数据处理首选的技术平台。以下是实时计算Flink版的一些典型使用合集。
168 1
|
2月前
|
Serverless 应用服务中间件 开发工具
Serverless 应用引擎产品使用之阿里函数计算中,在本地进行调试,并且需要用到Docker如何解决
阿里云Serverless 应用引擎(SAE)提供了完整的微服务应用生命周期管理能力,包括应用部署、服务治理、开发运维、资源管理等功能,并通过扩展功能支持多环境管理、API Gateway、事件驱动等高级应用场景,帮助企业快速构建、部署、运维和扩展微服务架构,实现Serverless化的应用部署与运维模式。以下是对SAE产品使用合集的概述,包括应用管理、服务治理、开发运维、资源管理等方面。
|
6天前
|
敏捷开发 API 持续交付
阿里云云效产品使用问题之流水线编译docker时,如何把已经定义好的token传入编译参数
云效作为一款全面覆盖研发全生命周期管理的云端效能平台,致力于帮助企业实现高效协同、敏捷研发和持续交付。本合集收集整理了用户在使用云效过程中遇到的常见问题,问题涉及项目创建与管理、需求规划与迭代、代码托管与版本控制、自动化测试、持续集成与发布等方面。
阿里云云效产品使用问题之流水线编译docker时,如何把已经定义好的token传入编译参数
|
6天前
|
持续交付 开发工具 git
阿里云云效产品使用问题之在云效代码域中gitlab使用docker安装的,迁移时遇到“获取企业信息失败”,是什么原因
云效作为一款全面覆盖研发全生命周期管理的云端效能平台,致力于帮助企业实现高效协同、敏捷研发和持续交付。本合集收集整理了用户在使用云效过程中遇到的常见问题,问题涉及项目创建与管理、需求规划与迭代、代码托管与版本控制、自动化测试、持续集成与发布等方面。
|
27天前
|
Docker 容器
docker 运行 elasticsearch + kibana + head 集群
docker 运行 elasticsearch + kibana + head 集群
|
29天前
|
jenkins 持续交付 数据安全/隐私保护
树莓派4b通过docker安装部署jenkins
树莓派4b通过docker安装部署jenkins
50 2
|
6天前
|
运维 Serverless 文件存储
函数计算产品使用问题之在利用Docker镜像部署应用时,容器内的应用如何能访问函数计算配置的NAS挂载
函数计算产品作为一种事件驱动的全托管计算服务,让用户能够专注于业务逻辑的编写,而无需关心底层服务器的管理与运维。你可以有效地利用函数计算产品来支撑各类应用场景,从简单的数据处理到复杂的业务逻辑,实现快速、高效、低成本的云上部署与运维。以下是一些关于使用函数计算产品的合集和要点,帮助你更好地理解和应用这一服务。
|
7天前
|
IDE Serverless 开发工具
函数计算产品使用问题之如何使用Docker镜像作为执行环境
函数计算产品作为一种事件驱动的全托管计算服务,让用户能够专注于业务逻辑的编写,而无需关心底层服务器的管理与运维。你可以有效地利用函数计算产品来支撑各类应用场景,从简单的数据处理到复杂的业务逻辑,实现快速、高效、低成本的云上部署与运维。以下是一些关于使用函数计算产品的合集和要点,帮助你更好地理解和应用这一服务。
|
7天前
|
存储 Serverless 对象存储
函数计算产品使用问题之项目打包为docker镜像,该如何部署上去
函数计算产品作为一种事件驱动的全托管计算服务,让用户能够专注于业务逻辑的编写,而无需关心底层服务器的管理与运维。你可以有效地利用函数计算产品来支撑各类应用场景,从简单的数据处理到复杂的业务逻辑,实现快速、高效、低成本的云上部署与运维。以下是一些关于使用函数计算产品的合集和要点,帮助你更好地理解和应用这一服务。
|
8天前
|
负载均衡 网络协议 开发工具
经验大分享:SRS4WebRTC集群docker安装部署:
经验大分享:SRS4WebRTC集群docker安装部署:
11 0

热门文章

最新文章

相关产品

  • 检索分析服务 Elasticsearch版