ElasticSearch壓測工具:esrally離線使用詳解

原創聲明:本文首發騰訊雲·雲+社區,未經允許,不得轉載

前言:

esrally是一款用於ElasticSearch的開源壓測工具。默認情況下,其工作方式是:在線獲取其位於海外主機上的數據集,然後在本地執行壓測。因此,在中國網路情況下(或某些沒有網路的主機上),在線獲取數據集這一步驟將非常耗時甚至無法完成。

官網文檔:https://esrally.readthedocs.io/en/latest/

然而,官網文檔中,對於離線使用的方法基本是含糊其辭,幾乎無法參考。

下面,通過實踐和摸索,介紹一下其離線使用的方法。


環境簡介:

騰訊雲主機CVM:CentOS 7.6 IP:10.0.0.15

ElasticSearch實例:ES 7.5.1 IP&PORT:10.0.0.149:9200 UserName&PassWord: elastic,QAZwsx123

安裝:

1,安裝python3

無需卸載CentOS7自帶的python2.7,直接安裝python3即可

yum install python3 python3-devel.x86_64 -y

2,下載安裝jdk 13

https://www.oracle.com/java/technologies/javase-jdk13-downloads.html

jdk_13下載001
jdk_13下載002

然後rpm安裝

rpm -ivh jdk-13.0.2_linux-x64_bin.rpm

配置環境變數,在 /etc/profile文件的末尾加入以下內容

export JAVA_HOME=/usr/java/jdk-13.0.2  export PATH=$JAVA_HOME/bin:$PATH  export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

並執行下列命令使環境變數生效

source /etc/profile

3,安裝 git 1.9以後的版本(略)

注意:需刪除CentOS7自帶的git 1.8版本。

4,安裝esrally

執行下列命令

pip3 install esrally

5,檢查是否完成安裝

任意路徑執行下列命令

esrally configure

esrally安裝檢查

看到上圖,即表示安裝完成了。

常規在線使用

特點:先下載數據集,然後解壓,再進行壓測,耗時非常久,動輒2-3小時甚至更久

最令人頭疼的是,每次運行,都要重新在線下載。

任意路徑下執行下列命令,等待結果即可(我們默認使用數據集 geonames)

esrally race --pipeline=benchmark-only --target-hosts=10.0.0.145:9200 --track=geonames  --client-options="basic_auth_user:'elastic',basic_auth_password:'QAZwsx123'" --challenge=append-no-conflicts

常規在線使用方法

離線使用

1,手工下載數據集

我們依舊以 geonames 數據集為例

我們在elastic官網github上可以看到esrally的數據集相關描述 https://github.com/elastic/rally-tracks

通過查看 rally-tracks/download.sh,我們可以看到,所有數據源都是從一台亞馬遜主機上下載的

亞馬遜主機地址

通過閱讀程式碼,我們知道:數據集的主路徑在 http://benchmarks.elasticsearch.org.s3.amazonaws.com/corpora

通過查看 rally-tracks/geonames/files.txt文件,我們知道了geonames的數據集名稱叫 documents-2.json.bz2 和 documents-2-1k.json.bz2 。

geonames數據集文件描述

因此,我們嘗試組合上述地址,使用瀏覽器訪問:

http://benchmarks.elasticsearch.org.s3.amazonaws.com/corpora/geonames/documents-2.json.bz2

開始下載geonames數據集

我們發現,數據集可以下載了。

同理,其他數據集,也可以通過這種方式進行手工下載。

2,數據集配置

此小節依舊以geonames為例。

數據集下載完成後,需要放置在CentOS的如下路徑,若沒有geonames路徑,則手工創建:

離線數據配置

3,使用離線數據進行壓測

任意路徑執行下列命令(務必在命令最後使用 –offline參數):

esrally race --pipeline=benchmark-only --target-hosts=10.0.0.145:9200 --track=geonames  --client-options="basic_auth_user:'elastic',basic_auth_password:'QAZwsx123'" --challenge=append-no-conflicts  --offline

離線壓測開始

如上圖,離線壓測直接開始,無需漫長的等待。

當然,這一系列的操作,目的是為了,下次進行壓測時,直接可以使用上面離線數據,而無需漫長地等待在線下載了。

最後,我們可以看到壓測過程如下圖。

esrally使用離線數據壓測過程圖

【全文完】