欢迎访问我的GitHub
这里分类和汇总了欣宸的全部原创(含配套源码):https://github.com/zq2599/blog_demos
本篇概览
- 本篇记录了用docker搭建ElasticSearch8单机版再扩容的过程,既留给自己后面反复使用,也可以为正在部署环境的读者提供一些参考
- 请注意docker部署ElasticSearch的适用场景:我这边只是在开发过程中使用,这种方式在生产环境是否适合是有待商榷的,在用于生产环境时请慎重考虑
- 本篇由以下内容构成
- 介绍本次实战的环境和版本信息
- 快速部署
- 验证功能
- 新加节点
- 一些常用操作介绍
环境信息
- 以下是本次实战的环境信息,可以作为参考
- 操作系统:macOS Monterey(M1 Pro芯片的MacBook Pro,16G内存)
- Docker:Docker Desktop 4.7.1 (77678)
- ElasticSearch:8.2.2
- Kibana:8.2.2
准备工作
- 首先是docker镜像加速,没有加速手段的下载镜像体验会很差,我这边里用的是七牛的镜像加速(https://reg-mirror.qiniu.com),您可以按个人喜好自行配
- 如果您的环境是Linux,注意要做以下操作,否则es可能会启动失败
1 用编辑工具打开文件/etc/sysctl.conf
2 在尾部添加一行配置vm.max_map_count = 262144,如果已存在就修改,数值不能低于262144
3 修改保存,然后执行命令sudo sysctl -p使其立即生效
部署es
- 先创建一个docker网络
docker network create elastic
- 创建es容器,若本地没有镜像会自动下载,为了省内存,我这里设置ES容器内的java进程只用到1024M内存,您可以根据自己电脑情况调整
docker run \
--name es01 \
--net elastic \
-p 9200:9200 \
-e ES_JAVA_OPTS="-Xms1024m -Xmx1024m" \
-idt elasticsearch:8.2.2
- 进入容器
docker exec -it es01 /bin/bash
- 重置密码
bin/elasticsearch-reset-password -u elastic
- 提示是否重置,输入y,控制台会打印新密码,请记住这个密码,稍后要用到
Password for the [elastic] user successfully reset.
New value: 3_J35UWr2sIUkyxxxxxx
- 现在验证elastic能否正常响应
- 在chrome浏览器的地址栏输入https://localhost:9200
- 此时浏览器会弹出安全提示,如下图,这时候不要用鼠标去点任何地方,直接在键盘上输入thisisunsafe,然后回车
- 接下来就会弹出登录页面了,如下图,填写账号elastic,密码是刚才控制台返回的
- 如果看到以下信息,证明es启动成功
- 如果您在chrome上安装了ElasticSearch Head插件(没错,是chrome浏览器插件),此时已经可以访问es服务了,如下图
- es已经就绪,接下来是kibana
部署和操作kibana
- 一行命令完成部署
docker run \
--name kibana \
--net elastic \
-p 5601:5601 \
-idt kibana:8.2.2
- 生成token,kibana连接es的时候要用到
docker exec -it es01 /usr/share/elasticsearch/bin/elasticsearch-create-enrollment-token -s kibana
- 控制台会生成一长串文本,请保存下来,这是稍后给kibana用来连接es的token
- 浏览器访问http://localhost:5601/,会弹出输入窗口,如下图,在文本框内输入刚才生成的token内容,再点击Configure Elastic按钮
- 然后弹出个输入验证码的页面
- 在控制台输入以下命令,顺利拿到验证码
docker exec -it kibana bin/kibana-verification-code
- 回到网页输入验证码,可以看到初始化页面
- 接下来就是常规的安全登录了,如下图,输入es的账号密码即可登录成功
- 登录成功,下图选择右边的Explore on my own
- eshead显示新增了一些kibana自用的索引
集群扩容
- 目前es服务是单节点,有时候需要对单节点进行扩容,加入新的机器以提升es服务的性能、存储、可用性等,docker下可以很方便的进行扩容,接下来一起试试
- 与kibana能够访问es类似,新机器加入当前es服务也需要授权token,生成token的命令如下,请在控制台执行
docker exec -it es01 /usr/share/elasticsearch/bin/elasticsearch-create-enrollment-token -s node
- 拿到控制台生产的token后(30分钟有效期),执行以下命令即可创建一个新的es容器,与原先的es组成集群,原有的数据会保留,注意将xxxxxx替换成刚刚生成的token
docker run \
-e ENROLLMENT_TOKEN="xxxxxx" \
-e ES_JAVA_OPTS="-Xms1024m -Xmx1024m" \
--name es02 \
--net elastic \
-idt elasticsearch:8.2.2
- 在eshead上可以看到新增的节点
- 至此,kibana部署完成,接下来可以做一些CRUD的基本操作,新手可用来快速了解es基本操作,老司机可以直接跳过了
实战es操作:命令行操作
-
咱们先用命令行做一些最基本的操作,然后再考虑用kibana
-
由于es开方的https服务,所以首先把证书从容器中导出来,后面的curl请求都要指定这个证书
docker cp es01:/usr/share/elasticsearch/config/certs/http_ca.crt .
- 当前目录下新增名为http_ca.crt的文件,就是安全证书了,试试能不能用,控制台输入以下命令,注意把xxxxxx换成您自己的密码
curl --cacert http_ca.crt -u elastic:xxxxxx https://localhost:9200
- 控制台输出以下信息,证明外部访问es已经成功
? curl --cacert http_ca.crt -u elastic:xxxxxx https://localhost:9200
{
"name" : "279acdab6c7f",
"cluster_name" : "docker-cluster",
"cluster_uuid" : "whfRDTzCQym_jwx2OrMg