Elasticsearch容器化部署

Elasticsearch標(biāo)準(zhǔn)軟件基于Bitnami Elasticsearch 構(gòu)建。當(dāng)前版本為8.11.3

你可以通過輕云UC部署工具直接安裝部署,也可以手動按如下文檔操作,該項目已經(jīng)全面開源,可以從如下環(huán)境獲取 配置文件地址: https://gitee.com/qingplus/qingcloud-platform

qinghub自動安裝部署配置庫

簡介

Elasticsearch是一個分布式、可擴(kuò)展、實時的搜索與數(shù)據(jù)分析引擎。它不僅僅只是全文搜索,還支持結(jié)構(gòu)化搜索、數(shù)據(jù)分析、復(fù)雜的語言處理、地理位置和對象間關(guān)聯(lián)關(guān)系等。ES也是使用Java編寫的,ES的底層依賴Lucene,它的內(nèi)部使用Lucene做索引與搜索,它的目的是隱藏Lucene的復(fù)雜性,取而代之的提供一套簡單一致的Restful API。

初始化一個新實例

使用Docker 容器網(wǎng)絡(luò),應(yīng)用程序容器可以輕松訪問容器內(nèi)運行的 Elasticsearch 服務(wù)器。

連接到同一網(wǎng)絡(luò)的容器可以使用容器名稱作為主機(jī)名來相互通信。

使用命令行

第 1 步:創(chuàng)建網(wǎng)絡(luò)

docker network create app-tier --driver bridge

第 2 步:啟動 Elasticsearch 服務(wù)器實例

docker run 添加命令--network app-tier的參數(shù), 將elasticsearch-server容器連接到網(wǎng)絡(luò)app-tier。

docker run -d --name elasticsearch-server \

? ? --network app-tier \

? ? registry.cn-hangzhou.aliyuncs.com/qingcloudtech/elasticsearch:latest

第 3 步:啟動應(yīng)用程序容器

docker run -d --name myapp \

? ? --network app-tier \

? ? YOUR_APPLICATION_IMAGE

重要

注意替換YOUR_APPLICATION_IMAGE_占位符

在容器中,使用主機(jī)名elasticsearch-server連接到 Elasticsearch 服務(wù)器

使用 Docker Compose 文件

如果未指定,Docker Compose 會自動設(shè)置一個新網(wǎng)絡(luò)并將所有已部署的服務(wù)附加到該網(wǎng)絡(luò)。但是我們將顯式定義一個bridge名為app-tier的新網(wǎng)絡(luò)。在此示例中,我們假設(shè)您希望從您自己的自定義應(yīng)用程序映像連接到 Elasticsearch 服務(wù)器,該映像在以下代碼段中通過服務(wù)名稱進(jìn)行標(biāo)識myapp。

version: '2'

networks:

? app-tier:

? ? driver: bridge

services:

? elasticsearch:

? ? image: 'registry.cn-hangzhou.aliyuncs.com/qingcloudtech/elasticsearch:latest'

? ? networks:

? ? ? - app-tier

? myapp:

? ? image: 'YOUR_APPLICATION_IMAGE'

? ? networks:

? ? ? - app-tier

重要

注意替換YOUR_APPLICATION_IMAGE_占位符

在容器中,使用主機(jī)名elasticsearch-server連接到 Elasticsearch 服務(wù)器

使用以下命令啟動容器:

docker-compose up -d

配置

環(huán)境變量

當(dāng)您啟動elasticsearch鏡像時,您可以通過在docker-compose文件或docker run命令行上傳遞一個或多個環(huán)境變量來調(diào)整實例的配置。

對于 Docker Compose,在應(yīng)用程序部分下添加變量名稱和值:

elasticsearch:

? ...

? environment:

? ? - ELASTICSEARCH_PORT_NUMBER=9201

? ...

...

對于手動執(zhí)行,增加-e為每個變量和值添加一個選項:

$ docker run -d --name elasticsearch \

? ? -p 9201:9201 --network=elasticsearch_network \

? ? -e ELASTICSEARCH_PORT_NUMBER=9201 \

? ? -v /path/to/elasticsearch-data-persistence:/bitnami/elasticsearch/data \

? ? registry.cn-hangzhou.aliyuncs.com/qingcloudtech/elasticsearch

可用變量:

BITNAMI_DEBUG:增加初始化日志的詳細(xì)程度。默認(rèn)false

ELASTICSEARCH_EXTRA_FLAGS:elasticsearch守護(hù)進(jìn)程的額外命令行參數(shù)

ELASTICSEARCH_CLUSTER_NAME:Elasticsearch 集群名稱。默認(rèn)值:elasticsearch-cluster

