前言
1. 華為云X實(shí)例介紹及優(yōu)勢(shì)
1.1 柔性算力
1.2 vCPU和內(nèi)存的靈活配比
1.3 成本效益與性能
2. 安裝并運(yùn)行 Docker
2.1 修改倉(cāng)庫(kù)配置文件
2.2 安裝 Docker
2.3 啟動(dòng) Docker
3. 使用Docker部署Elasticsearch
3.1 拉取Elasticsearch鏡像
3.2 啟動(dòng)Elasticsearch容器
3.3 驗(yàn)證Elasticsearch
4. 安裝Apache Benchmark (ab) 工具
5. 使用 ab 工具對(duì) Elasticsearch 進(jìn)行評(píng)測(cè)
5.1 運(yùn)行 Elasticsearch 查詢(xún)?cè)u(píng)測(cè)
5.2 查看評(píng)測(cè)結(jié)果
5.3 調(diào)整并發(fā)請(qǐng)求和請(qǐng)求數(shù)
6. 總結(jié)
前言
隨著數(shù)據(jù)量的不斷增加,企業(yè)對(duì)高效搜索和數(shù)據(jù)分析的需求也在快速增長(zhǎng)。Elasticsearch 作為一款分布式的全文搜索引擎,因其高性能和可擴(kuò)展性,廣泛應(yīng)用于大數(shù)據(jù)場(chǎng)景。在本篇文章中,我將介紹如何在華為云上通過(guò) Docker 容器化部署 Elasticsearch,并通過(guò)工具對(duì)其進(jìn)行性能評(píng)測(cè)。整篇文章將涵蓋從環(huán)境準(zhǔn)備、部署、到性能評(píng)測(cè)的詳細(xì)步驟和代碼示例,幫助讀者在華為云上快速搭建一個(gè)高效的 Elasticsearch 系統(tǒng)。
1. 華為云 X 實(shí)例介紹及優(yōu)勢(shì)
在選擇云服務(wù)平臺(tái)時(shí),計(jì)算資源的彈性和性?xún)r(jià)比是關(guān)鍵考慮因素。華為云 X 實(shí)例是為用戶(hù)提供高性?xún)r(jià)比和靈活資源調(diào)配能力的云計(jì)算服務(wù),特別適合計(jì)算密集型任務(wù),如大數(shù)據(jù)處理、AI 訓(xùn)練以及像 Elasticsearch 這樣的分布式搜索引擎。
1.1 柔性算力
華為云 X 實(shí)例采用了柔性算力的設(shè)計(jì)理念。所謂柔性算力,即用戶(hù)可以根據(jù)具體的業(yè)務(wù)需求,在計(jì)算能力、存儲(chǔ)容量和帶寬等資源之間進(jìn)行靈活調(diào)配。這意味著,用戶(hù)在運(yùn)行 Elasticsearch 等應(yīng)用時(shí),可以根據(jù)數(shù)據(jù)增長(zhǎng)或查詢(xún)量的變化,動(dòng)態(tài)調(diào)整資源,確保性能需求得到滿(mǎn)足。
1.2 vCPU 和內(nèi)存的靈活配比
X 實(shí)例允許用戶(hù)靈活配置 vCPU 與內(nèi)存的比例,從而根據(jù)不同負(fù)載場(chǎng)景進(jìn)行優(yōu)化。例如,在 Elasticsearch 集群中,索引和搜索任務(wù)的負(fù)載不同,可能需要更高的內(nèi)存或計(jì)算能力。通過(guò)在 X 實(shí)例中調(diào)整 vCPU 與內(nèi)存的配比,用戶(hù)可以避免資源浪費(fèi),提高成本效益。
1.3 成本效益與性能
在高性?xún)r(jià)比方面,華為云 X 實(shí)例提供了更具競(jìng)爭(zhēng)力的價(jià)格,特別是對(duì)于那些對(duì)資源需求波動(dòng)較大的工作負(fù)載,如 Elasticsearch 的動(dòng)態(tài)索引和查詢(xún)工作。結(jié)合彈性擴(kuò)展能力,用戶(hù)可以在不犧牲性能的前提下,大幅降低運(yùn)行成本。此外,X 實(shí)例支持不同的計(jì)費(fèi)模式,用戶(hù)可以按需付費(fèi)或選擇包年包月等多種付費(fèi)方式,從而進(jìn)一步提升云上計(jì)算資源的利用效率。
近期華為云推出了優(yōu)惠活動(dòng),X 實(shí)例服務(wù)器的折扣力度非常大,性能與性?xún)r(jià)比兼具,特別適合開(kāi)發(fā)者進(jìn)行各種項(xiàng)目部署和測(cè)試,歡迎大家抓住機(jī)會(huì)體驗(yàn)。
2. 安裝并運(yùn)行 Docker
在開(kāi)始部署之前,確保您已經(jīng)在華為云上創(chuàng)建了一個(gè) X 實(shí)例服務(wù)器,并安裝了 Docker。以下是需要準(zhǔn)備的內(nèi)容:
2.1 修改倉(cāng)庫(kù)配置文件
如果在添加 Docker 倉(cāng)庫(kù)時(shí)出現(xiàn)錯(cuò)誤,需手動(dòng)下載并修改倉(cāng)庫(kù)文件。執(zhí)行以下命令下載倉(cāng)庫(kù)文件:
wget https://repo.huaweicloud.com/docker-ce/linux/centos/docker-ce.repo -P /usr/local/docker
打開(kāi)文件并將 $releasever 替換為 7:
vi /usr/local/docker/docker-ce.repo:%s/$releasever/7/g
重新添加倉(cāng)庫(kù):
yum-config-manager --add-repo /usr/local/docker/docker-ce.repo
2.2 安裝 Docker
安裝 Docker 及相關(guān)組件:
yum install -y docker-ce docker-ce-cli containerd.io
2.3 啟動(dòng) Docker
安裝完成后,啟動(dòng) Docker 服務(wù):
systemctl start docker
使用以下命令確認(rèn) Docker 正常運(yùn)行:
systemctl status docker
3. 使用 Docker 部署 Elasticsearch
部署 Elasticsearch 的方式有很多種,使用 Docker 可以方便地管理其容器化進(jìn)程,并快速擴(kuò)展。接下來(lái)我們將拉取 Elasticsearch 鏡像,并通過(guò) Docker 啟動(dòng)容器。
3.1 拉取 Elasticsearch 鏡像
執(zhí)行以下命令從 Docker Hub 上獲取 Elasticsearch 官方鏡像:
docker pull elasticsearch:7.16.2
3.2 啟動(dòng) Elasticsearch 容器
在啟動(dòng)容器之前,我們可以通過(guò)指定一些環(huán)境變量來(lái)配置 Elasticsearch。以下是一個(gè)啟動(dòng) 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
上述命令解釋?zhuān)?/p>
·-p 9200:9200:將主機(jī)的 9200 端口映射到容器的 9200 端口(用于 HTTP 訪(fǎng)問(wèn))。
·-p 9300:9300:將主機(jī)的 9300 端口映射到容器的 9300 端口(用于集群通信)。
·-e "discovery.type=single-node":指定 Elasticsearch 為單節(jié)點(diǎn)模式。
·-e "ES_JAVA_OPTS=-Xms4g -Xmx4g":設(shè)置 JVM 內(nèi)存分配為 4GB。
·-v es_data:/usr/share/elasticsearch/data:將 Elasticsearch 的數(shù)據(jù)存儲(chǔ)映射到 Docker 卷 es_data 中。
啟動(dòng)后,您可以通過(guò)以下命令查看容器狀態(tài):
docker ps
如果 Elasticsearch 啟動(dòng)成功,您應(yīng)該能夠看到容器在運(yùn)行。
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 驗(yàn)證 Elasticsearch
您可以通過(guò)瀏覽器或 curl 命令訪(fǎng)問(wèn) Elasticsearch 的 REST API 接口,驗(yàn)證其是否正常啟動(dòng):
curl -X GET "localhost:9200/"
如果部署成功,您將得到類(lèi)似以下的 JSON 響應(yīng):
{"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(簡(jiǎn)稱(chēng) ab)是 Apache HTTP Server 附帶的一個(gè)命令行工具,常用于對(duì) HTTP 服務(wù)的性能進(jìn)行測(cè)試。由于 Elasticsearch 的 REST API 是基于 HTTP 協(xié)議的,因此可以使用 ab 工具對(duì)其進(jìn)行簡(jiǎn)單的壓力測(cè)試。
大多數(shù) Linux 系統(tǒng)自帶 ab 工具,如果沒(méi)有安裝 Apache,可以通過(guò)以下命令安裝:
sudo yum install httpd-tools
安裝完成后,可以通過(guò)以下命令驗(yàn)證 ab 是否安裝成功:
ab -V
如果返回版本號(hào),則表示安裝成功。
5. 使用 ab 工具對(duì) Elasticsearch 進(jìn)行評(píng)測(cè)
ab (Apache Benchmark) 工具通過(guò)向指定 URL 發(fā)送多個(gè) HTTP 請(qǐng)求,統(tǒng)計(jì)響應(yīng)時(shí)間、吞吐量等性能指標(biāo),幫助評(píng)估服務(wù)器的性能。對(duì)于 Elasticsearch 集群,可以使用 ab 工具測(cè)試查詢(xún)請(qǐng)求的性能,如數(shù)據(jù)檢索的響應(yīng)時(shí)間和吞吐量等。
5.1 運(yùn)行 Elasticsearch 查詢(xún)?cè)u(píng)測(cè)
以下是使用 ab 工具對(duì) Elasticsearch 進(jìn)行查詢(xún)性能評(píng)測(cè)的步驟:
確定查詢(xún) URL先確定需要測(cè)試的 Elasticsearch 查詢(xún)請(qǐng)求。假設(shè) Elasticsearch 運(yùn)行在 localhost:9200,并且索引為 blog01,可以使用以下命令執(zhí)行簡(jiǎn)單的搜索請(qǐng)求:
curl -XGET http://localhost:9200/blog01/article/1?pretty
這將返回 id 字段為 1 的文章數(shù)據(jù)。
運(yùn)行 ab 測(cè)試使用 ab 工具對(duì)上述 URL 進(jìn)行壓力測(cè)試,模擬多個(gè)并發(fā)查詢(xún)請(qǐng)求。例如,以下命令發(fā)出 1000 個(gè)請(qǐng)求,允許最多 10 個(gè)并發(fā)請(qǐng)求:
ab -n 1000 -c 10 http://localhost:9200/blog01/article/_search?q=id:1
參數(shù)說(shuō)明:
·-n 1000:總共發(fā)出 1000 個(gè) HTTP 請(qǐng)求。
·-c 10:最多允許 10 個(gè)并發(fā)請(qǐng)求。
5.2 查看評(píng)測(cè)結(jié)果
ab 工具的評(píng)測(cè)結(jié)果包括以下關(guān)鍵指標(biāo):
·Requests per second:每秒處理的請(qǐng)求數(shù),即吞吐量。
·Time per request:每個(gè)請(qǐng)求的平均處理時(shí)間(延遲)。
·Transfer rate:數(shù)據(jù)傳輸速度。
示例輸出如下:
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 服務(wù)器每秒處理約 1390 個(gè)請(qǐng)求,說(shuō)明在 10 個(gè)并發(fā)請(qǐng)求下,系統(tǒng)的吞吐量較高。
·Time per request (7.197 ms)表示平均每個(gè)請(qǐng)求處理時(shí)間約為 7 毫秒,說(shuō)明延遲較低,系統(tǒng)能快速響應(yīng)。
·Failed requests (1)表示在 1000 次請(qǐng)求中只有 1 次失敗,服務(wù)器在高并發(fā)下的穩(wěn)定性較好。
5.3 調(diào)整并發(fā)請(qǐng)求和請(qǐng)求數(shù)
可以通過(guò)調(diào)整-n 和 -c 參數(shù),測(cè)試不同規(guī)模的壓力場(chǎng)景。比如,以下命令模擬 100 個(gè)并發(fā)請(qǐng)求,共發(fā)出 5000 個(gè)請(qǐng)求:
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 并發(fā)請(qǐng)求下,Requests per second達(dá)到 3070.79,說(shuō)明系統(tǒng)在高并發(fā)場(chǎng)景下吞吐量顯著提高。
·Time per request增至 32 毫秒,說(shuō)明在更高并發(fā)情況下,系統(tǒng)的響應(yīng)時(shí)間有所增加,但仍在可接受范圍內(nèi)。
通過(guò)這種壓力測(cè)試,可以了解 Elasticsearch 在不同并發(fā)請(qǐng)求下的性能表現(xiàn),并為實(shí)際應(yīng)用中的優(yōu)化提供依據(jù)。
6. 總結(jié)
通過(guò) Apache Benchmark 工具,您可以快速對(duì) Elasticsearch 集群的查詢(xún)性能進(jìn)行壓力測(cè)試。該工具簡(jiǎn)單易用,能夠提供基本的吞吐量、延遲和失敗請(qǐng)求等指標(biāo)。它適用于對(duì) HTTP 層的簡(jiǎn)單壓力測(cè)試,幫助用戶(hù)初步了解集群的性能狀況。
審核編輯 黃宇
-
Docker
+關(guān)注
關(guān)注
0文章
515瀏覽量
12977 -
華為云
+關(guān)注
關(guān)注
3文章
2772瀏覽量
18326
發(fā)布評(píng)論請(qǐng)先 登錄
干貨分享 | RK3588 Ubuntu系統(tǒng)Docker容器使用指南

