如何部署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
2.3 部署ElasticSearch代理
2.3.1 部署ElasticSearch代理配置
In hd01
vim /etc/nginx/conf.d/web.cmdschool.org_19200.conf
加入如下配置,
server {
listen 19200;
server_name web.cmdschool.org;
add_header X-Frame-Options "SAMEORIGIN";
resolver 127.0.0.11 valid=10s;
client_max_body_size 100G;
client_body_buffer_size 512k;
proxy_buffer_size 128k;
proxy_buffers 4 256k;
proxy_max_temp_file_size 1m;
gzip on;
gzip_min_length 1k;
gzip_buffers 4 16k;
gzip_http_version 1.1;
gzip_comp_level 2;
gzip_types text/plain application/x-javascript text/css application/xml;
gzip_vary on;
proxy_connect_timeout 120s;
proxy_read_timeout 120s;
proxy_send_timeout 120s;
send_timeout 120s;
location / {
proxy_pass http://es-hosts;
proxy_http_version 1.1;
proxy_set_header Connection "Keep-Alive";
proxy_set_header Proxy-Connection "Keep-Alive";
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_cache_bypass $http_upgrade;
autoindex on;
add_header Access-Control-Allow-Origin *;
add_header Access-Control-Allow-Methods 'OPTIONS, HEAD, GET, POST, PUT, DELETE';
add_header Access-Control-Allow-Headers 'DNT,X-Mx-ReqToken,KeepAlive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Authorization';
if ($request_method = 'OPTIONS') {
return 204;
}
}
}
upstream es-hosts {
server es01:9200;
server es02:9200;
server es03:9200;
keepalive 15;
}
根据上面的配置,你需要创建如下别名解析,
web.cmdschool.org --> hd01.cmdschool.org
2.3.2 同步配置到其他节点
In hd01
nginxtool sync
如果你已经安装集群管理工具,则使用以上命令,否则使用如下命令手动同步配置,
rsync -avP --delete /data/docker/container-data/nginx/conf/ hd02:/data/docker/container-data/nginx/conf/ rsync -avP --delete /data/docker/container-data/nginx/conf/ hd03:/data/docker/container-data/nginx/conf/
需要注意的是,之前我们已经将“/data/docker/container-data/nginx/conf”软连接到“/etc/nginx”
2.3.3 应用节点配置
In hd0[1-3]
nginxtool reload
如果你已经安装集群管理工具,则使用以上命令,否则使用如下命令手动重载配置,
docker exec -it $(docker container ls | grep nginx | awk '{print $1}') bash
nginx -t
/etc/init.d/nginx reload
2.3.4 配置端口映射
In hd01
vim /data/docker/yml/nginx-stack.yml
增加如下配置,
nginx:
image: 'hd01.cmdschool.org:5000/nginx:1.20.2'
ports:
- target: 443
published: 443
- target: 80
published: 80
- target: 19200
published: 19200
然后你需要执行如下命令重启服务使配置生效,
nginxtool restart
如果你已经安装集群管理工具,则使用以上命令,否则使用如下命令手动重启,
docker stack rm nginx docker stack deploy -c /data/docker/yml/nginx-stack.yml nginx
然你,你需要使用浏览器测试如下连接的访问,
http://web.cmdschool.org:19200
参阅文档
====================
安装教程
————
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/
没有评论