亚马逊AWS官方博客

使用 Open Distro for Elasticsearch 运行 Rally

调整 Elasticsearch 集群的大小并进行扩展绝非易事。您需要拥有充分的数据存储空间,但您的映射和数据内容是决定磁盘上数据大小的关键。您需要为查询和更新留足容量,而您将使用的 CPU、JVM、磁盘和网络带宽大小将严重依赖您运行的查询和发送的更新数量。没有任何公式可保证它的正确:相反,您需要部署、监控和调整。

如要测试您的部署,您可以回放您自己的日志和数据,也可使用自动化的工具。Elastic 创建了适用于 Elasticsearch 的性能测试框架 Rally,您可以使用此框架为您的 Open Distro for Elasticsearch 集群生成模拟负载。通过测试,您可以确保您的集群大小适中,性能符合您期望的规范。

Rally 功能齐备,让您可以对您的 Elasticsearch 集群运行自己的测试。Rally “跑道”是指您可以运行的不同类型的基准,以便练习和测量您的工作负载。您可以添加新的跑道来扩展 Rally,从而满足自定义工作负载的需要,也可使用任何预配置的跑道。在此博文中,我们将在一个 Open Distro for Elasticsearch 实例上运行 Rally 并测量其性能。

安装

您可以参阅我们的文档以通过 RPM 安装 Open Distro for Elasticsearch,也可格局我们之前博文中的说明以使用 Docker Desktop 来安装 Open Distro for Elasticsearch

Rally 采用 Python 代码。您需要在您计划运行 Rally 的主机上安装 Python 3安装 pip 3

如要安装 Rally,请运行如下命令:

$ pip3 install esrally

Rally 支持自定义配置,让您可以对测试许多方面进行微调,包括基准目录的位置、您希望运行的测试、要存储的取证数据水平等等。您可以参阅 Rally 文档以了解如何自定义您的测试。在本博文中,我们将从默认配置开始:

$ esrally configure

Rally 会在您的总目录中建立 .rally 目录,然后在该目录下创建配置、数据和日志目录。

运行您的第一次测试

默认情况下,Rally 会创建一个 Elasticsearch 集群来进行测试。您已经有一个 Open Distro for Elasticsearch 集群在运行。您可以使用 --pipeline benchmark-only 命令行参数将 Rally 指向您现有的集群。

Rally 的跑道指定了测试配置。共有十二条预配置的跑道,每条跑道都配有相应的数据集。您可以使用 esrally list tracks 命令来查看这些跑道。对于您的第一个测试,您将使用 nyc_taxis 跑道。

--client-options 用于指定凭证,以便 Rally 通过安全插件进行身份验证。我使用了管理员用户的默认凭证(我未作任何更改,但最佳实践是要进行更改)。我还指定了 verify-certs:false,因为 Rally 将会拒绝演示版证书。

esrally --pipeline benchmark-only --track=nyc_taxis --challenge append-no-conflicts-index-only --target-host=http://localhost:9200 --client-options="use_ssl:true,basic_auth_user:'admin',basic_auth_password:'admin',verify_certs:false"

上述命令假设您使用基本的身份验证和 SSL 传输运行 Open Distro for Elasticsearch 的安全插件。一定要替换为您自己的用户名和密码。

Rally 将下载部分纽约市出租车和礼宾车行使记录数据集。 它将把数据发送到 Elasticsearch,然后运行对应的搜索工作负载。最后,Rally 将发布有关索引建立时间、查询延迟和集群指标的摘要。

下一步如何操作

您可以自定义 Rally 的跑道,也可创建自己的跑道了加载数据并对 Open Distro for Elasticsearch 运行查询。经过充分的测试,您可以调整好集群的实例类型以及您的工作负载的分区策略。正确设置后,Open Distro for Elasticsearch 的运行和管理将会变得更为简单。

有问题或疑问? 希望参与讨论? 您可以在我们的论坛上获得帮助并讨论 Open Distro for Elasticsearch。您可以在这里提出问题

本篇作者

Atri Sharma

Atri Sharma

查询处理和搜索极客,自 2012 年起开始钻研开源软件。曾研究了许多数据引擎,目前正在钻研 Elasticsearch 和 Lucene。

Jon Handler

Jon Handler

Jon Handler (@_searchgeek) 是总部位于加利福尼亚州帕罗奥图市的 Amazon Web Services 的首席解决方案架构师。Jon 与 CloudSearch 和 Elasticsearch 团队密切合作,为想要将搜索工作负载迁移到 AWS 云的广大客户提供帮助和指导。在加入 AWS 之前,Jon 作为一名软件开发人员,曾为某个大型电子商务搜索引擎编写代码长达四年。Jon 拥有宾夕法尼亚大学的文学学士学位,以及西北大学计算机科学和人工智能理学硕士和博士学位。