【Docker-compose Elasticsearch搭建集群】

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/
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值