ElasticSearch Docker 部署实例

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6

前言

虽然说要停更但是有些东西还是需要记录一下的尤其是这种不需要动脑子但是就是容易忘记需要注意的操作是需要进行记录的。

那么本篇博文需要做的就是使用docker容器部署ElasticSearch如何从0开始进行搭建同时设置账户和密码。
这里先说明一下的是这里部署的是单节点的ElasticSearch实话实话之所以搞这个还是为了完成WhiteHole的一个搜索功能但是考虑到服务成本的问题所以还是考虑单节点。实际上我们是完全可以考虑使用Mysql>=5.7 的分词来实现类似的效果的因为数据量并不多的情况下使用这个也是可以考虑的但是为了考虑到以后扩展还是打算先把Es给做进去同时提供两套实现方案后期通过nacos注册中心进行灵活调配我使用哪一种方案。

不过也确实脱离场景谈技术都是扯犊子这套技术栈很好但是对于当前的WhiteHole来说属于是典型的堆技术栈只能说面试唬唬人从此以后我们具备了搭建分布式架构并基于java微服务技术完成这一架构的开发能力同时具备了多语言开发能力。

OK吐槽归吐槽我们还是来说一说我们如何搭建。这里我使用的服务器是centos8,4核8GB。这里请注意你的系统版本。

基本环境构建

那么在开始之前我们需要做的就是搭建好我们的环境。

Java安装

sudo yum -y install java-11-openjdk-devel

sudo yum -y install java-11-openjdk

这两个都可以上面那个把Java的一些额外的东西都会给你搞好。

docker安装

  1. 卸载可能存在的版本看你自己非必要
yum remove docker \
                  docker-client \
                  docker-client-latest \
                  docker-common \
                  docker-latest \
                  docker-latest-logrotate \
                  docker-logrotate \
                  docker-selinux \
                  docker-engine-selinux \
                  docker-engine \
                  docker-ce

  1. 安装docker

2.1 首先安装依赖

yum install -y yum-utils \
           device-mapper-persistent-data \
           lvm2 --skip-broken

2.2 然后设置镜像

yum-config-manager \
    --add-repo \
    https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
    
sed -i 's/download.docker.com/mirrors.aliyun.com\/docker-ce/g' /etc/yum.repos.d/docker-ce.repo

yum makecache --refresh

2.3 最后安装社区版本

yum install -y docker-ce

到此docker安装完毕。

es部署

这个可以去docker 镜像那里去拉取我这里也有一个7.12的
链接https://pan.baidu.com/s/1tmBP7RHVX62FdAigpcV0Lg
提取码6666

我在服务器这边创建了一个目录然后上传了这个tar包
在这里插入图片描述
要的小伙伴自取。

之后我们加载一下镜像。

为了测试我们先做单节点部署看看行不行。

安装ES

我们先运行一下我们的docker

systemctl start docker

然后切换到 es.tar 的目录我的目录是 /elastic

然后加载镜像

 docker load -i es.tar 

之后我们创建一个容器

docker run -d \
	--name es \
    -e "ES_JAVA_OPTS=-Xms512m -Xmx512m" \
    -e "discovery.type=single-node" \
    -v es-data:/usr/share/elasticsearch/data \
    -v es-plugins:/usr/share/elasticsearch/plugins \
    --privileged \
    --network es-net \
    -p 9200:9200 \
    -p 9300:9300 \
elasticsearch:7.12.1

命令解释

  • -e "cluster.name=es-docker-cluster"设置集群名称

  • -e "http.host=0.0.0.0"监听的地址可以外网访问

  • -e "ES_JAVA_OPTS=-Xms512m -Xmx512m"内存大小

  • -e "discovery.type=single-node"非集群模式

  • -v es-data:/usr/share/elasticsearch/data挂载逻辑卷绑定es的数据目录

  • -v es-plugins:/usr/share/elasticsearch/plugins挂载逻辑卷绑定es的插件目录

  • --privileged授予逻辑卷访问权

  • --network es-net 加入一个名为es-net的网络中

  • -p 9200:9200端口映射配置

验证安装

之后打开你的 IP9200 端口
在这里插入图片描述

访问正常

安装kibana

这个是咱们联调elastic用的。

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

运行这个命令会自动帮助我们安装。

  • --network es-net 加入一个名为es-net的网络中与elasticsearch在同一个网络中
  • -e ELASTICSEARCH_HOSTS=http://es:9200"设置elasticsearch的地址因为kibana已经与elasticsearch在一个网络因此可以用容器名直接访问elasticsearch
  • -p 5601:5601端口映射配置

可以看到有两个了
在这里插入图片描述
之后在浏览器打开 5601端口

