ElasticSearch壓測工具:esrally離線使用詳解
- 2020 年 3 月 6 日
- 筆記
原創聲明:本文首發騰訊雲·雲+社區,未經允許,不得轉載
前言:
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


然後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

看到上圖,即表示安裝完成了。
常規在線使用
特點:先下載數據集,然後解壓,再進行壓測,耗時非常久,動輒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 。

因此,我們嘗試組合上述地址,使用瀏覽器訪問:
http://benchmarks.elasticsearch.org.s3.amazonaws.com/corpora/geonames/documents-2.json.bz2

我們發現,數據集可以下載了。
同理,其他數據集,也可以通過這種方式進行手工下載。
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

如上圖,離線壓測直接開始,無需漫長的等待。
當然,這一系列的操作,目的是為了,下次進行壓測時,直接可以使用上面離線數據,而無需漫長地等待在線下載了。
最後,我們可以看到壓測過程如下圖。

【全文完】