欢迎访问我的GitHub

这里分类和汇总了欣宸的全部原创(含配套源码):https://github.com/zq2599/blog_demos

本篇概览

  • 本篇记录了用docker搭建ElasticSearch8单机版再扩容的过程,既留给自己后面反复使用,也可以为正在部署环境的读者提供一些参考
  • 请注意docker部署ElasticSearch的适用场景:我这边只是在开发过程中使用,这种方式在生产环境是否适合是有待商榷的,在用于生产环境时请慎重考虑
  • 本篇由以下内容构成
  1. 介绍本次实战的环境和版本信息
  2. 快速部署
  3. 验证功能
  4. 新加节点
  5. 一些常用操作介绍

环境信息

  • 以下是本次实战的环境信息,可以作为参考
  1. 操作系统:macOS Monterey(M1 Pro芯片的MacBook Pro,16G内存)
  2. Docker:Docker Desktop 4.7.1 (77678)
  3. ElasticSearch:8.2.2
  4. 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_jwx2OrMgKg",
"version" : {
"number" : "8.2.2",
"build_flavor" : "default",
"build_type" : "docker",
"build_hash" : "9876968ef3c745186b94fdabd4483e01499224ef",
"build_date" : "2022-05-25T15:47:06.259735307Z",
"build_snapshot" : false,
"lucene_version" : "9.1.0",
"minimum_wire_compatibility_version" : "7.17.0",
"minimum_index_compatibility_version" : "7.0.0"
},
"tagline" : "You Know, for Search"
}
  • 建一个索引试试,此索引名为my-book,有六个字段
curl -X PUT "https://localhost:9200/my-book?pretty" \
--cacert http_ca.crt \
-u elastic:xxxxxx \
-H 'Content-Type: application/json' \
-d'
{
"settings": {
"number_of_shards": 1
},
"mappings": {
"properties": {
"line_id": {
"type": "long"
},
"line_number": {
"type": "keyword"
},
"play_name": {
"type": "keyword"
},
"speaker": {
"type": "keyword"
},
"speech_number": {
"type": "long"
},
"text_entry": {
"type": "text"
}
}
}
}
'
  • 收到响应
{
"acknowledged" : true,
"shards_acknowledged" : true,
"index" : "my-book"
}
  • eshead插件也能看到索引创建成功

  • 用GET命令获取索引信息试试,如下,符合预期
❯ curl -X GET \
https://localhost:9200/my-book\?pretty \
--cacert http_ca.crt \
-u elastic:m9ZRFl9wCIiVkLudRopy
{
"my-book" : {
"aliases" : { },
"mappings" : {
"properties" : {
"line_id" : {
"type" : "long"
},
"line_number" : {
"type" : "keyword"
},
"play_name" : {
"type" : "keyword"
},
"speaker" : {
"type" : "keyword"
},
"speech_number" : {
"type" : "long"
},
"text_entry" : {
"type" : "text"
}
}
},
"settings" : {
"index" : {
"routing" : {
"allocation" : {
"include" : {
"_tier_preference" : "data_content"
}
}
},
"number_of_shards" : "1",
"provided_name" : "my-book",
"creation_date" : "1653811101586",
"number_of_replicas" : "1",
"uuid" : "zX8kWS_IQ-ymdI7vYLOjew",
"version" : {
"created" : "8020299"
}
}
}
}
}
curl -H 'Content-Type: application/x-ndjson' \
--cacert http_ca.crt \
-u elastic:m9ZRFl9wCIiVkLudRopy \
-s -XPOST https://localhost:9200/_bulk \
--data-binary @shakespeare_only_one_type.json
  • 导入成功后,用eshead可以看到每条记录的详细信息

  • 接下来试试kibana

操作kibana

  • 在kibana页面,点击下图红框位置,进入查询页面

  • 执行查询的操作如下

  • 看看刚刚导入了多少数据,如下图,十一万

  • 至此,基于docker部署ElasticSearch-8和Kibana-8的实战就完成了,希望本文能给您一些参考

欢迎关注博客园:程序员欣宸

学习路上,你不孤单,欣宸原创一路相伴...