ELASTICSEARCH_CLUSTER_HOSTS:用于設(shè)置集群的elasticsearch主機(jī)列表??捎玫姆指舴麨椤?”、“,”和“;”。沒有默認(rèn)值。

ELASTICSEARCH_CLUSTER_MASTER_HOSTS:符合elasticsearch master資格的主機(jī)列表??捎玫姆指舴麨椤?”、“,”和“;”。如果未提供任何值,它將具有與 相同的值ELASTICSEARCH_CLUSTER_HOSTS。

ELASTICSEARCH_IS_DEDICATED_NODE:Elasticsearch 節(jié)點充當(dāng)“專用節(jié)點”。默認(rèn)值:false

ELASTICSEARCH_NODE_TYPE:充當(dāng)“專用節(jié)點”時的 Elasticsearch 節(jié)點類型。有效值:master、data、coordinating或ingest。

ELASTICSEARCH_NODE_NAME:Elasticsearch 節(jié)點名稱。沒有默認(rèn)值。

ELASTICSEARCH_BIND_ADDRESS:Elasticsearch 綁定的地址/接口。默認(rèn)值:0.0.0.0

ELASTICSEARCH_PORT_NUMBER:Elasticsearch 端口。默認(rèn)值:9200

ELASTICSEARCH_NODE_PORT_NUMBER:Elasticsearch 節(jié)點到節(jié)點端口。默認(rèn)值:9300

ELASTICSEARCH_PLUGINS:逗號、分號或空格分隔的初始化時安裝的插件列表。沒有默認(rèn)值。

ELASTICSEARCH_KEYS:要存儲的以逗號、分號或空格分隔的鍵值對 (key=value) 列表。沒有默認(rèn)值。

ELASTICSEARCH_HEAP_SIZE:用于 Xmx 和 Xms java 堆值的內(nèi)存。默認(rèn)值:1024m

ELASTICSEARCH_FS_SNAPSHOT_REPO_PATH:Elasticsearch 文件系統(tǒng)快照存儲庫路徑。沒有默認(rèn)值。

ELASTICSEARCH_DATA_DIR_LIST:逗號、分號或空格分隔的用于數(shù)據(jù)存儲的目錄列表。沒有默認(rèn)值。

設(shè)置集群

可以使用以下環(huán)境變量設(shè)置集群:

ELASTICSEARCH_CLUSTER_NAME:Elasticsearch 集群名稱。默認(rèn)值:elasticsearch-cluster

ELASTICSEARCH_CLUSTER_HOSTS:用于設(shè)置集群的elasticsearch主機(jī)列表??捎玫姆指舴麨? ', ',' and ';'. No defaults.

ELASTICSEARCH_CLIENT_NODE:Elasticsearch 節(jié)點充當(dāng) Kibana 應(yīng)用程序的“智能路由器”。默認(rèn)值:false

ELASTICSEARCH_NODE_NAME:Elasticsearch 節(jié)點名稱。沒有默認(rèn)值。

ELASTICSEARCH_MINIMUM_MASTER_NODES:法定人數(shù)的最小 Elasticsearch 主節(jié)點。沒有默認(rèn)值。 對于較大的集群,您可以使用以下環(huán)境變量設(shè)置dedicated nodes:

ELASTICSEARCH_IS_DEDICATED_NODE:Elasticsearch 節(jié)點充當(dāng)dedicated nodes。默認(rèn)值: no

ELASTICSEARCH_NODE_TYPE:充當(dāng)dedicated nodes時的 Elasticsearch 節(jié)點類型。有效值:master, data, coordinating or ingest。

ELASTICSEARCH_CLUSTER_MASTER_HOSTS:符合elasticsearch master資格的主機(jī)列表。可用的分隔符為' ', ',' , ';'。如果未提供任何值,它將具有與ELASTICSEARCH_CLUSTER_HOSTS相同的值。

第 1 步:創(chuàng)建新網(wǎng)絡(luò)

docker network create elasticsearch_network

步驟2:創(chuàng)建第一個節(jié)點

docker run --name elasticsearch-node1 \

? --net=elasticsearch_network \

? -p 9200:9200 \

? -e ELASTICSEARCH_CLUSTER_NAME=elasticsearch-cluster \

? -e ELASTICSEARCH_CLUSTER_HOSTS=elasticsearch-node1,elasticsearch-node2 \

? -e ELASTICSEARCH_NODE_NAME=elastic-node1 \

? registry.cn-hangzhou.aliyuncs.com/qingcloudtech/elasticsearch:latest

