基于Docker的ElasticSearch、Kibana服务搭建并开启用户鉴权

🏷️个人主页牵着猫散步的鼠鼠

🏷️系列专栏云原生与服务部署专栏

🏷️个人学习笔记,若有缺误,欢迎评论区指正

目录

[1. 前言](#1. 前言)

[2. 服务搭建](#2. 服务搭建)

[2.1. 部署ElasticSearch](#2.1. 部署ElasticSearch)

[2.2. 部署Kibana](#2.2. 部署Kibana)

[3. 总结](#3. 总结)


1. 前言

发现有段时间没更文了,突然想到ES还没有发过相关的文章,翻了翻以前的笔记,又可以水几篇笔记了哈哈。

博主这里推荐使用至少2G运行内存的的服务器作为学习平台,因为ES服务占用的内存还是比较大的,除去ElasticSearch外我们还需要部署一个可视化操作工具Kibana。如果你是Linux centos系统的话,下面的指令可以一路CV完成服务的部署。

2. 服务搭建

2.1. 部署ElasticSearch

拉取docker镜像

bash 复制代码
docker pull elasticsearch:7.17.21

创建挂载卷目录

bash 复制代码
mkdir /local/es-data -p
mkdir /local/es-plugins -p
mkdir /local/es-config -p
chmod 777 /local/es-data
chmod 777 /local/es-plugins
chmod 777 /local/es-config

第一次启动容器

bash 复制代码
docker run -d \
	--name es \
    -e "ES_JAVA_OPTS=-Xms512m -Xmx1024m" \
    -e "discovery.type=single-node" \
    --privileged \
    --network es-net \
    -p 9200:9200 \
    -p 9300:9300 \
elasticsearch:7.17.21

拷贝出配置文件

bash 复制代码
docker cp es:/usr/share/elasticsearch/config/ /local/es-config/

删除容器

bash 复制代码
docker rm -f es

以单机模式运行容器(也可以结合K8S进行集群部署,我们在后面的K8S系列文章中应该也会讲到)

bash 复制代码
docker run -d \
	--name es \
    -e "ES_JAVA_OPTS=-Xms512m -Xmx1024m" \
    -e "discovery.type=single-node" \
    -e "ELASTICSEARCH_USERNAME=root" \
    -e "ELASTICSEARCH_PASSWORD=你的密码" \
    -v /local/es-data:/usr/share/elasticsearch/data \
    -v /local/es-plugins:/usr/share/elasticsearch/plugins \
    -v /local/es-config/config:/usr/share/elasticsearch/config \
    --privileged \
    --network es-net \
    -p 9200:9200 \
    -p 9300:9300 \
elasticsearch:7.17.21
  • `-e "cluster.name=es-docker-cluster"`:设置集群名称
  • `-e "http.host=0.0.0.0"`:监听的地址,可以外网访问
  • `-e "ES_JAVA_OPTS=-Xms512m -Xmx1024m"`:内存大小
  • `-e "discovery.type=single-node"`:非集群模式
  • `-v es-data:/usr/share/elasticsearch/data`:挂载逻辑卷,绑定es的数据目录
  • `-v es-logs:/usr/share/elasticsearch/logs`:挂载逻辑卷,绑定es的日志目录
  • `-v es-plugins:/usr/share/elasticsearch/plugins`:挂载逻辑卷,绑定es的插件目录
  • `--privileged`:授予逻辑卷访问权
  • `--network es-net` :加入一个名为es-net的网络中
  • `-p 9200:9200`:端口映射配置

进入容器内生成密码

bash 复制代码
docker exec -it es /bin/bash

生成密码 ,他会让你为各个预设角色设置密码,包括 apm_system、kibana、kibana_system、logstash_system、beats_system、remote_monitoring_user 以及 elastic。

bash 复制代码
elasticsearch-setup-passwords interactive

访问9200端口,测试服务是否正常启动,若正常启动会看到要求输入账号密码,我们这里账号输入elastic,密码输入你设置的

账号密码正确就会看到如下信息

2.2. 部署Kibana

拉取docker镜像

bash 复制代码
docker pull kibana:7.17.21

第一次运行容器

bash 复制代码
docker run -d \
--name kibana \
-e ELASTICSEARCH_HOSTS=http://es:9200 \
--network=es-net \
-p 5601:5601  \
kibana:7.12.1

拷贝出kibana配置文件

bash 复制代码
docker cp kibana:/usr/share/kibana/config/ /local/kibana-config

删除容器

bash 复制代码
docker rm -f kibana

修改/local/kibana-config/config/kibana.yml配置文件,添加如下配置,让kibana有权限去访问ES

bash 复制代码
elasticsearch.username: "kibana_system"
elasticsearch.password: "你的密码"

重启容器并挂载配置文件目录

bash 复制代码
docker run -d \
--name kibana \
-e ELASTICSEARCH_HOSTS=http://es:9200 \
-v /local/kibana-config/config:/usr/share/kibana/config \
--network=es-net \
-p 5601:5601  \
kibana:7.17.21

访问5601端口,访问kibana界面,输入账号密码(账号就是预设用户,比如elastic,密码就是你在es容器中设置的密码)登录

如果网页能够进入,但是一直报错,可以尝试清空浏览器缓存,重新访问

3. 总结

部署ES主要是部署两个服务,一是ES服务本身,二是Kibana作为可视化面板。目前ES的部署模式使用的是单机模式,操作比较简单,后续我们可能会结合K8S实现ES的集群部署,保证ES服务的高可用。

相关推荐
CCCC13101632 小时前
嵌入式学习(day 28)线程
jvm·学习
星星火柴9363 小时前
关于“双指针法“的总结
数据结构·c++·笔记·学习·算法
小狗爱吃黄桃罐头3 小时前
正点原子【第四期】Linux之驱动开发篇学习笔记-1.1 Linux驱动开发与裸机开发的区别
linux·驱动开发·学习
喂完待续4 小时前
Apache Hudi:数据湖的实时革命
大数据·数据仓库·分布式·架构·apache·数据库架构
青云交4 小时前
Java 大视界 -- 基于 Java 的大数据可视化在城市交通拥堵治理与出行效率提升中的应用(398)
java·大数据·flink·大数据可视化·拥堵预测·城市交通治理·实时热力图
艾莉丝努力练剑4 小时前
【洛谷刷题】用C语言和C++做一些入门题,练习洛谷IDE模式:分支机构(一)
c语言·开发语言·数据结构·c++·学习·算法
武昌库里写JAVA5 小时前
JAVA面试汇总(四)JVM(一)
java·vue.js·spring boot·sql·学习
杜子不疼.5 小时前
《Python学习之字典(一):基础操作与核心用法》
开发语言·python·学习
小幽余生不加糖6 小时前
电路方案分析(二十二)适用于音频应用的25-50W反激电源方案
人工智能·笔记·学习·音视频
..过云雨7 小时前
01.【数据结构-C语言】数据结构概念&算法效率(时间复杂度和空间复杂度)
c语言·数据结构·笔记·学习