容器化(Docker、K8S)部署Elasticsearch + Kibana

这篇具有很好参考价值的文章主要介绍了容器化(Docker、K8S)部署Elasticsearch + Kibana。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

ElasticSearch简介

#简介
Elasticsearch是一个分布式、RESTful风格的搜索和数据分析引擎,可以实现单机和集群部署,轻松缩放规模。

ELK:Elasticsearch + Kibana + Logstash


#官方地址
https://www.elastic.co/cn/
https://www.elastic.co/guide/en/elastic-stack/7.6/overview.html
https://hub.docker.com/_/elasticsearch


#应用场景
日志分析:对IT设备进行运维分析与故障定位、对业务指标分析运营效果。
站内搜索:对网站内容进行关键字检索、对电商网站商品进行检索与推荐。
向量检索:对图像、视频、语料等非结构化数据提取的特征向量数据进行最近邻或近似近邻检索。

本次实验目标

目标1:Docker部署Elasticsearch + Kibana
目标2:安装中文分词器插件,配置认证
目标3:基本操作演示
目标4:在华为云CCE中部署
目标5:使用Logstash进行数据迁移
目标6:使用华为云CSS服务
视频教程地址:https://www.bilibili.com/video/BV1MP4y1e7u8/?vd_source=8e4a436fd4e37be82e3fee379554aa59

实验环境

#实验云资源
ECS:通用计算增强型 | c7.xlarge.2 | 4vCPUs | 8GiB
SFS、CCE

#前期环境条件
1)准备好对应的云资源
2)已安装好Docker,配置加速镜像

#本次实验资源由「淘客科技@华为云」 提供

Docker部署Elasticsearch + Kibana

#准备
$ mkdir -p /cxy/es76/data
$ chmod 777 /cxy/es76/data	#如果不授权,容器里的用户权限不足操作外层目录,启动会失败

#部署ElasticSearch
$ docker run -d --name es7.6 -p 9201:9200 -p 9301:9300 -v "/cxy/es76/data":/usr/share/elasticsearch/data -e "discovery.type=single-node" elasticsearch:7.6.0

#查看日志
$ docker logs es7.6 --since 30m

#访问验证
http://ip:9201

#部署Kibana 
$ docker run --name kibana7.6 -p 5602:5601 -d --link es7.6:elasticsearch kibana:7.6.0
$ docker logs -f kibana7.6 

#修改配置文件
$ docker exec -it kibana7.6 bash
$ cd config
$ vi kibana.yml

1)如果地址不对,改一下地址
2)添加:i18n.locale: "zh-CN"

#改配后重启
$ docker restart kibana7.6

#验证
http://ip:5602
安装中文分词器插件,配置认证
#安装中文分词器(版本务必对应)
#下载地址:https://github.com/medcl/elasticsearch-analysis-ik/releases?page=8
$ docker cp elasticsearch-analysis-ik-7.6.0.zip es7.6:/usr/share/elasticsearch/plugins/

$ docker exec -it es7.6 bash

#安装插件
$ cd plugins/
$ mkdir analysis-ik
$ mv elasticsearch-analysis-ik-7.6.0.zip  analysis-ik/
$ cd analysis-ik
$ unzip elasticsearch-analysis-ik-7.6.0.zip
$ rm -rf elasticsearch-analysis-ik-7.6.0.zip

#重启服务
$ docker restart es7.6

#验证
POST  _analyze
{
  "analyzer": "ik_max_word",
  "text": "2017春装新款休闲裤女装"
}



#安全设置,认证配置
$ docker exec -it es7.6 bash
$ vi /usr/share/elasticsearch/config/elasticsearch.yml

#开启自带的xpack的验证功能
xpack.security.enabled: true

#重启服务
$ docker restart es7.6

#设置密码
$ docker exec -it es7.6 bash
$ cd /usr/share/elasticsearch/bin
$ ./elasticsearch-setup-passwords interactive
#给每个账号设置密码(toc@Hwy)


#改变kibana
$ docker exec -it kibana7.6 bash
$ vi config/kibana.yml
elasticsearch.username: "kibana"
elasticsearch.password: "123456"

#重启服务
$ docker restart kibana7.6

#验证
登录kibana时需要用  elastic  作为用户名。

基本操作

#创建索引映射(类似于关系型数据库中的表结构)
PUT /my_store
{
  "mappings" : {
      "properties" : {
        "price" : {
          "type" : "float"
        },
        "productName" : {
          "type" : "text",
          "analyzer" : "ik_smart",
          "search_analyzer" : "ik_max_word"
        },
        "size" : {
          "type" : "text"
        },
        "tag" : {
          "type" : "keyword"
        }
      }
    }
}

#直接新增customer
PUT /customer/_doc/1
{
  "name": "cxy@toc"
}

#查看所有索引
GET _cat/indices

#单条新增,指定id (会删除没有的字段,无变化重复执行:版本会递增)
PUT /my_store/_doc/1
{
  "productName":"李宁休闲裤",
  "size":"L",
  "price":100.5
}

