如何部署Docker ElasticSearch 7.13.2?
- By : Will
- Category : Docker, Elastic Stack
1 基础知识
请参阅如下章节
2 最佳实践
2.1 部署前的准备
2.1.1 部署Docker环境
本章使用如下Docker环境部署,参阅本章建议你先搭建以下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/
没有评论