如何部署Docker ElasticSearch 7.13.2?

Docker

1 基础知识

请参阅如下章节

如何部署Docker ElasticSearch?

2 最佳实践

2.1 部署前的准备

2.1.1 部署Docker环境

本章使用如下Docker环境部署,参阅本章建议你先搭建以下Docker集群环境并熟悉,

如何部署Oracle Linux 10.x Docker生产集群环境?

2.1.2 准备elasticsearch镜像

In hd01

cd /data/docker/images/
docker load -i elasticsearch:7.13.2.tar
docker tag elasticsearch:7.13.2 hd01.cmdschool.org:5000/elasticsearch:7.13.2
docker push hd01.cmdschool.org:5000/elasticsearch:7.13.2
docker image rm elasticsearch:7.13.2

另外,安装包的离线下载请在能上网的docker环境的机器上使用如下命令,

docker pull elasticsearch:7.13.2
docker save elasticsearch:7.13.2 -o elasticsearch:7.13.2.tar

另外,其他版本请从以下链接下载,
https://hub.docker.com/r/elasticsearch/server

2.2 部署elasticsearch

In hd01

2.2.1 创建服务配置文件

vim /data/docker/yml/es7132-01-stack.yml

加入如下配置,

version: '3.8'
services:
  es01:
    image: hd01.cmdschool.org:5000/elasticsearch:7.13.2
    environment:
      - node.name=es01
      - cluster.name=es-cluster
      - discovery.seed_hosts=es01,es02,es03
      - cluster.initial_master_nodes=es01,es02,es03
      - "ES_JAVA_OPTS=-Xms8G -Xmx8G"
      - TZ=Asia/Shanghai
      - node.ingest=true
      - network.host=0.0.0.0
      - network.publish_host=_eth0:ipv4_
    volumes:
      - /data/docker/container-data/elasticsearch/data:/usr/share/elasticsearch/data
    networks:
      - elknet
    logging:
      driver: "json-file"
      options:
        max-size: "100m"
        max-file: "10"
    deploy:
      replicas: 1
      endpoint_mode: dnsrr
      placement:
        constraints: [node.labels.es01 == true]

networks:
  elknet:
    external: true
    name: elknet

以上命令创建第一个节点的配置,以下命令创建第二节点的配置,

vim /data/docker/yml/es7132-02-stack.yml

加入如下配置,

version: '3.8'
services:
  es02:
    image: hd01.cmdschool.org:5000/elasticsearch:7.13.2
    environment:
      - node.name=es02
      - cluster.name=es-cluster
      - discovery.seed_hosts=es01,es02,es03
      - cluster.initial_master_nodes=es01,es02,es03
      - "ES_JAVA_OPTS=-Xms8G -Xmx8G"
      - TZ=Asia/Shanghai
      - node.ingest=true
      - network.host=0.0.0.0
      - network.publish_host=_eth0:ipv4_
    volumes:
      - /data/docker/container-data/elasticsearch/data:/usr/share/elasticsearch/data
    networks:
      - elknet
    logging:
      driver: "json-file"
      options:
        max-size: "100m"
        max-file: "10"
    deploy:
      replicas: 1
      endpoint_mode: dnsrr
      placement:
        constraints: [node.labels.es02 == true]

networks:
  elknet:
    external: true
    name: elknet

以下命令创建第三节点的配置,

vim /data/docker/yml/es7132-03-stack.yml

加入如下配置,

version: '3.8'
services:
  es03:
    image: hd01.cmdschool.org:5000/elasticsearch:7.13.2
    environment:
      - node.name=es03
      - cluster.name=es-cluster
      - discovery.seed_hosts=es01,es02,es03
      - cluster.initial_master_nodes=es01,es02,es03
      - "ES_JAVA_OPTS=-Xms8G -Xmx8G"
      - TZ=Asia/Shanghai
      - node.ingest=true
      - network.host=0.0.0.0
      - network.publish_host=_eth0:ipv4_
    volumes:
      - /data/docker/container-data/elasticsearch/data:/usr/share/elasticsearch/data
    networks:
      - elknet
    logging:
      driver: "json-file"
      options:
        max-size: "100m"
        max-file: "10"
    deploy:
      replicas: 1
      endpoint_mode: dnsrr
      placement:
        constraints: [node.labels.es03 == true]

networks:
  elknet:
    external: true
    name: elknet

根据上面的配置,我们需要执行如下命令准备数据目录,

mkdir -p /data/docker/container-data/elasticsearch/data
chown 1000:docker -R /data/docker/container-data/elasticsearch
chmod 775 -R /data/docker/container-data/elasticsearch

根据上面的配置,我们需要执行如下命令准备网络,

docker network create --opt encrypted --driver overlay --attachable --subnet=192.168.16.0/20  elknet

根据上面的配置,我们需要执行如下命令标记运行节点

docker node update --label-add es01=true hd01.cmdschool.org
docker node update --label-add es02=true hd02.cmdschool.org
docker node update --label-add es03=true hd03.cmdschool.org

2.2.2 部署服务

docker stack deploy -c /data/docker/yml/es7132-01-stack.yml es-cluster
docker stack deploy -c /data/docker/yml/es7132-02-stack.yml es-cluster
docker stack deploy -c /data/docker/yml/es7132-03-stack.yml es-cluster

2.2.3 排错方法

In hd0[1-3]

docker exec -it $(docker container ls | grep es-cluster_es | awk '{print $1}') /bin/bash

然后可以使用如下命令查看ElasticSearch的日志,

tail -f /usr/share/elasticsearch/logs/gc.log

参阅文档
====================

安装教程
————
https://www.elastic.co/guide/en/elasticsearch/reference/current/docker.html

hub安装源
—————
https://registry.hub.docker.com/_/elasticsearch

compose文件规范
—————-
https://docs.docker.com/compose/compose-file/

docker网络创建
————–
https://docs.docker.com/engine/reference/commandline/network_create/

没有评论

发表回复

Docker
如何部署Docker ElasticSearch 7.13.2的安全认证?

1 前言 一个问题,一篇文章,一出故事。 本章将实现启用Docker ElasticSearch 7 …

Docker
如何部署生产环境的Portainer服务?

1 部署Docker集群 如何部署Oracle Linux 10.x Docker生产集群环境? 2 …

Docker
如何部署生产环境的Docker Registry服务?

1 部署Docker集群 如何部署Oracle Linux 10.x Docker生产环境? 2 部 …