在上面的命令中,容器被添加到elasticsearch-cluster使用ELASTICSEARCH_CLUSTER_NAME. 該ELASTICSEARCH_CLUSTER_HOSTS參數(shù)設(shè)置設(shè)置集群的節(jié)點的名稱,因此我們需要為第二個節(jié)點啟動其他容器。最后,該ELASTICSEARCH_NODE_NAME參數(shù)允許指定節(jié)點的已知名稱,否則elasticsearch將生成一個隨機(jī)名稱。

步驟 3:創(chuàng)建第二個節(jié)點

docker run --name elasticsearch-node2 \

? --link elasticsearch-node1:elasticsearch-node1 \

? --net=elasticsearch_network \

? -e ELASTICSEARCH_CLUSTER_NAME=elasticsearch-cluster \

? -e ELASTICSEARCH_CLUSTER_HOSTS=elasticsearch-node1,elasticsearch-node2 \

? -e ELASTICSEARCH_NODE_NAME=elastic-node2 \

? registry.cn-hangzhou.aliyuncs.com/qingcloudtech/elasticsearch:latest

在上面的命令中,一個新的elasticsearch節(jié)點被添加到由ELASTICSEARCH_CLUSTER_NAME指示的elasticsearch集群中。

您現(xiàn)在已經(jīng)啟動并運行了一個兩節(jié)點 Elasticsearch 集群,可以通過添加/刪除節(jié)點來擴(kuò)展該集群。

通過 Docker Compose,可以使用以下命令設(shè)置集群配置:

version: '2'

services:

? elasticsearch-node1:

? ? image: registry.cn-hangzhou.aliyuncs.com/qingcloudtech/elasticsearch:latest

? ? environment:

? ? ? - ELASTICSEARCH_CLUSTER_NAME=elasticsearch-cluster

? ? ? - ELASTICSEARCH_CLUSTER_HOSTS=elasticsearch-node1,elasticsearch-node2

? ? ? - ELASTICSEARCH_NODE_NAME=elastic-node1

? elasticsearch-node2:

? ? image: registry.cn-hangzhou.aliyuncs.com/qingcloudtech/elasticsearch:latest

? ? environment:

? ? ? - ELASTICSEARCH_CLUSTER_NAME=elasticsearch-cluster

? ? ? - ELASTICSEARCH_CLUSTER_HOSTS=elasticsearch-node1,elasticsearch-node2

? ? ? - ELASTICSEARCH_NODE_NAME=elastic-node2

配置文件

為了使用自定義配置文件而不是開箱即用的默認(rèn)配置文件,您可以創(chuàng)建一個名為的文件elasticsearch.yml并將其掛載于/opt/bitnami/elasticsearch/config/elasticsearch.yml以覆蓋默認(rèn)配置:

docker run -d --name elasticsearch \

? ? -p 9201:9201 \

? ? -v /path/to/elasticsearch.yml:/opt/bitnami/elasticsearch/config/elasticsearch.yml \

? ? -v /path/to/elasticsearch-data-persistence:/bitnami/elasticsearch/data \

? ? registry.cn-hangzhou.aliyuncs.com/qingcloudtech/elasticsearch:latest

或者通過更改docker-compose.yml文件:

elasticsearch:

? ...

? volumes:

? ? - /path/to/elasticsearch.yml:/opt/bitnami/elasticsearch/config/elasticsearch.yml

? ? - /path/to/elasticsearch-data-persistence:/bitnami/elasticsearch/data

? ...

請注意,整個配置文件將被提供的默認(rèn)配置文件替換;確保您提供的語法和字段設(shè)置正確且詳盡。

如果您寧愿擴(kuò)展而不是用您的設(shè)置替換默認(rèn)配置,請掛載自定義配置文件到容器/opt/bitnami/elasticsearch/config/my_elasticsearch.yml。

初始化一個新實例

當(dāng)容器第一次執(zhí)行時,它會執(zhí)行/docker-entrypoint-initdb.d目錄下擴(kuò)展名為.sh的文件.

為了將自定義文件放入 Docker 容器中,您可以將它們掛載為卷。

日志

docker logs elasticsearch

或使用 Docker Compose:

docker-compose logs elasticsearch

如果您希望以不同方式使用容器日志,您可以使用該選項配置容器日志記錄驅(qū)動程序。--log-driver在默認(rèn)配置中,docker 使用json-file驅(qū)動程序。

此外,如果您想修改 Elasticsearch 日志記錄配置,可以通過覆蓋該文件來完成/opt/bitnami/elasticsearch/config/log4j2.properties。該文件的語法可以在 Elasticsearch日志記錄文檔中找到。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容