#修改(不会修改没有的字段,无变化重复执行:版本号不变)
POST /my_store/_update/1
{
	"doc":{
  	"productName":"李宁休闲裤G",
  	"size":"L",
  	"price":100.5
  }
}

#查看这条数据 (注意两种方式_version区别)
GET /my_store/_doc/1

#批量插入
POST /my_store/_doc/_bulk
{"index":{}}
{"productName":"2017秋装新款文艺衬衫女装","size":"L","price":100.5}
{"index":{}}
{"productName":"2017秋装新款文艺衬衫女装","size":"M","price":110.5}
{"index":{}}
{"productName":"2017秋装新款文艺衬衫女装","size":"S","price":120.5}
{"index":{}}
{"productName":"2018春装新款牛仔裤女装","size":"M","price":130.5}
{"index":{}}
{"productName":"2018春装新款牛仔裤女装","size":"S","price":140.5}
{"index":{}}
{"productName":"2017春装新款休闲裤女装","size":"L","price":150.5}
{"index":{}}
{"productName":"2017春装新款休闲裤女装","size":"S","price":160.5}

POST /my_store/_doc/_bulk
{"index":{}}
{"productName":"2017春装女裤","size":"L","price":100.5}
{"index":{}}
{"productName":"2017夏装女裤","size":"M","price":110.5}
{"index":{}}
{"productName":"2018秋装女鞋","size":"S","price":120.5}
{"index":{}}
{"productName":"2018冬装女鞋装","size":"M","price":130.5}
{"index":{}}
{"productName":"2019春装男裤","size":"S","price":140.5}
{"index":{}}
{"productName":"2019夏装男裤","size":"L","price":150.5}
{"index":{}}
{"productName":"2019秋装男鞋","size":"S","price":160.5}
{"index":{}}
{"productName":"2019冬装男鞋","size":"S","price":160.5}


#获得总记录数
GET /my_store/_count

#查看索引所有数据
GET /my_store/_search

#查看索引所有数据,排序,分页
GET /my_store/_search
{
  "query": { "match_all": {} },
  "sort": [
    { "price": "asc" }
  ],
  "from": 0,
  "size": 5
}

#条件检索
GET /my_store/_search
{
  "query": { "match": { "size": "S" } }
}

#聚合
GET /my_store/_search
{
  "query": {
    "match": {
      "productName": "春装"
    }
  },
  "size": 0,
  "aggs": {
    "sizes": {
      "terms": {
        "field": "price"
      }
    }
  }
}

#删除所有
POST /my_store/_delete_by_query
{
  "query": { 
    "match_all": {
    }
  }
}

在华为云CCE中部署

# elasticsearch
镜像:elasticsearch:7.6.0

生命周期 -- 启动后:
/bin/bash
-c
sleep 1s;sed -i '$axpack.security.enabled: true' /usr/share/elasticsearch/config/elasticsearch.yml

环境变量:
discovery.type	single-node

数据存储:
sfs
/usr/share/elasticsearch/data		es/data
/usr/share/elasticsearch/plugins	es/plugins
#注意:这里必须是SFS,不能是OBS(OBS非常的慢,经常会超时)

访问方式:
服务名称:elasticsearch:9200 (一定要是这个名称,因为kibana的kibana.yml里默认配置的是elasticsearch:9200)
#如果这里不是上面配置方式,还要做kibana.yml配置文件的修改



# kibana
镜像:kibana:7.6.0
生命周期 -- 启动后:

/bin/bash
-c
sleep 1s;sed -i '$ai18n.locale: "zh-CN"\nelasticsearch.username: "kibana"\nelasticsearch.password: "123456"' /usr/share/kibana/config/kibana.yml

使用Logstash进行数据迁移

#参考
https://support.huaweicloud.com/bestpractice-css/css_07_0009.html
https://help.aliyun.com/document_detail/418418.html#section-wpf-9cg-1m1

#购买一台新的迁移ECS
$ yum install java
$ yum install python

#下载logstash-oss
$ wget https://artifacts.elastic.co/downloads/logstash/logstash-oss-7.6.0-x86_64.rpm
$ yum install logstash-oss-7.6.0-x86_64.rpm

$ vim /etc/logstash/jvm.options
-Xms4g
-Xmx4g

$ cd /etc/logstash/conf.d/
$ vim logstash-es-es-all.conf

$ /usr/share/logstash/bin/logstash --path.settings /etc/logstash

#日志位置:/var/log/logstash/

文章来源地址https://www.toymoban.com/news/detail-803379.html

到了这里,关于容器化(Docker、K8S)部署Elasticsearch + Kibana的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包赞助服务器费用