由于一个DevTool
在这里插入图片描述

设置密码

之后的话我们需要去设置密码因为现在是已经可以正常运行了但是没有设置密码那么就意味任何人都可以访问那么这样做显然是不太OK的。这里的话为了安全建议再做一个端口映射如果需要公开暴露的话

那么这里设置密码的话也是分别设置es的和kibabana的。这里不太一样的就是我们需要去容器里面去修改配置。

进入es容器

首先我们需要找到我们的容器。

docker container ls

在这里插入图片描述
当然如果你的容器没有在线运行那么就是

docker ps -a

查看所有的 容器。

然后我们需要进入到容器里面

docker exec -it 容器ID /bin/bash

安装Vim

我们待会需要去修改配置文件但是对于这个原始镜像来说是没有vim,同时yum也无法正常使用。因此我们需要麻烦一点去安装。

这里的话按照顺序输入如下指令即可

cd /etc/yum.repos.d/
sed -i 's/mirrorlist/#mirrorlist/g' /etc/yum.repos.d/CentOS-*
sed -i 's|#baseurl=http://mirror.centos.org|baseurl=http://vault.centos.org|g' /etc/yum.repos.d/CentOS-*

yum makecache
yum update -y
yum -y install vim

那么这个时候的话我们的vim就是安装好了。

修改es容器配置文件

之后的话我们就可以正常使用vim去修改我们的配置文件了。

那么此时进入到我们的config目录

cd config

在这里插入图片描述
然后我们编辑
elasticsearch.yml配置文件
然后添加如下命令

xpack.security.transport.ssl.enabled: true
xpack.security.enabled: true
http.cors.enabled: true
http.cors.allow-origin: "*"
http.cors.allow-headers: "Authorization"

在这里插入图片描述

之后退出容器重启

docker restart 容器ID

设置es访问密码

此时你再次刷新刚刚9200的那个端口应该是会提示你要密码登录的但是还没完我们此时再次进入到我们的容器然后进入bin目录输入如下指令

elasticsearch-setup-passwords interactive

然后会让你设置各种密码你可以选择统一随便你。
在这里插入图片描述
之后再次访问:
在这里插入图片描述
我们输入密码即可。用户名为 elastic

设置Kibana密码

理想状态

首先通过同样的方式我们进入到Kibana的容器当中。
在这里插入图片描述
然后就好办了嘛
在这里插入图片描述
然后修改Kibana的配置文件
同样的没有vim需要再来一下。之后我们在编辑这个文件然后添加

elasticsearch.username: "elastic"
elasticsearch.password: "xxxx"

即可但是遗憾的是通过我们刚刚安装的docker 容器来说你也看到了当前用户并不是root实际上是kibana这个就比较蛋疼了不过条条大路通罗马实际上我们还有另一个方案。

方案二修改挂载

本来是打算去挣扎一下去看看人家官方是咋说的突然想到刚刚我们应该是有挂载我的配置文件的。所以我就直接修改本地文件其实就可以了。是的修改es的时候其实也可以这样干如果不是因为vim问题的话这种方式是更慢的。为啥呢原因在这儿

首先我们先找到挂载由于我也不知道在哪所以我们找一下位置

find / -name  kibana.yml

最后我们找到有这几个东西
在这里插入图片描述

这个是我们挂载的其实到底是哪一个我也不确定于是我就全部看了一下最后我对这两个文件进行了修改。
在这里插入图片描述
第一个文件是一堆注释第四个文件当我把前面的改好了这个也就改好了可能是个链接吧。

之后的话加入刚刚的那两句话

elasticsearch.username: "elastic"
elasticsearch.password: "xxxx"

在这里插入图片描述

安装IK分词器

OK最后的话就是来安装一下我们的分词器就是我们的 KunKun分词器主要是因为中文分词嘛。其实作用和jieba类似嘛要做关键词搜索呗。

安装ik分词器

安装的话两种方案

在线安装

这个比较慢。

执行如下指令就好了

# 进入容器内部
docker exec -it containerName /bin/bash

# 在线下载并安装
./bin/elasticsearch-plugin  install https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v7.12.1/elasticsearch-analysis-ik-7.12.1.zip

#退出
exit
#重启容器
docker restart elasticsearch

离线安装

那么我们这边选择离线安装所以先到ik官网去搞到压缩包。

我们可以在docke看到有两个数据卷正在被使用。
在这里插入图片描述

并且可以看到具体信息
在这里插入图片描述

然后的话我们直接进入那个目录然后上传ik分词器。

在这里插入图片描述

然后重启容器。

docker restart  容器ID/名

最后我们来到Kibana来看看我们的分词效果。
在这里插入图片描述
效果非常不错。

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6
标签: Docker