0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

在华为云上通过 Docker 容器部署 Elasticsearch 并进行性能评测

jf_81200783 来源:jf_81200783 作者:jf_81200783 2025-01-13 13:36 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

前言

1. 华为云X实例介绍及优势

1.1 柔性算力

1.2 vCPU和内存的灵活配比

1.3 成本效益与性能

2. 安装并运行 Docker

2.1 修改仓库配置文件

2.2 安装 Docker

2.3 启动 Docker

3. 使用Docker部署Elasticsearch

3.1 拉取Elasticsearch镜像

3.2 启动Elasticsearch容器

3.3 验证Elasticsearch

4. 安装Apache Benchmark (ab) 工具

5. 使用 ab 工具对 Elasticsearch 进行评测

5.1 运行 Elasticsearch 查询评测

5.2 查看评测结果

5.3 调整并发请求和请求数

6. 总结

前言

随着数据量的不断增加,企业对高效搜索和数据分析的需求也在快速增长。Elasticsearch 作为一款分布式的全文搜索引擎,因其高性能和可扩展性,广泛应用于大数据场景。在本篇文章中,我将介绍如何在华为云上通过 Docker 容器化部署 Elasticsearch,并通过工具对其进行性能评测。整篇文章将涵盖从环境准备、部署、到性能评测的详细步骤和代码示例,帮助读者在华为云上快速搭建一个高效的 Elasticsearch 系统。

1. 华为云 X 实例介绍及优势

在选择云服务平台时,计算资源的弹性和性价比是关键考虑因素。华为云 X 实例是为用户提供高性价比和灵活资源调配能力的云计算服务,特别适合计算密集型任务,如大数据处理、AI 训练以及像 Elasticsearch 这样的分布式搜索引擎。

1.1 柔性算力

华为云 X 实例采用了柔性算力的设计理念。所谓柔性算力,即用户可以根据具体的业务需求,在计算能力、存储容量和带宽等资源之间进行灵活调配。这意味着,用户在运行 Elasticsearch 等应用时,可以根据数据增长或查询量的变化,动态调整资源,确保性能需求得到满足。

1.2 vCPU 和内存的灵活配比

X 实例允许用户灵活配置 vCPU 与内存的比例,从而根据不同负载场景进行优化。例如,在 Elasticsearch 集群中,索引和搜索任务的负载不同,可能需要更高的内存或计算能力。通过在 X 实例中调整 vCPU 与内存的配比,用户可以避免资源浪费,提高成本效益。

1.3 成本效益与性能

在高性价比方面,华为云 X 实例提供了更具竞争力的价格,特别是对于那些对资源需求波动较大的工作负载,如 Elasticsearch 的动态索引和查询工作。结合弹性扩展能力,用户可以在不牺牲性能的前提下,大幅降低运行成本。此外,X 实例支持不同的计费模式,用户可以按需付费或选择包年包月等多种付费方式,从而进一步提升云上计算资源的利用效率。

近期华为云推出了优惠活动,X 实例服务器的折扣力度非常大,性能与性价比兼具,特别适合开发者进行各种项目部署和测试,欢迎大家抓住机会体验。

2. 安装并运行 Docker

在开始部署之前,确保您已经在华为云上创建了一个 X 实例服务器,并安装了 Docker。以下是需要准备的内容:

2.1 修改仓库配置文件

如果在添加 Docker 仓库时出现错误,需手动下载并修改仓库文件。执行以下命令下载仓库文件:

wget https://repo.huaweicloud.com/docker-ce/linux/centos/docker-ce.repo -P /usr/local/docker

打开文件并将 $releasever 替换为 7:

vi /usr/local/docker/docker-ce.repo:%s/$releasever/7/g

重新添加仓库:

yum-config-manager --add-repo /usr/local/docker/docker-ce.repo

2.2 安装 Docker

安装 Docker 及相关组件:

yum install -y docker-ce docker-ce-cli containerd.io

