【Docker】Elasticsearch 8.12 安装与搭建
nanshan 2025-01-13 16:32 10 浏览 0 评论
由于工作过程中硬件资源未能达到要求,现将使用 Elasticsearch 取代原 Redis + MySQL + Milvus 技术栈,在重新搭建的同时记录一下搭建过程(由于之前也分享过 Docker 版本 Elasticsearch 5.x 和 Elasticsearch 7.x 的部署方法,因此本文对分享过的内容将不再重复说明)。
1. 应用部署
虽然最终没有使用 8.14.2 版本,但考虑到实际部署跟这个过程也是大差不差的,因此这段内容还是保留吧。
第一步,先将 Elasticsearch 容器启动起来,如下图:
docker run -d -p 9200:9200 -p 9300:9300 elasticsearch:8.14.2
启动起来后可以进入容器内部将 config、data、plugins 三个目录下载到宿主机(这里为了方便使用了 Docker Desktop 来操作,在命令行下要使用 docker cp 命令进行操作),如下图:
目录下载后结构如下图所示:
如上图所示, elasticsearch.yml 和 jvm.options 可以按需进行修改(配置内容在之前文章已经说明,这里不再细说)。接着挂载目录就可以启动 Elasticsearch 容器,全部命令如下图:
docker run -d \
--privileged=true \
--name es_vct \
--network elknetwork \
-p 9200:9200 \
-p 9300:9300 \
-v ${docker_path}/elasitcsearch8/data:/usr/share/elasticsearch/data \
-v ${docker_path}/elasitcsearch8/plugins:/usr/share/elasticsearch/plugins \
-v ${docker_path}/elasitcsearch8/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml \
--restart=always \
elasticsearch:8.14.2
但是... OSX 系统在启动后会报以下错误,如下图:
2024-08-06 09:46:51 {"@timestamp":"2024-08-06T01:46:51.542Z", "log.level":"ERROR", "message":"fatal exception while booting Elasticsearch", "ecs.version": "1.2.0","service.name":"ES_ECS","event.dataset":"elasticsearch.server","process.thread.name":"main","log.logger":"org.elasticsearch.bootstrap.Elasticsearch","elasticsearch.node.name":"ff06f045201e","elasticsearch.cluster.name":"elastic_vector","error.type":"java.lang.IllegalStateException","error.message":"Plugin [.DS_Store] is missing a descriptor properties file.","error.stack_trace":"java.lang.IllegalStateException: Plugin [.DS_Store] is missing a descriptor properties file.\n\tat org.elasticsearch.server@8.14.2/org.elasticsearch.plugins.PluginDescriptor.readFromProperties(PluginDescriptor.java:233)\n\tat org.elasticsearch.server@8.14.2/org.elasticsearch.plugins.PluginsUtils.readPluginBundle(PluginsUtils.java:255)\n\tat org.elasticsearch.server@8.14.2/org.elasticsearch.plugins.PluginsUtils.findBundles(PluginsUtils.java:236)\n\tat org.elasticsearch.server@8.14.2/org.elasticsearch.plugins.PluginsUtils.getPluginBundles(PluginsUtils.java:218)\n\tat org.elasticsearch.server@8.14.2/org.elasticsearch.plugins.PluginsService.<init>(PluginsService.java:156)\n\tat org.elasticsearch.server@8.14.2/org.elasticsearch.node.NodeServiceProvider.newPluginService(NodeServiceProvider.java:54)\n\tat org.elasticsearch.server@8.14.2/org.elasticsearch.node.NodeConstruction.createEnvironment(NodeConstruction.java:451)\n\tat org.elasticsearch.server@8.14.2/org.elasticsearch.node.NodeConstruction.prepareConstruction(NodeConstruction.java:252)\n\tat org.elasticsearch.server@8.14.2/org.elasticsearch.node.Node.<init>(Node.java:192)\n\tat org.elasticsearch.server@8.14.2/org.elasticsearch.bootstrap.Elasticsearch$2.<init>(Elasticsearch.java:240)\n\tat org.elasticsearch.server@8.14.2/org.elasticsearch.bootstrap.Elasticsearch.initPhase3(Elasticsearch.java:240)\n\tat org.elasticsearch.server@8.14.2/org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:75)\n"}
2024-08-06 09:46:51 ERROR: Elasticsearch did not exit normally - check the logs at /usr/share/elasticsearch/logs/elastic_vector.log
在 github 找到了这个错误的解释,如下图:
(吐槽一下:问题是 2022 年发现的,但 2024 年还没有修复...)
我们按上述方法执行一下删除命令即可消除错误信息,如下图:
rm ${docker_path}/elasitcsearch8/plugins/.DS_Store
接着第二个问题又来了,Elasticsearch 启动到时出现卡顿,如下图:
2024-08-06 10:15:36 Aug 06, 2024 2:15:36 AM sun.util.locale.provider.LocaleProviderAdapter <clinit>
2024-08-06 10:15:36 WARNING: COMPAT locale provider will be removed in a future release
2024-08-06 10:15:36 {"@timestamp":"2024-08-06T02:15:36.723Z", "log.level": "INFO", "message":"Using [jdk] native provider and native methods for [Linux]", "ecs.version": "1.2.0","service.name":"ES_ECS","event.dataset":"elasticsearch.server","process.thread.name":"main","log.logger":"org.elasticsearch.nativeaccess.NativeAccess","elasticsearch.node.name":"86f65a8da329","elasticsearch.cluster.name":"docker-cluster"}
2024-08-06 10:15:37 {"@timestamp":"2024-08-06T02:15:37.123Z", "log.level": "INFO", "message":"Java vector incubator API enabled; uses preferredBitSize=512; FMA enabled", "ecs.version": "1.2.0","service.name":"ES_ECS","event.dataset":"elasticsearch.server","process.thread.name":"main","log.logger":"org.apache.lucene.internal.vectorization.PanamaVectorizationProvider","elasticsearch.node.name":"86f65a8da329","elasticsearch.cluster.name":"docker-cluster"}
这种“假死”情况大几率是因为配置出现问题了,重新审视一遍配置文件得知, discovery.type 并未正常配置(由于是单体服务,这里需要通过 single-node 进行表示)。
将配置加上后就可以正常启动了。
2. 8.12 版本部署并安装分词(ik)插件
启动成功后添加分词插件,到 github 仓库中找到最新的 release ,如下图:
尝试安装 8.4.1 版本后发现与目前 Elasticsearch 版本不匹配。出现以下报错:
java.lang.IllegalStateException: Plugin [ik] is missing a descriptor properties file
最后实在弄得有点儿烦了就选择了 8.12.2 版本的分词插件,而 Elasticsearch 也降级到 8.12.2 版本。
PS:这里其实我也是不太确定的,尝试了很多次还是安装不上才选择了降级。或许是当时配置也有点错误吧,8.12.2 版本能用我就没有再深究这个问题了。
8.12.2 版本部署过程其实跟 8.14.2 一致(没什么好说的)。接下来只需将分词插件放对位置就能够实现安装,如下图:
在分词插件的 github release 网页中点击打开 8.12.2 的 Assets 折叠区,并选择下载 elasticsearch-analysis-ik-8.12.2.zip 压缩包。下载完成后将其放到 ${docker_path}/elasitcsearch8/plugins 目录下并解压。解压后重命名文件夹为 analysis-ik 并删除 zip 压缩包。之后重启 Elasticsearch 容器 ik 分词插件就会自动安装,最终启动命令如下:
docker run -d \
--privileged=true \
--name elasticsearch8 \
-p 9200:9200 \
-p 9300:9300 \
-v ${docker_path}/elasitcsearch8/data:/usr/share/elasticsearch/data \
-v ${docker_path}/elasitcsearch8/plugins:/usr/share/elasticsearch/plugins \
-v ${docker_path}/elasitcsearch8/config:/usr/share/elasticsearch/config \
-v ${docker_path}/elasitcsearch8/logs:/usr/share/elasticsearch/logs \
-v /etc/localtime:/etc/localtime \
-e TZ="Asia/Shanghai" \
-e LANG="C.UTF-8" \
--restart=always \
elasticsearch:8.12.2
那么如何验证分词插件安装成功呢?
这时我在 Firefox 浏览器中安装一个 Elasticvue 插件(这个插件还挺好用),对 Elasticsearch 服务提交 REST 分词请求,如下图:
看到上面的输出就证明分词器安装成功。
3. 安装 x-pack 安全插件
这个在之前博客中已经详细说明过一次,在这里我再补充说明一下(主要是跟之前不一样的部分)。
第一步开启 xpack.security 服务,如下图:
注意, xpack 的其他服务都是 false(关闭)状态的,只有 xpack.security.enabled 是 true(开启)状态,不然启动时会报错。之后重启 Elasticsearch 容器,并进入 CLI 控制台先创建 keystore,如下图:
sh-5.0$ ./bin/elasticsearch-keystore create
An elasticsearch keystore already exists. Overwrite? [y/N]y
Created elasticsearch keystore in /usr/share/elasticsearch/config/elasticsearch.keystore
keystore 创建完成后就可以针对“elastic”用户进行 password 重置了,如下图:
sh-5.0$ elasticsearch-reset-password -i -u elastic
This tool will reset the password of the [elastic] user.
You will be prompted to enter the password.
Please confirm that you would like to
continue [y/N]y
Enter password for [elastic]:
Re-enter password for [elastic]:
Password for the [elastic] user successfully reset.
这里可以通过 elasticsearch-reset-password 直接对指定用户进行密码重置(跟之前不同的地方)。
再之后就可以创建 ca 证书了,如下图:
sh-5.0$ ./bin/elasticsearch-certutil ca
...
Please enter the desired output file [elastic-stack-ca.p12]: config/certs/elastic-stack-ca.p12
Enter password for elastic-stack-ca.p12 :
再之后就可以使用 ca 证书创建密钥,如下图:
sh-5.0$ ./bin/elasticsearch-certutil cert --ca config/certs/elastic-stack-ca.p12
...
Enter password for CA (config/certs/elastic-stack-ca.p12) :
Please enter the desired output file [elastic-certificates.p12]: config/certs/elastic-certificates.p12
Enter password for elastic-certificates.p12 :
...
For client applications, you may only need to copy the CA certificate and
configure the client to trust this certificate.
注意,这里的 ca 证书和密钥的 output 目录都是指向 config/certs 。之所以要指向这个目录是因为它已经挂载到宿主机了。万一这个容器被干掉了,还可以直接用回 ca 证书重新生成密钥。
sh-5.0$ ./bin/elasticsearch-keystore add \
> xpack.security.transport.ssl.keystore.secure_password
Enter value for xpack.security.transport.ssl.keystore.secure_password:
sh-5.0$ ./bin/elasticsearch-keystore add \
> xpack.security.transport.ssl.truststore.secure_password
Enter value for xpack.security.transport.ssl.truststore.secure_password:
最后创建安全连接的密码。
好了,密钥都创建完成了。现在只需在 elasticsearch.yml 开放所有安全校验即可,如下图:
将 transport.ssl 开启并指派密钥的地址(容器内地址),就可以重新启动 Elasticsearch 容器了。
最后使用 Elasticvue 进行测试,看到以上的输出就证明配置成功了。
相关推荐
- 三种自建KMS激活系统自动激活windows方法
-
第一种:在windows服务器上搭建主要针对vol版本(win7、win10、win20xx、win2012等等)平台:我自己搭建的windows虚拟机,windows2016的操作系统软件:...
- 重装系统被收98元?避开Windows付费陷阱的实用指南
-
重装系统被收98元?避开Windows付费陷阱的实用指南有网友反映,在重装Windows系统后,屏幕突然弹出“激活系统需支付98元服务费”的提示,疑惑自己是不是遭遇了付费陷阱。事实上,微软官方的Wi...
- Windows Server2012远程桌面服务配置和授权激活
-
安装:注意:安装完毕之后需手动重启一下计算机配置终端服务管理工具---远程桌面服务---RD授权诊断程序,查看当前服务器有没有授权授权:运行—>gpedit.msc->计算机配置---管理...
- 新书速览|Windows Server 2022 系统与网站配置实战
-
讲述桌面体验、ServerCore/NanoServer,容器与云系统的配置1本书内容《WindowsServer2022系统与网站配置实战》秉持作者一贯理论兼具实践的写作风格,以新版的Wi...
- Windows激活全攻略:KMS神钥与专业工具的完美结合!
-
对于许多Windows用户来说,系统的激活是一个必经的过程。虽然Windows操作系统在未经激活的状态下也可以使用一段时间,但长期来看,未激活的系统会限制某些功能并频繁提示用户激活。以下是两种流行的激...
- 微软Win9全新激活技术曝光(微软系统激活有什么用)
-
2014-07-0905:46:00作者:徐日俄罗斯Wzor日前披露了更多关于Windows9的最新消息,据悉,Windows9将会在今年秋季亮相,其宣传口号是“想要开始按钮和开始菜单?如你所...
- 快速激活Windows 10/11:CMD命令详细教程
-
#记录我的2024#激活Windows操作系统是确保系统功能和安全更新正常运行的重要步骤。本文将为您分享如何使用命令提示符(CMD)在Windows10和Windows11上进行激活的详细步骤。...
- Wndows 2019 RDS应用发布部署(rds的安装和应用程序的发布)
-
安装前的准备1、需要提供服务器作为应用中心,应用中心的推荐配置如下表所示。规格建议1-10人11-20人21-50人51-100人100+人CPU4核8核16核内存8GB16GB32GB64GB系统盘...
- 解决 Windows 系统激活难题(如何解决windows激活问题)
-
今天,一位朋友给我说,他手头有三台电脑,均同时弹出系统未激活的提示。他对此毫无头绪,便急忙将电脑上出现的激活提示信息一股脑发给了我。我看到其中一台显示的是“Windows10企业版LTSC尚...
- 自建KMS激活服务器(自建kms激活服务器的风险)
-
自建KMS激活服务器Win10和office安装后,都需要激活才可以使用,一般可以输入购买的MAK激活码进行在线激活,也可以通过KMS激活,网上也有很多激活工具,但这些工具一般都含有病毒或木马程序,容...
- 30秒免费激活windows和office亲测有效!
-
“第三方工具有病毒?”“KMS服务器激活总失效?”今天给大家分享一个开源激活工具——MicrosoftActivationScripts(MAS),无需密钥、不装软件,30秒永久激活Window...
- 「操作系统」Windows 10 LTSC 2019 企业版C大集成更新版
-
Windows10LTSC企业版CHIANNET集成更新优化整合多镜像版,CHIANNET,是USBOS超级PE维护盘工具箱作者,长久以来一直默默的更新着,USBOSPE软件,电脑城装机及...
- 一文看懂Windows激活:自查方法+授权类型科普(Win7/Win10通用)
-
一、如何判断Windows是否永久激活?无论是Win7还是Win10,均可通过以下方法快速验证:命令提示符法(通用):按下Win+R,输入slmgr.vbs/xpr并按回车键运行即可查看是否...
- 部分Windows Server 2019/2022用户反馈无法运行微软Teams应用
-
IT之家7月2日消息,科技媒体borncity今天(7月2日)发布博文,报道称在多个WindowsServer版本上,MicrosoftTeams应用近期出现了运行故障。用...
- 这种Windows激活方式已有20年...(windows现在激活)
-
2006年微软正式发布WindowsVista,随之而来引入了一项新的激活机制「OEM激活」,这项机制在Vista和Win7上最为流行。其实WindowsServer自2008开始至2025版本一...
你 发表评论:
欢迎- 一周热门
-
-
UOS服务器操作系统防火墙设置(uos20关闭防火墙)
-
极空间如何无损移机,新Z4 Pro又有哪些升级?极空间Z4 Pro深度体验
-
NAS:DS video/DS file/DS photo等群晖移动端APP远程访问的教程
-
手机如何设置与显示准确时间的详细指南
-
如何在安装前及安装后修改黑群晖的Mac地址和Sn系列号
-
如何修复用户配置文件服务在 WINDOWS 上登录失败的问题
-
一加手机与电脑互传文件的便捷方法FileDash
-
日本海上自卫队的军衔制度(日本海上自卫队的军衔制度是什么)
-
10个免费文件中转服务站,分享文件简单方便,你知道几个?
-
爱折腾的特斯拉车主必看!手把手教你TESLAMATE的备份和恢复
-
- 最近发表
-
- 三种自建KMS激活系统自动激活windows方法
- 重装系统被收98元?避开Windows付费陷阱的实用指南
- Windows Server2012远程桌面服务配置和授权激活
- 新书速览|Windows Server 2022 系统与网站配置实战
- Windows激活全攻略:KMS神钥与专业工具的完美结合!
- 微软Win9全新激活技术曝光(微软系统激活有什么用)
- 快速激活Windows 10/11:CMD命令详细教程
- Wndows 2019 RDS应用发布部署(rds的安装和应用程序的发布)
- 解决 Windows 系统激活难题(如何解决windows激活问题)
- 自建KMS激活服务器(自建kms激活服务器的风险)
- 标签列表
-
- linux 查询端口号 (58)
- docker映射容器目录到宿主机 (66)
- 杀端口 (60)
- yum更换阿里源 (62)
- internet explorer 增强的安全配置已启用 (65)
- linux自动挂载 (56)
- 禁用selinux (55)
- sysv-rc-conf (69)
- ubuntu防火墙状态查看 (64)
- windows server 2022激活密钥 (56)
- 无法与服务器建立安全连接是什么意思 (74)
- 443/80端口被占用怎么解决 (56)
- ping无法访问目标主机怎么解决 (58)
- fdatasync (59)
- 405 not allowed (56)
- 免备案虚拟主机zxhost (55)
- linux根据pid查看进程 (60)
- dhcp工具 (62)
- mysql 1045 (57)
- 宝塔远程工具 (56)
- ssh服务器拒绝了密码 请再试一次 (56)
- ubuntu卸载docker (56)
- linux查看nginx状态 (63)
- tomcat 乱码 (76)
- 2008r2激活序列号 (65)