Docker下elasticsearch8部署、扩容、基本操作实战(含kibana)

docker,elasticsearch8,部署,扩容,基本操作,实战,kibana · 浏览次数 : 359

小编点评

#生成内容时需要带简单的排版 1. **使用printf格式输出** ``` printf("标题:%s\n",标题); printf("内容:%s\n",内容); ``` 2. **使用string格式输出** ``` string title = "标题:%s\n"; string content = "内容:%s\n"; string output = string(title) + string(content); ``` 3. **使用printf格式输出** ``` printf("%s %s %s\n",标题,内容1,内容2); ``` 4. **使用string格式输出** ``` string output = string("%s %s %s",标题,内容1,内容2); ``` 5. **使用字符串拼接** ``` string output = "标题:%s\n" + "内容:%s\n" + "内容:%s\n"; ``` 6. **使用string格式输出** ``` string output = "%s %s %s\n" + "标题:%s\n" + "内容:%s\n" + "内容:%s\n"; ``` 7. **使用string格式输出** ``` string output = string("%s %s %s %s",标题,内容1,内容2,内容3); ``` 8. **使用printf格式输出** ``` printf("%s\n",标题); printf("%s\n",内容1); printf("%s\n",内容2); printf("%s\n",内容3); ``` 9. **使用string格式输出** ``` string output = string("%s %s %s %s",标题,内容1,内容2,内容3); ``` 10. **使用printf格式输出** ``` printf("%s %s %s %s %s",标题,内容1,内容2,内容3,内容4); ```

正文

欢迎访问我的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,然后回车
image-20220529193340940
  • 接下来就会弹出登录页面了,如下图,填写账号elastic,密码是刚才控制台返回的
image-20220529111851813
  • 如果看到以下信息,证明es启动成功
image-20220529112221897
  • 如果您在chrome上安装了ElasticSearch Head插件(没错,是chrome浏览器插件),此时已经可以访问es服务了,如下图
image-20220529114326591
  • 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按钮
image-20220529165840254
  • 然后弹出个输入验证码的页面
image-20220529170157182
  • 在控制台输入以下命令,顺利拿到验证码
docker exec -it kibana bin/kibana-verification-code
  • 回到网页输入验证码,可以看到初始化页面
image-20220529170304401
  • 接下来就是常规的安全登录了,如下图,输入es的账号密码即可登录成功
image-20220529170545388
  • 登录成功,下图选择右边的Explore on my own
image-20220529170724818
  • eshead显示新增了一些kibana自用的索引
image-20220529204959621

集群扩容

  • 目前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上可以看到新增的节点
image-20220529205158965
  • 至此,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插件也能看到索引创建成功
image-20220529205948266
  • 用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可以看到每条记录的详细信息

    image-20220529211718451
  • 接下来试试kibana

操作kibana

  • 在kibana页面,点击下图红框位置,进入查询页面
image-20220529212055604
  • 执行查询的操作如下
image-20220529212603764
  • 看看刚刚导入了多少数据,如下图,十一万

image-20220529212926138

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

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

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

与Docker下elasticsearch8部署、扩容、基本操作实战(含kibana)相似的内容:

Docker下elasticsearch8部署、扩容、基本操作实战(含kibana)

本文通过docker快速部署elasticsearch8版本,再添加一台组成集群,并且部署kibana用于常规查询操作,以及一些常见的es操作

docker-compose快速部署elasticsearch-8.x集群+kibana

借助docker-compose,可以简单的完成elasticsearch8.x版本集群+kibana部署

ELK Stack - Elasticsearch · 搜索引擎 · 部署应用 · 内部结构 · 倒排索引 · 服务接入

ELK Stack, Elasticsearch, 搜索引擎, 全文检索, 特点与应用及场景, Linux部署, Docker 容器部署, 工具与插件, ES内部特征, 索引 Index, 文档数据 Doc, 分词器 analyzer, 倒排索引 inverted index, ES执行过程, ES...

日志采集/分析

目录EFK1. 日志系统2. 部署ElasticSearch2.1 创建handless服务2.2 创建sts3. 部署kibana4. 部署ilogtail(docker-compose)4.1 编写docker-compose4.2 配置ilogtail采集4.3 查看容器采集的日志4.4 采集

使用docker搭建ELK分布式日志同步方案

ELK作为业界最常用日志同步方案,我们今天尝试一下使用docker快速搭建一套ELK方案。ELK使用国内加速源拉取的镜像比较旧,有条件的朋友可以拉取官网的源。elasticsearch作为日志储存库(数据库),kibana的作用通过elasticsearch的API接口调取其中数据作可视化分析,lo

[转帖]【混沌工程】 docker环境下模拟网络延迟和丢包

https://cloud.tencent.com/developer/article/1616202?areaSource=&traceId= 原文地址:https://www.chenquan.me/archives/315 混沌工程最早是Netflix引入的,用来验证服务稳定性的工程。地址:h

构建高可用性的 SQL Server:Docker 容器下的主从同步实现

摘要:本文将介绍如何在 Docker 环境下搭建 MS SQL Server 的主从同步,帮助读者了解主从同步的原理和实现方式,进而提高数据的可靠性和稳定性。 一、前言 在当今信息化的时代,数据的安全性和稳定性显得尤为重要。数据库是许多企业和组织存储和管理数据的核心,因此如何保证数据库的高可用性和数

Docker 必知必会2----跟我来一步步执行基本操作

通过前文(https://www.cnblogs.com/jilodream/p/18177695)的了解,我们已经大致明白了什么是docker,为什么要用docker,以及docker的基本设计思路是什么。今天来看下,docker的基本操作有哪些? 1、linux下安装docker 首先我们来安装

[转帖]Docker 常见问题处理技巧

https://zhuanlan.zhihu.com/p/517495884 1、Docker 迁移存储目录 默认情况系统会将 Docker 容器存放在 /var/lib/docker 目录下 [问题起因] 今天通过监控系统,发现公司其中一台服务器的磁盘快慢,随即上去看了下,发现 /var/lib/

docker ps --no-trunc 与 docker ps

转载请注明出处: docker ps --no-trunc与docker ps之间的区别在于输出结果的格式。 docker ps: 默认情况下,docker ps命令以截断的方式显示结果。这意味着容器名称和镜像名称可能会被截断,并且不会显示完整的信息。它适用于简洁的输出,特别是当您只关注容器ID和基