2.3 启动 Docker

安装完成后,启动 Docker 服务:

systemctl start docker

使用以下命令确认 Docker 正常运行:

systemctl status docker

wKgZPGeEpj-AelcxAAD9qW6gwBg855.png

3. 使用 Docker 部署 Elasticsearch

部署 Elasticsearch 的方式有很多种,使用 Docker 可以方便地管理其容器化进程,并快速扩展。接下来我们将拉取 Elasticsearch 镜像,并通过 Docker 启动容器。

3.1 拉取 Elasticsearch 镜像

执行以下命令从 Docker Hub 上获取 Elasticsearch 官方镜像:

docker pull elasticsearch:7.16.2

3.2 启动 Elasticsearch 容器

在启动容器之前,我们可以通过指定一些环境变量来配置 Elasticsearch。以下是一个启动 Elasticsearch 的命令示例:

docker run -d --name elasticsearch -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" -e "ES_JAVA_OPTS=-Xms4g -Xmx4g" -v es_data:/usr/share/elasticsearch/data elasticsearch:7.16.2

上述命令解释:

·-p 9200:9200:将主机的 9200 端口映射到容器的 9200 端口(用于 HTTP 访问)。

·-p 9300:9300:将主机的 9300 端口映射到容器的 9300 端口(用于集群通信)。

·-e "discovery.type=single-node":指定 Elasticsearch 为单节点模式。

·-e "ES_JAVA_OPTS=-Xms4g -Xmx4g":设置 JVM 内存分配为 4GB。

·-v es_data:/usr/share/elasticsearch/data:将 Elasticsearch 的数据存储映射到 Docker 卷 es_data 中。

启动后,您可以通过以下命令查看容器状态:

docker ps

如果 Elasticsearch 启动成功,您应该能够看到容器在运行。

CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 2f11d1ece355 elasticsearch:7.16.2 "/bin/tini -- /usr/l…" 3 days ago Up 3 days 0.0.0.0:9200->9200/tcp, :::9200->9200/tcp, 0.0.0.0:9300->9300/tcp, :::9300->9300/tcp elasticsearch

3.3 验证 Elasticsearch

您可以通过浏览器或 curl 命令访问 Elasticsearch 的 REST API 接口,验证其是否正常启动:

curl -X GET "localhost:9200/"

如果部署成功,您将得到类似以下的 JSON 响应:

{"name" : "2f11d1ece355","cluster_name" : "docker-cluster","cluster_uuid" : "ztjMH9OAQaKDErlBVHpgpg","version" : { "number" : "7.16.2", "build_flavor" : "default", "build_type" : "docker", "build_hash" : "2b937c44140b6559905130a8650c64dbd0879cfb", "build_date" : "2021-12-18T19:42:46.604893745Z", "build_snapshot" : false, "lucene_version" : "8.10.1", "minimum_wire_compatibility_version" : "6.8.0", "minimum_index_compatibility_version" : "6.0.0-beta1"},"tagline" : "You Know, for Search"}

4. 安装 Apache Benchmark (ab) 工具

Apache Benchmark(简称 ab)是 Apache HTTP Server 附带的一个命令行工具,常用于对 HTTP 服务的性能进行测试。由于 Elasticsearch 的 REST API 是基于 HTTP 协议的,因此可以使用 ab 工具对其进行简单的压力测试。

大多数 Linux 系统自带 ab 工具,如果没有安装 Apache,可以通过以下命令安装:

sudo yum install httpd-tools

安装完成后,可以通过以下命令验证 ab 是否安装成功:

ab -V

如果返回版本号,则表示安装成功。

wKgZO2eEpj-AcdXYAAAUQDf177w616.png

5. 使用 ab 工具对 Elasticsearch 进行评测

ab (Apache Benchmark) 工具通过向指定 URL 发送多个 HTTP 请求,统计响应时间、吞吐量等性能指标,帮助评估服务器的性能。对于 Elasticsearch 集群,可以使用 ab 工具测试查询请求的性能,如数据检索的响应时间和吞吐量等。

