使用docker安裝部署elasticsearch,并持久化到容器卷
1.拉取Elasticsearch Docker鏡像
在終端中執(zhí)行以下命令來從Docker Hub拉取特定版本(如8.2.0)的Elasticsearch鏡像。請確保你的網(wǎng)絡(luò)連接正常,并且Docker已經(jīng)在你的機器上安裝并正確配置。
# 從Docker Hub拉取版本為8.2.0的Elasticsearch鏡像
docker pull elasticsearch:8.2.0
# 查看鏡像列表
docker images
2.創(chuàng)建掛載目錄
執(zhí)行以下命令在本地創(chuàng)建文件夾,用于持久化 Elasticsearch 的數(shù)據(jù)和配置。
# 創(chuàng)建用于數(shù)據(jù)持久化的文件夾
mkdir -p /mydata/es/data
# 創(chuàng)建用于存儲 Elasticsearch 插件的文件夾
mkdir -p /mydata/es/plugins
# 創(chuàng)建用于存儲 Elasticsearch 日志的文件夾
mkdir -p /mydata/es/logs
# 創(chuàng)建用于存儲 Elasticsearch 配置的文件夾
mkdir -p /mydata/es/config
如果上述文件夾創(chuàng)建成功,但在運行時遇到權(quán)限問題,請嘗試使用sudo或者更改這些文件夾的權(quán)限。
3.創(chuàng)建并運行 Elasticsearch 容器
# 創(chuàng)建并運行一個名為 "es1" 的Elasticsearch容器
docker run -d --name es1 -e "ES_JAVA_OPTS=-Xms512m -Xmx512m" -e "discovery.type=single-node" --privileged -p 9200:9200 -p 9300:9300 elasticsearch:8.2.0
如果命令執(zhí)行成功,它將返回一個容器 ID。否則,它可能會拋出一個錯誤消息。確保你的Docker具有運行新容器所需的資源和權(quán)限
4.開啟防火墻端口
在 CentOS 7.4 或其他使用 firewalld 進(jìn)程管理的系統(tǒng)上,可以使用以下命令開啟防火墻端口9200和9300:
ps:云服務(wù)器需要放開對應(yīng)的安全組
# 開啟防火墻端口9200
firewall-cmd --zone=public --add-port=9200/tcp --permanent
# 開啟防火墻端口9300
firewall-cmd --zone=public --add-port=9300/tcp --permanent
# 重新加載防火墻配置使更改生效
firewall-cmd --reload
這些命令需要以 root 用戶或帶有適當(dāng)權(quán)限的用戶執(zhí)行,并確保 firewalld 服務(wù)正在運行。如果返回 “success”,則說明操作成功。如果失敗,可能需要檢查你的 firewalld 進(jìn)程狀態(tài)或命令的語法是否正確。
訪問服務(wù)器Ip:9200端口
5.配置數(shù)據(jù)和配置的持久化
在這一步中,我們將從運行的 Elasticsearch 容器中復(fù)制數(shù)據(jù)到本地已創(chuàng)建的文件夾中以實現(xiàn)持久化,然后刪除原有容器,并利用本地持久化數(shù)據(jù)創(chuàng)建新的容器。
# 復(fù)制 Elasticsearch 容器的相關(guān)數(shù)據(jù)到本地持久化的文件夾
docker cp es1:/usr/share/elasticsearch/data/ /mydata/es/
docker cp es1:/usr/share/elasticsearch/plugins/ /mydata/es/
docker cp es1:/usr/share/elasticsearch/logs/ /mydata/es/
docker cp es1:/usr/share/elasticsearch/config/ /mydata/es/
# 刪除原 Elasticsearch 容器
docker rm -f es1
# 利用本地持久化數(shù)據(jù)和配置創(chuàng)建新的 Elasticsearch 容器
docker run -d --name es -e "ES_JAVA_OPTS=-Xms512m -Xmx512m" -e "discovery.type=single-node" -v /mydata/es/data:/usr/share/elasticsearch/data -v /mydata/es/plugins:/usr/share/elasticsearch/plugins -v /mydata/es/config:/usr/share/elasticsearch/config -v /mydata/es/logs:/usr/share/elasticsearch/logs --privileged -p 9200:9200 -p 9300:9300 elasticsearch:8.2.0
訪問服務(wù)器Ip:9200端口
6.配置IK分詞器
1.你可以從IK分詞器的官方Github倉庫上下載與當(dāng)前版本相同的分詞器,然后解壓上傳到/mydata/es/plugins文件夾中,最后重啟Elasticsearch容器。
ik分詞器下載地址:https://github.com/medcl/elasticsearch-analysis-ik/
2.使用命令,進(jìn)入docker 容器內(nèi)直接下載
#進(jìn)入es容器 -u root 以root用戶進(jìn)入,防止執(zhí)行命令命令權(quán)限不足
docker exec -it -u root es /bin/bash
#安裝ik分詞器插件
./bin/elasticsearch-plugin install https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v8.2.0/elasticsearch-analysis-ik-8.2.0.zip
最后都要重啟容器,加載分詞器插件
# 重啟Elasticsearch容器以應(yīng)用新配置
docker restart es
7.容易出現(xiàn)問題
1):訪問服務(wù)器Ip:9200端口 訪問不到,但是端口也都開放了,云服務(wù)器防火墻也開放了
原因可能是
config下es配置文件elasticsearch.yml,中設(shè)置為
xpack.security.http.ssl:
enabled: true
這個用于設(shè)置HTTP API客戶端連接的SSL/TLS加密。enabled: false
,表示啟用HTTP API的SSL/TLS加密。
也就是需要https訪問 解決方式xpack.security.http.ssl.enabled: false關(guān)閉ssl加密
xpack.security.http.ssl:
enabled: false
2):訪問服務(wù)器Ip:9200端口可以訪問但是需要輸入密碼,解決方式
方法1.關(guān)閉xpack
xpack.security.enabled: false
方法2.使用密碼登錄
#進(jìn)入es容器
docker exec -it es /bin/bash
#生成用戶elastic密碼
elasticsearch-reset-password -u elastic
new value:后就是用戶elastic的密碼文章來源:http://www.zghlxwxcb.cn/news/detail-844487.html
#es修改密碼
./bin/elasticsearch-reset-password --username elastic -i
文章來源地址http://www.zghlxwxcb.cn/news/detail-844487.html
到了這里,關(guān)于使用docker安裝部署elasticsearch,并持久化到容器卷的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!