Docker下elasticsearch8部署、扩容、基本操作实战(含kibana)的更多相关文章

  1. Docker Swarm从部署到基本操作

    关于Docker Swarm Docker Swarm由两部分组成: Docker集群:将一个或多个Docker节点组织起来,用户就能以集群的方式进行管理: 应用编排:有一套API用来部署和管理容器: ...

  2. Docker环境安装部署Java应用(含安装Tomcat和JDK)

    1.部署思路 两台docker机(centos 7系统),Docker 版本:18.09.6, build 481bc77156 Docker host IP:192.168.102.135 Dock ...

  3. Nginx——Docker下安装部署

    前言 Nginx 是一个高性能的 HTTP 和反向代理 web 服务器,同时也提供了 IMAP/POP3/SMTP 服务 . 一. 环境说明 docker: 18.09.9-ce nginx: 1.1 ...

  4. Zookeeper——Docker下安装部署

    单节点安装 一. 环境说明 docker: 18.09.9-ce zookeeper: 3.5.6 二. 拉取 zookeeper 镜像 拉取镜像 docker pull zookeeper 默认是摘 ...

  5. 离线环境下自动化部署python环境(含openssl)

    遇到有项目要在内网环境下安装python项目,所以空余时写了自动化部署python环境和python项目的脚本,由于项目涉密,这里仅提供自动化部署python环境的shell脚本,包括openssl的 ...

  6. docker微服务部署之:七、Rancher进行微服务扩容和缩容

    docker微服务部署之:六.Rancher管理部署微服务 Rancher有两个特色用起来很方便,那就是扩容和缩容. 一.扩容前的准备工作 为了能直观的查看效果,需要修改下demo_article项目 ...

  7. Docker下实战zabbix三部曲之二:监控其他机器

    在上一章<Docker下实战zabbix三部曲之一:极速体验>中,我们快速安装了zabbix server,并登录管理页面查看了zabbix server所在机器的监控信息,但是在实际场景 ...

  8. Docker下实战zabbix三部曲之三:自定义监控项

    通过上一章<Docker下实战zabbix三部曲之二:监控其他机器>的实战,我们了解了对机器的监控是通过在机器上安装zabbix agent来完成的,zabbix agent连接上zabb ...

  9. 设想 Docker 下部署 KVM

    设想 Docker 下部署 KVM 一.安装 $ yum -y install kvm # kvm base , must $ yum -y install libvirt -y # libvirtd ...

  10. 在Docker下部署Nginx

    在Docker下部署Nginx 在Docker下部署Nginx,包括: 部署一个最简单的Nginx,可以通过80端口访问默认的网站 设置记录访问和错误日志的路径 设置静态网站的路径 通过proxy_p ...

随机推荐

  1. 2022-02-10:k8s安装mongo,yaml如何写?

    2022-02-10:k8s安装mongo,yaml如何写? 答案2022-02-10: yaml如下: apiVersion: v1 kind: Service metadata: labels: ...

  2. AccessToken、for_user、get_token

    在Django REST framework的SimpleJWT库中,AccessToken是一个类,用于表示一个JSON Web Token (JWT)中的访问令牌部分.访问令牌是一种常见的身份验证 ...

  3. TokenObtainPairView

    TokenObtainPairView是由Django REST framework的SimpleJWT库提供的视图.它用于生成JSON Web Token(JWT)

  4. 回溯理论基础及leetcode例题

    学习参考 回溯 与递归相辅相成;回溯是递归的副产品,只要有递归就会有回溯. 回溯函数也就是递归函数,指的都是一个函数. 回溯搜索法 纯暴力搜索 解决的问题 组合问题:N个数里面按一定规则找出k个数的集 ...

  5. windows系统下python下载与安装以及可视化工具PyCharm安装

    1.python下载 python下载官网: https://www.python.org/ http://python.p2hp.com/ 中文网 点击进入官网,进入window下载页面. http ...

  6. L1-025 正整数A+B (15 分)

    1.题目描述: 题的目标很简单,就是求两个正整数A和B的和,其中A和B都在区间[1,1000].稍微有点麻烦的是,输入并不保证是两个正整数. 输入格式: 输入在一行给出A和B,其间以空格分开.问题是A ...

  7. Post-Exploitation Basics

    开发后基础知识 https://tryhackme.com/room/postexploit 使用 mimikatz.bloodhound.powerview 和 msfvenom 学习后期开发和维护 ...

  8. JeeCms低代码开发平台了解及认知以及遇到的问题

    1.jeecms低代码开发平台自带标签,使用的标签延续freemarker标签或基于freemarker标签自定的标签(类似自jsp自定义标签) (1)什么是freemarker标签: FreeMar ...

  9. 【Linux】shell编程(一) 变量

    [Linux]shell编程(一) 变量 目录 [Linux]shell编程(一) 变量 什么是shell编程 如何运行shell脚本 第一行 #!/bin/bash 第一行叫什么? WHAT IS ...

  10. 逍遥自在学C语言 | 指针和数组的关联

    前言 指针和数组之间存在着紧密的关系.在本文中,我们将探讨指针和数组的关系.指针算术和数组遍历.多维数组与指针以及指针数组和数组指针. 一.人物简介 第一位闪亮登场,有请今后会一直教我们C语言的老师 ...