5.1 运行 Elasticsearch 查询评测

以下是使用 ab 工具对 Elasticsearch 进行查询性能评测的步骤:

确定查询 URL先确定需要测试的 Elasticsearch 查询请求。假设 Elasticsearch 运行在 localhost:9200,并且索引为 blog01,可以使用以下命令执行简单的搜索请求:

curl -XGET http://localhost:9200/blog01/article/1?pretty

这将返回 id 字段为 1 的文章数据。

wKgZPGeEpkCAWGN0AAAZy6XZg7Y550.png

运行 ab 测试使用 ab 工具对上述 URL 进行压力测试,模拟多个并发查询请求。例如,以下命令发出 1000 个请求,允许最多 10 个并发请求:

ab -n 1000 -c 10 http://localhost:9200/blog01/article/_search?q=id:1

参数说明:

·-n 1000:总共发出 1000 个 HTTP 请求。

·-c 10:最多允许 10 个并发请求。

5.2 查看评测结果

ab 工具的评测结果包括以下关键指标:

·Requests per second:每秒处理的请求数,即吞吐量。

·Time per request:每个请求的平均处理时间(延迟)。

·Transfer rate:数据传输速度。

示例输出如下:

Concurrency Level: 10Time taken for tests: 0.720 secondsComplete requests: 1000Failed requests: 1 (Connect: 0, Receive: 0, Length: 1, Exceptions: 0)Total transferred: 863001 bytesHTML transferred: 280001 bytesRequests per second: 1389.56 [#/sec] (mean)Time per request: 7.197 [ms] (mean)Time per request: 0.720 [ms] (mean, across all concurrent requests)Transfer rate: 1171.09 [Kbytes/sec] received​Connection Times (ms)min mean[+/-sd] median maxConnect: 0 0 0.0 0 0Processing: 1 7 2.8 7 24Waiting: 1 7 2.7 7 24Total: 1 7 2.8 7 24

分析

·Requests per second (1389.56)表示 Elasticsearch 服务器每秒处理约 1390 个请求,说明在 10 个并发请求下,系统的吞吐量较高。

·Time per request (7.197 ms)表示平均每个请求处理时间约为 7 毫秒,说明延迟较低,系统能快速响应。

·Failed requests (1)表示在 1000 次请求中只有 1 次失败,服务器在高并发下的稳定性较好。

5.3 调整并发请求和请求数

可以通过调整-n 和 -c 参数,测试不同规模的压力场景。比如,以下命令模拟 100 个并发请求,共发出 5000 个请求:

ab -n 5000 -c 100 http://localhost:9200/blog01/article/_search?q=id:1

输出示例如下:

Concurrency Level: 100Time taken for tests: 1.628 secondsComplete requests: 5000Failed requests: 5 (Connect: 0, Receive: 0, Length: 5, Exceptions: 0)Total transferred: 4315005 bytesHTML transferred: 1400005 bytesRequests per second: 3070.79 [#/sec] (mean)Time per request: 32.565 [ms] (mean)Time per request: 0.326 [ms] (mean, across all concurrent requests)Transfer rate: 2587.99 [Kbytes/sec] received​Connection Times (ms)min mean[+/-sd] median maxConnect: 0 0 0.2 0 2Processing: 1 32 18.3 30 100Waiting: 1 32 18.3 30 100Total: 1 32 18.3 30 100

分析

·在 100 并发请求下,Requests per second达到 3070.79,说明系统在高并发场景下吞吐量显著提高。

·Time per request增至 32 毫秒,说明在更高并发情况下,系统的响应时间有所增加,但仍在可接受范围内。

通过这种压力测试,可以了解 Elasticsearch 在不同并发请求下的性能表现,并为实际应用中的优化提供依据。

6. 总结

通过 Apache Benchmark 工具,您可以快速对 Elasticsearch 集群的查询性能进行压力测试。该工具简单易用,能够提供基本的吞吐量、延迟和失败请求等指标。它适用于对 HTTP 层的简单压力测试,帮助用户初步了解集群的性能状况。

审核编辑 黄宇

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • Docker
    +关注

    关注

    0

    文章

    526

    浏览量

    14019
  • 华为云
    +关注

    关注

    3

    文章

    2804

    浏览量

    19090
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    如何在NVIDIA Jetson AGX Thor通过Docker高效部署vLLM推理服务

    继系统安装与环境配置后,本期我们将继续带大家深入 NVIDIA Jetson AGX Thor 的开发教程之旅,了解如何在 Jetson AGX Thor 通过 Docker 高效部署
    的头像 发表于 11-13 14:08 3037次阅读
    如何在NVIDIA Jetson AGX Thor<b class='flag-5'>上</b><b class='flag-5'>通过</b><b class='flag-5'>Docker</b>高效<b class='flag-5'>部署</b>vLLM推理服务

    国产!全志T113-i 双核Cortex-A7@1.2GHz 工业开发板—Docker容器部署方法说明

    本指导文档主要演示Docker容器部署的方法,并基于Docker运行led_flash例程。
    的头像 发表于 08-06 15:55 285次阅读
    国产!全志T113-i 双核Cortex-A7@1.2GHz 工业开发板—<b class='flag-5'>Docker</b><b class='flag-5'>容器</b><b class='flag-5'>部署</b>方法说明

    Docker容器安全攻防实战案例

    在云原生时代,Docker已成为现代应用部署的基石。然而,容器化带来便利的同时,也引入了新的安全挑战。作为一名在生产环境中管理过数千个容器的运维工程师,我将
    的头像 发表于 08-05 09:52 1007次阅读

    干货分享 | RK3588 Ubuntu系统Docker容器使用指南

    前言:在瑞芯微RK3588高性能AIoT平台上运行Ubuntu系统时,Docker容器技术能极大提升开发部署效率。通过轻量级虚拟化实现环境隔
    的头像 发表于 06-27 12:01 3189次阅读
    干货分享 | RK3588 Ubuntu系统<b class='flag-5'>Docker</b><b class='flag-5'>容器</b>使用指南

    如何使用Docker部署大模型

    随着深度学习和大模型的快速发展,如何高效地部署这些模型成为了一个重要的挑战。Docker 作为一种轻量级的容器化技术,能够将模型及其依赖环境打包成一个可移植的容器,极大地简化了
    的头像 发表于 05-24 16:39 797次阅读

    华为 X 实例部署 Docker 应用的性能评测优化与实践指南

      3.2 使用Docker部署Elasticsearch   3.3 使用Docker部署MySQL   3.4 使用
    的头像 发表于 01-23 18:03 769次阅读
    <b class='flag-5'>华为</b><b class='flag-5'>云</b> X 实例<b class='flag-5'>部署</b> <b class='flag-5'>Docker</b> 应用的<b class='flag-5'>性能</b><b class='flag-5'>评测</b>优化与实践指南

    华为 FlexusX 与 Docker+Nginx 的高效整合之路

    前言 华为 FlexusX 携手 Docker+Nginx,高效整合,云端性能再升级!FlexusX 服务器,依托华为强大的技术实力,为 Docke
    的头像 发表于 01-23 17:55 570次阅读
    <b class='flag-5'>华为</b> FlexusX 与 <b class='flag-5'>Docker</b>+Nginx 的高效整合之路

    解锁电商新境界,在华为 Flexus 快速部署并运行 Magento 电商系统

    Flexus X 实例,我体验到了快速部署的便捷与高效,同时享受到了按需付费的灵活性与成本优化。本文将分享我在华为 Flexus 上部署
    的头像 发表于 01-17 09:42 1362次阅读
    解锁电商新境界,<b class='flag-5'>在华为</b><b class='flag-5'>云</b> Flexus <b class='flag-5'>上</b>快速<b class='flag-5'>部署</b>并运行 Magento 电商系统

    解锁高效项目管理,Zentao 在华为 Flexusx 容器部署与应用指南

    部署提供了理想平台。Flexusx 实例采用按需计费的灵活定价模式,用户可以根据实际使用情况支付费用,有效控制成本。本文章旨在帮助广大项目管理者和 IT 运维人员掌握 Zentao 在华为 Flexusx 实例
    的头像 发表于 01-13 15:54 1043次阅读
    解锁高效项目管理,Zentao <b class='flag-5'>在华为</b><b class='flag-5'>云</b> Flexusx <b class='flag-5'>容器</b>化<b class='flag-5'>部署</b>与应用指南

    华为 Flexus 服务器 X 实例之 openEuler 系统部署 Docker Compose 管理工具 Dockge

    docker-compose.yaml 部署文件时,Dockge 以其精美的设计和易用性脱颖而出,成为不可或缺的管理工具。利用华为 Flexus
    的头像 发表于 01-08 11:41 1010次阅读
    <b class='flag-5'>华为</b><b class='flag-5'>云</b> Flexus <b class='flag-5'>云</b>服务器 X 实例之 openEuler 系统<b class='flag-5'>部署</b> <b class='flag-5'>Docker</b> Compose 管理工具 Dockge

    基于 Docker 与 Jenkins 实现自动化部署

    前言 重塑自动化部署新高度,Docker 携手 Jenkins,在华为 Flexus X 服务器的加持下,引领持续集成与
    的头像 发表于 01-07 17:25 859次阅读
    基于 <b class='flag-5'>Docker</b> 与 Jenkins 实现自动化<b class='flag-5'>部署</b>

    在华为 FlexusX 实例实现 Docker 容器的实时监控与可视化分析

    前言 华为 Flexus X,以顶尖算力与智能调度,引领 Docker 容器管理新风尚。828 企业
    的头像 发表于 01-02 13:42 782次阅读
    <b class='flag-5'>在华为</b><b class='flag-5'>云</b> FlexusX 实例<b class='flag-5'>上</b>实现 <b class='flag-5'>Docker</b> <b class='flag-5'>容器</b>的实时监控与可视化分析

    云端安全守护者,华为 Flexusx 的 AWVS 容器部署与安全扫描实践

    前言 华为 Flexusx 实例以其高性能、可靠性和扩展性著称,为企业提供灵活的计算资源。其灵活性不仅限于硬件配置,更在于对容器化应用的深度支持。
    的头像 发表于 12-30 14:54 693次阅读
    云端安全守护者,<b class='flag-5'>华为</b><b class='flag-5'>云</b> Flexusx <b class='flag-5'>上</b>的 AWVS <b class='flag-5'>容器</b>化<b class='flag-5'>部署</b>与安全扫描实践

    华为 Flexus 服务器 X 实例之 openEuler 系统下玩转 iSulad 容器技术

    的灵活性与性能。结合华为自研的 iSulad 容器技术,用户能够在 openEuler 系统享受到更轻量级、更安全的应用程序部署体验。本文
    的头像 发表于 12-30 14:53 943次阅读
    <b class='flag-5'>华为</b><b class='flag-5'>云</b> Flexus <b class='flag-5'>云</b>服务器 X 实例之 openEuler 系统下玩转 iSulad <b class='flag-5'>容器</b>技术

    在 Huawei Cloud EulerOS 系统中安装 Docker 的详细步骤与常见问题解决

    Docker镜像   6. 配置Docker镜像加速   6.1 修改daemon.json文件   6.2 再次拉取镜像   结语   前言 Docker 是一种轻量级的容器技术,广
    的头像 发表于 12-26 18:12 2714次阅读
    在 Huawei Cloud EulerOS 系统中安装 <b class='flag-5'>Docker</b> 的详细步骤与常见问题解决