Docker安装部署ElasticSearch

1.部署单点ElasticSearch

1.1.创建网络

因为我们还需要部署kibana容器,因此需要让ElasticSearchkibana容器互联。这里先创建一个网络:

docker network create es-net

在这里插入图片描述

1.2.拉取镜像

考虑到ElasticSearch的兼容性,这里ElasticSearchkibana统一下载8.6.2版本

# 拉取镜像
docker pull elasticsearch:8.6.2

在这里插入图片描述

1.3.第一次执行docker脚本

docker run -it \
    -p 9200:9200 \
    -p 9300:9300 \
    --name es \
    --net es-net \
    -e ES_JAVA_OPTS="-Xms1g -Xmx1g" \
    -e "discovery.type=single-node" \
    -e LANG=C.UTF-8 \
    -e LC_ALL=C.UTF-8 \
    elasticsearch:8.6.2

注意第一次执行脚本不要加-d这个参数,否则看不到服务首次运行时生成的随机密码和随机enrollment token

在这里插入图片描述

1.4.创建Elasticsearch挂载目录

mkdir -p /home/elk8.6.2/elasticsearch

1.5.给创建的文件夹授权

sudo chown -R 1000:1000 /home/elk8.6.2/elasticsearch

1.6.将容器内的文件复制到主机上

docker cp es:/usr/share/elasticsearch/config /home/elk8.6.2/elasticsearch 

docker cp es:/usr/share/elasticsearch/data /home/elk8.6.2/elasticsearch

docker cp es:/usr/share/elasticsearch/plugins /home/elk8.6.2/elasticsearch

docker cp es:/usr/share/elasticsearch/logs /home/elk8.6.2/elasticsearch

1.7.删除容器

docker rm -f es

1.8.修改docker脚本,增加-v挂载目录和-d参数

docker run -it \
 -d \
 -p 9200:9200 \
 -p 9300:9300 \
 --name es \
 --net es-net \
 -e ES_JAVA_OPTS="-Xms1g -Xmx1g" \
 -e "discovery.type=single-node" \
 -e LANG=C.UTF-8 \
 -e LC_ALL=C.UTF-8 \
 -v /home/elk8.6.2/elasticsearch/config:/usr/share/elasticsearch/config \
 -v /home/elk8.6.2/elasticsearch/data:/usr/share/elasticsearch/data \
 -v /home/elk8.6.2/elasticsearch/plugins:/usr/share/elasticsearch/plugins \
 -v /home/elk8.6.2/elasticsearch/logs:/usr/share/elasticsearch/logs \
elasticsearch:8.6.2

在这里插入图片描述

1.9.修改配置/home/elk8.6.2/elasticsearch/config/elasticsearch.yml

增加:xpack.monitoring.collection.enabled: true
说明:添加这个配置以后在kibana中才会显示联机状态,否则会显示脱机状态

在这里插入图片描述

1.10.重启容器

docker restart es

1.11.Elasticsearch.8X以上默认开启了X-Pack安全功能

说明:请求Elasticsearch必须使用https

测试:https://ip:9200

在这里插入图片描述

用户名就是:elastic,密码在第一次启动时保存下来的信息中查找,输入账号密码,即可看到elasticsearch的响应结果:

在这里插入图片描述

看到这种信息说明启动成功了。

1.12.如果账户密码忘了,设置修改账号密码如下:

docker exec -it es /bin/bash

cd /usr/share/elasticsearch/bin
./elasticsearch-setup-passwords interactive

在这里插入图片描述

ElasticSearch设置后账户:elastic,密码:123456

2.部署kibana

kibana可以给我们提供一个ElasticSearch的可视化界面,便于我们使用。

2.1.拉取镜像

# 拉取镜像  
#注意要与ElasticSearch版本一致
docker pull kibana:8.6.2 

2.2.第一次执行docker启动脚本

docker run -it \
 -d \
 --restart=always \
 --log-driver json-file \
 --log-opt max-size=100m \
 --log-opt max-file=2 \
 --name kibana \
 -p 5601:5601 \
 --net es-net \
kibana:8.6.2

在这里插入图片描述

2.3.创建kibana挂载目录

mkdir -p /home/elk8.6.2/kibana

2.4.给创建的文件夹授权

sudo chown -R 1000:1000 /home/elk8.6.2/kibana

2.5.将容器内的文件复制到主机上