如何使用Docker部署大模型
華為云 X 實(shí)例部署 Docker 應(yīng)用的性能評(píng)測(cè)優(yōu)化與實(shí)踐指南

華為 FlexusX 與 Docker+Nginx 的高效整合之路

解鎖電商新境界,在華為云 Flexus 上快速部署并運(yùn)行 Magento 電商系統(tǒng)

解鎖高效項(xiàng)目管理,Zentao 在華為云 Flexusx 容器化部署與應(yīng)用指南

華為云 Flexus 云服務(wù)器 X 實(shí)例之 openEuler 系統(tǒng)部署 Docker Compose 管理工具 Dockge

基于 Docker 與 Jenkins 實(shí)現(xiàn)自動(dòng)化部署

在華為云 FlexusX 實(shí)例上實(shí)現(xiàn) Docker 容器的實(shí)時(shí)監(jiān)控與可視化分析

云端安全守護(hù)者,華為云 Flexusx 上的 AWVS 容器化部署與安全掃描實(shí)踐

華為云 Flexus 云服務(wù)器 X 實(shí)例之 openEuler 系統(tǒng)下玩轉(zhuǎn) iSulad 容器技術(shù)

在 Huawei Cloud EulerOS 系統(tǒng)中安裝 Docker 的詳細(xì)步驟與常見(jiàn)問(wèn)題解決

docker和k8s部署在云平臺(tái)性能要求盤(pán)點(diǎn)
使用OpenVINO Model Server在哪吒開(kāi)發(fā)板上部署模型

評(píng)論