Elasticsearch
1.下载镜像
# 拉取镜像
docker pull docker.elastic.co/elasticsearch/elasticsearch:7.15.2
docker pull docker.elastic.co/kibana/kibana:7.15.2
2.创建挂载目录
# 挂载目录
# 创建Es目录,在Es目录分别创建es01,es02,es03三个目录作为三个节点的挂载目录,创建kibana目录
# 创建容器内的es配置文件、es数据、es插件挂载目录
mkdir elastic
mkdir es01 es02 es03 kibana
mkdir conf data plugins
3.制作docker-compose.yml
touch docker-compose.yml
vim docker-compose.yml
version: '3'
services:
es01:
image: ${image}
container_name: es01
environment:
- discovery.seed_hosts=es02,es03
- cluster.initial_master_nodes=es01,es02,es03
- "ES_JAVA_OPTS=-Xms512m -Xmx512m"
ulimits:
memlock:
soft: -1
hard: -1
volumes:
- /home/docker-compose/elastic/es01/data:/usr/share/elasticsearch/data
- /home/docker-compose/elastic/es01/conf/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml
- /home/docker-compose/elastic/es01/plugins:/usr/share/elasticsearch/plugins
ports:
- 9200:9200
networks:
- elastic
es02:
image: ${image}
container_name: es02
environment:
- discovery.seed_hosts=es01,es03
- cluster.initial_master_nodes=es01,es02,es03
- "ES_JAVA_OPTS=-Xms512m -Xmx512m"
ulimits:
memlock:
soft: -1
hard: -1
volumes:
- /home/docker-compose/elastic/es02/data:/usr/share/elasticsearch/data
- /home/docker-compose/elastic/es02/conf/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml
- /home/docker-compose/elastic/es02/plugins:/usr/share/elasticsearch/plugins
ports:
- 9201:9201
networks:
- elastic
es03:
image: ${image}
container_name: es03
environment:
- discovery.seed_hosts=es01,es02
- cluster.initial_master_nodes=es01,es02,es03
- "ES_JAVA_OPTS=-Xms512m -Xmx512m"
ulimits:
memlock:
soft: -1
hard: -1
volumes:
- /home/docker-compose/elastic/es03/data:/usr/share/elasticsearch/data
- /home/docker-compose/elastic/es03/conf/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml
- /home/docker-compose/elastic/es03/plugins:/usr/share/elasticsearch/plugins
ports:
- 9202:9202
networks:
- elastic
kibana:
image: ${image_kibana}
container_name: kibana
depends_on:
- es_cluster
volumes:
- /home/docker-compose/elastic/kibana/kibana.yml:/usr/share/kibana/config/kibana.yml
networks:
- elastic
ports:
- 5601:5601
networks:
elastic:
driver: bridge
4.同级目录下,创建.env文件,${}占位符的变量定义
image=elasticsearch7:7.15.2
image_kibana=kibana:7.15.2
5.编写es节点的elasricsearch.yml配置文件和kibana的kibana.yml配置文件
es01/conf/elasricsearch.yml
cluster.name: es_cluster # 集群名称,集群名称相同的节点自动组成一个集群
node.name: es01 # 节点名称
network.host: 0.0.0.0 # 同时设置bind_host和publish_host
http.port: 9200 # rest客户端连接端口
transport.tcp.port: 9300 # 集群中节点互相通信端口
node.master: true # 设置master角色
node.data: true # 设置data角色
node.ingest: true # 设置ingest角色 在索引之前,对文档进行预处理,支持pipeline管道,相当于过滤器
bootstrap.memory_lock: false
node.max_local_storage_nodes: 1
http.cors.enabled: true # 跨域配置
http.cors.allow-origin: /.*/ # 跨域配置
es02/conf/elasricsearch.yml
cluster.name: es_cluster
node.name: es02
network.host: 0.0.0.0
http.port: 9201
transport.tcp.port: 9300
node.master: true
node.data: true
node.ingest: true
bootstrap.memory_lock: false
node.max_local_storage_nodes: 1
http.cors.enabled: true
http.cors.allow-origin: /.*/
es03/conf/elasricsearch.yml
cluster.name: es_cluster
node.name: es03
network.host: 0.0.0.0
http.port: 9202
transport.tcp.port: 9300
node.master: true
node.data: true
node.ingest: true
bootstrap.memory_lock: false
node.max_local_storage_nodes: 1
http.cors.enabled: true
http.cors.allow-origin: /.*/
kibana/kibana.yml
elasticsearch.hosts: ["http://es01:9200","http://es02:9201","http://es03:9202"]
server.host: 0.0.0.0
server.port: 5601
6.启动容器
docker-compose up -d
7.注意:
#报错“max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]”
#临时修改
sudo sysctl -w vm.max_map_count=262144
#永久修改
vim /etc/sysctl.conf
#设置一个进程可以拥有的VMA(虚拟内存区域)的数量
vm.max_map_count=262144
#从指定的文件加载系统参数,如不指定即从/etc/sysctl.conf中加载
sysctl -p
8.访问
#elasticsearch
http://172.20.2.1:9200/
#kibana
http://172.20.2.1:5601/