使用docker安装部署elasticsearch,并持久化到容器卷

使用docker安装部署elasticsearch,并持久化到容器卷

1.拉取Elasticsearch Docker镜像

在终端中执行以下命令来从Docker Hub拉取特定版本(如8.2.0)的Elasticsearch镜像。请确保你的网络连接正常,并且Docker已经在你的机器上安装并正确配置。

# 从Docker Hub拉取版本为8.2.0的Elasticsearch镜像
docker pull elasticsearch:8.2.0
# 查看镜像列表
docker images

image-20231211154318061

2.创建挂载目录

执行以下命令在本地创建文件夹,用于持久化 Elasticsearch 的数据和配置。

# 创建用于数据持久化的文件夹
mkdir -p /mydata/es/data 

# 创建用于存储 Elasticsearch 插件的文件夹
mkdir -p /mydata/es/plugins

# 创建用于存储 Elasticsearch 日志的文件夹
mkdir -p /mydata/es/logs

# 创建用于存储 Elasticsearch 配置的文件夹
mkdir -p /mydata/es/config

如果上述文件夹创建成功,但在运行时遇到权限问题,请尝试使用sudo或者更改这些文件夹的权限。

3.创建并运行 Elasticsearch 容器

# 创建并运行一个名为 "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

如果命令执行成功,它将返回一个容器 ID。否则,它可能会抛出一个错误消息。确保你的Docker具有运行新容器所需的资源和权限

4.开启防火墙端口

在 CentOS 7.4 或其他使用 firewalld 进程管理的系统上,可以使用以下命令开启防火墙端口9200和9300:
ps:云服务器需要放开对应的安全组

# 开启防火墙端口9200
firewall-cmd --zone=public --add-port=9200/tcp --permanent

# 开启防火墙端口9300
firewall-cmd --zone=public --add-port=9300/tcp --permanent

# 重新加载防火墙配置使更改生效
firewall-cmd --reload

这些命令需要以 root 用户或带有适当权限的用户执行,并确保 firewalld 服务正在运行。如果返回 “success”,则说明操作成功。如果失败,可能需要检查你的 firewalld 进程状态或命令的语法是否正确。

访问服务器Ip:9200端口

image-20231211162809839

5.配置数据和配置的持久化

在这一步中,我们将从运行的 Elasticsearch 容器中复制数据到本地已创建的文件夹中以实现持久化,然后删除原有容器,并利用本地持久化数据创建新的容器。

# 复制 Elasticsearch 容器的相关数据到本地持久化的文件夹
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

# 利用本地持久化数据和配置创建新的 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

访问服务器Ip:9200端口

image-20231211162809839

6.配置IK分词器

1.你可以从IK分词器的官方Github仓库上下载与当前版本相同的分词器,然后解压上传到/mydata/es/plugins文件夹中,最后重启Elasticsearch容器。
ik分词器下载地址:https://github.com/medcl/elasticsearch-analysis-ik/
2.使用命令,进入docker 容器内直接下载

#进入es容器 -u root 以root用户进入,防止执行命令命令权限不足
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容器以应用新配置
docker restart es

7.容易出现问题

1):访问服务器Ip:9200端口 访问不到,但是端口也都开放了,云服务器防火墙也开放了

原因可能是

config下es配置文件elasticsearch.yml,中设置为

xpack.security.http.ssl:
  enabled: true

这个用于设置HTTP API客户端连接的SSL/TLS加密。enabled: false,表示启用HTTP API的SSL/TLS加密。

也就是需要https访问 解决方式xpack.security.http.ssl.enabled: false关闭ssl加密

xpack.security.http.ssl:
  enabled: false

2):访问服务器Ip:9200端口可以访问但是需要输入密码,解决方式

方法1.关闭xpack

xpack.security.enabled: false

方法2.使用密码登录

#进入es容器
docker exec -it es /bin/bash
#生成用户elastic密码
elasticsearch-reset-password -u elastic

new value:后就是用户elastic的密码
在这里插入图片描述

#es修改密码
./bin/elasticsearch-reset-password --username elastic -i

在这里插入图片描述

  • 10
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值