相关文章

  • 容器技术之Docker&K8S

    容器技术之Docker&K8S

    区别:1、k8s是一种开放源码的容器集群管理系统,而Docker是一种开放源码的应用容器引擎;2、k8s是一套自动化部署工具,可以管理docker容器是容器编排层面的,docker是容器化技术,是容器层面的。 Docker本身并不是容器,它是创建容器的工具,是应用容器引擎。一句话总结就

    2024年02月08日
    浏览(9)
  • K8S:K8S自动化运维容器化(Docker)集群程序

    K8S:K8S自动化运维容器化(Docker)集群程序

    目录 一、K8S概述 1、什么是K8S 2、为什么要用K8S 3、作用及功能 二、K8S的特性 1、弹性伸缩 2、自我修复 3、服务发现和复制均衡 5、自动发布和回滚 6、集中化配置管理和秘钥管理 7、存储编排 8、任务批量处理运行 三、K8S的集群架构 四、K8S的核心组件 1、Master组件 ①Kube-apis

    2024年02月12日
    浏览(13)
  • docker在k8s容器中的作用,以及docker的底层原理,以及k8s的常用命令

        Docker的设计思想就是创建软件程序可移植性的轻量级容器,让其可以在任何安装了Docker的机器上,不用关心底层操作系统,就可以运行开发程序,就像集装箱一样使用。 Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从Apache2.0协议开源。 Docker 可以让开发者打包他们

    2024年04月27日
    浏览(11)
  • 使用CloudOS快速实现K8S容器化部署

    使用CloudOS快速实现K8S容器化部署

    容器技术(以docker和Kubernetes为代表)呱呱坠地到如今,在国内经历了如下3个阶段: 婴儿期:2014-2016年的技术探索期; 少儿期:2017-2018年的行业试水期; 少年期:2019年以后的规模应用期。 我这里不详述使用容器技术的好处,有兴趣的同学可以自行了解。K8S是非常好的东东,

    2024年02月11日
    浏览(10)
  • K8s基础2——部署单Master节点K8s集群、切换containerd容器运行时、基本命令

    K8s基础2——部署单Master节点K8s集群、切换containerd容器运行时、基本命令

    两种部署方式: kubeadm工具部署 。Kubeadm 是一个K8s 部署工具,提供 kubeadm init 和kubeadm join,用于快速部署 Kubernetes集群。 kubeadm 工具功能: kubeadm init:初始化一个 Master 节点。 kubeadm join:将工作节点加入集群。 kubeadm upgrade:升级 K8s 版本。 kubeadm token:管理 kubeadm join 使用的令

    2024年02月12日
    浏览(8)
  • 容器技术,1. Docker,2. Kubernetes(K8s):

    容器技术,1. Docker,2. Kubernetes(K8s):

    目录 容器技术 1. Docker: 2. Kubernetes(K8s): Docker和Kubernetes 容器的主要应用场景有哪些? 有效的将单个操作系统的资源划分到孤立的组中,以便更好的在孤立的组之间平衡有冲突的资源使用需求,这种技术就是容器技术。 容器技术指通过在物理主机操作系统上创建一个一个

    2024年02月11日
    浏览(9)
  • k8s单节点部署,容器运行时使用containerd

    k8s单节点部署,容器运行时使用containerd

    环境 系统 : entOS Linux release 7.9.2009 (Core IP:192.168.44.177 硬件要求:控制平面最少需要 2c2g 安装前环境准备 如果是集群部署还需要配置时间同步 关闭防火墙 关闭selinux 关闭swap分区 如果没有开启swap分区可以跳过这步 删除掉 /etc/fstab 有关swap分区的信息 设置主机名 开始安装容器

    2024年04月12日
    浏览(8)
  • 【Nacos】基于k8s容器化部署Nacos集群

    【Nacos】基于k8s容器化部署Nacos集群

    近期,在机器上部署了三个节点的nacos集群服务用于几个小型微服务的注册配置中心,并使用了Nginx简单代理了一下,随即简单研究了下集群部署分布式部署稍微提高可用性。部署完后能够正常使用,但是发现一个问题,刷新Nacos集群节点列表,总会有一个或者两个节点时不时

    2024年02月11日
    浏览(13)
  • k8s容器部署mysql5.7全流程分享

    k8s容器部署mysql5.7全流程分享

    有些人只是部署了一个kubernetes(简称k8s),mysql自然是也是想部署到该容器底座中。但是为了方便,一般只是想部署一个单机版本的mysql。该教程主要是分享,如何把mysql5.7单机版快速的部署到k8s中,并且方便修改my.cnf配置,同时修改密码,适用于中小型项目中。 文章最后附

    2024年02月03日
    浏览(8)
  • 容器的崛起——Docker与K8s的相爱相杀

    容器的崛起——Docker与K8s的相爱相杀

    对于K8s启用docker,作为普通开发者的体感是,k8s不就是docker的集群操作吗?k8s弃用docker就像鱼反对水一样不可思议,那么这两个技术究竟是什么关系,Kubernetes 是如何一步步与 Docker 解耦的,请看下文。 向应用代码隐藏分布式架构复杂度、让分布式架构得以成为一种能够普遍

    2023年04月08日
    浏览(33)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包