docker cp kibana:/usr/share/kibana/config /home/elk8.6.2/kibana

docker cp kibana:/usr/share/kibana/data /home/elk8.6.2/kibana

docker cp kibana:/usr/share/kibana/plugins /home/elk8.6.2/kibana

docker cp kibana:/usr/share/kibana/logs /home/elk8.6.2/kibana

在这里插入图片描述

2.6.删除容器

docker rm -f kibana

2.7.修改配置文件/home/elk8.6.2/kibana/config/kibana.yml:

  • 增加:i18n.locale: “zh-CN”
  • 修改:elasticsearch.hosts: [‘https://172.20.0.2:9200’],将IP改成elasticsearchdocker ip,注意一定要用https
  • 修改:xpack.fleet.outputs: [{id: fleet-default-output, name: default, is_default: true, is_default_monitoring: true, type: elasticsearch, hosts: [‘https://172.20.0.2:9200’], ca_trusted_fingerprint: xxxxxxxxxx}]
    IP改成elasticsearchdocker ip,注意一定要用https

在这里插入图片描述

2.8.修改docker启动脚本,增加挂载目录

docker run -it \
 -d \
 --restart=always \
 --log-driver json-file \
 --log-opt max-size=100m \
 --log-opt max-file=2 \
 --name kibana \
 -p 5601:5601 \
 --net es-net \
 -v /home/elk8.6.2/kibana/config:/usr/share/kibana/config \
 -v /home/elk8.6.2/kibana/data:/usr/share/kibana/data \
 -v /home/elk8.6.2/kibana/plugins:/usr/share/kibana/plugins \
 -v /home/elk8.6.2/kibana/logs:/usr/share/kibana/logs \
kibana:8.6.2

在这里插入图片描述

2.9.查看kibana日志

docker logs -f kibana

此时,在浏览器输入地址访问:http://192.168.1.111:5601,即可看到结果。

2.2.DevTools

kibana中提供了一个DevTools界面:

在这里插入图片描述

这个界面中可以编写DSL来操作elasticsearch。并且对DSL语句有自动补全功能。

4.部署es集群

部署es集群可以直接使用docker-compose来完成,不过要求你的Linux虚拟机至少有4G的内存空间

首先编写一个docker-compose文件,内容如下:

version: '2.2'
services:
  es01:
    image: docker.elastic.co/elasticsearch/elasticsearch:8.6.2
    container_name: es01
    environment:
      - node.name=es01
      - cluster.name=es-docker-cluster
      - discovery.seed_hosts=es02,es03
      - cluster.initial_master_nodes=es01,es02,es03
      - bootstrap.memory_lock=true
      - "ES_JAVA_OPTS=-Xms512m -Xmx512m"
    ulimits:
      memlock:
        soft: -1
        hard: -1
    volumes:
      - data01:/usr/share/elasticsearch/data
    ports:
      - 9200:9200
    networks:
      - elastic
  es02:
    image: docker.elastic.co/elasticsearch/elasticsearch:8.6.2
    container_name: es02
    environment:
      - node.name=es02
      - cluster.name=es-docker-cluster
      - discovery.seed_hosts=es01,es03
      - cluster.initial_master_nodes=es01,es02,es03
      - bootstrap.memory_lock=true
      - "ES_JAVA_OPTS=-Xms512m -Xmx512m"
    ulimits:
      memlock:
        soft: -1
        hard: -1
    volumes:
      - data02:/usr/share/elasticsearch/data
    networks:
      - elastic
  es03:
    image: docker.elastic.co/elasticsearch/elasticsearch:8.6.2
    container_name: es03
    environment:
      - node.name=es03
      - cluster.name=es-docker-cluster
      - discovery.seed_hosts=es01,es02
      - cluster.initial_master_nodes=es01,es02,es03
      - bootstrap.memory_lock=true
      - "ES_JAVA_OPTS=-Xms512m -Xmx512m"
    ulimits:
      memlock:
        soft: -1
        hard: -1
    volumes:
      - data03:/usr/share/elasticsearch/data
    networks:
      - elastic

volumes:
  data01:
    driver: local
  data02:
    driver: local
  data03:
    driver: local

networks:
  elastic:
    driver: bridge

运行docker-compose以启动集群:

docker-compose up

猜你喜欢

转载自blog.csdn.net/qq_37726813/article/details/129917352