资讯详情

Docker搭建ElasticSearch集群

Docker搭建ElasticSearch集群

一、环境准备

  1. Linux Verison(7.9)
  2. VMware(16)
  3. Docker(20.10.16)
  4. ElasticSearch(7.17.1)
  5. Docker-compose(2.7.0)

二、环境建设

2.1从Docker Hub上拉取ES镜像

docker pull elasticsearch:7.17.1

2.2.本地镜像

docker images

image-20220728210743180

2.3.修改虚拟内存的大小(ES所需内存较大 如果不改,以后会报错(亲自挖坑))
vim /etc/sysctl.conf  ##一个过程可以拥有VMA默认值为65536的虚拟内存区数量 vm.max_map_count=655360 
2.4重新加载配置文件

sysctl -p

2.5创建目录

  • 每个创建节点文件夹config,data

  • 修改每个节点文件夹下data目录的权限(不修改后会报错,权限不够)

    • chmod 777 data/
2.6编制配置文件(elasticsearch.yml)
  • node-1
#进入node-1目录下的config目录 cd node-1/config #创建elasticsearch.yml vim elasticsearch.yml #------------------------------------------- # es1 # 集群名称(每个节点)*集群名称*需要保持一致) cluster.name: "docker-cluster" # # # 节点的名称 node.name: node-1 # # # 此节点是否可以用作master节点 node.master: true # # # 节点是否存储节点 node.data: true # # # 节点是否预处理 如果是master节点的话 建议这里是true node.ingest: true #设置主机IP 0.0.0.0时可以访问外网 network.host: 0.0.0.0 # 配置端口 http.port: 9201 # 集群通信端口 transport.port: 9301 #集群内节点信息 每个节点将共享自己的参数 discovery.seed_hosts: ["es1:9301","es2:9302","es3:9303"] #集群的master候选节点目录。只有在初始化时才生效。 #这里只写node-1 并配置此参数 用于快速建设集群。集群自动启动node-1 是master cluster.initial_master_nodes: ["node-1"] #cross 跨域访问 配置此之后 head就可以用了 http.cors.enabled:  true http.cors.allow-origin:  "*"  
  • node-2
#进入node-2目录下的config目录 cd node-2/config #创建elasticsearch.yml vim elasticsearch.yml #------------------------------------------- # es2 # 集群名称(每个节点)*集群名称*需要保持一致) cluster.name: "docker-cluster" # # # 节点的名称 node.name: node-2 # # # 是否可以使用此节点master节点 node.master: true # # # 节点是否存储节点 node.data: true # # # 节点是否预处理 如果是master节点的话 建议这里是true node.ingest: true #设置主机IP 0.0.0.0时可访问外网到
network.host: 0.0.0.0
# 配置端口
http.port: 9202
# 集群通信端口
transport.port: 9302
#集群内节点信息 每个节点会共享自己的此参数
discovery.seed_hosts: ["es1:9301","es2:9302","es3:9303"]
#集群的master候选节点目录。只有在初始化的时候才生效。
#这里只写node-1 并且配置这个参数 是用于快速搭建集群。集群已启动自动node-1 是master
cluster.initial_master_nodes: ["node-1"]
#cross 跨域访问 配置这个之后 head就可以用了
http.cors.enabled:  true
http.cors.allow-origin:  "*"
  • node-3
#进入node-3目录下的config目录
cd node-3/config
#创建elasticsearch.yml
vim elasticsearch.yml
#-------------------------------------------
# es3
# 集群的名称(各节点*集群名称*需要保持一致)
cluster.name: "docker-cluster"
# # # 节点的名称
node.name: node-3
# # # 此节点是否可以用作master节点
node.master: true
# # # 此节点是否是存储节点
node.data: true
# # # 此节点是否是预处理节点 如果是master节点的话 建议这里是true
node.ingest: true
#设置主机IP 0.0.0.0时外网可以访问到
network.host: 0.0.0.0
# 配置端口
http.port: 9203
# 集群通信端口
transport.port: 9303
#集群内节点信息 每个节点会共享自己的此参数
discovery.seed_hosts: ["es1:9301","es2:9302","es3:9303"]
#集群的master候选节点目录。只有在初始化的时候才生效。
#这里只写node-1 并且配置这个参数 是用于快速搭建集群。集群已启动自动node-1 是master
cluster.initial_master_nodes: ["node-1"]
#cross 跨域访问 配置这个之后 head就可以用了
http.cors.enabled:  true
http.cors.allow-origin:  "*"
2.7编写docker-compose配置文件
  • docker-compose.yml与所有节点文件夹同级(相对路径好找)

  • vim docker-compose.yml
#docker-compose 文件格式的版本 3
version: "3"
 
services:
#服务名
  es1:
  #镜像名
    image: elasticsearch:7.17.1
  #容器实例名 
    container_name: es1
  #环境参数变量,设置JVM最大(小)可用内存 太小的话es启不起来
    environment:
      - "ES_JAVA_OPTS=-Xms256m -Xmx256m"
  #端口映射 宿主机端口->容器实例内端口
    ports:
      - "9201:9201"
      - "9301:9301"
  #挂载容器数据卷(类似于reids中的rdb,aof持久化技术,将容器内的数据保存到宿主机磁盘上)
    volumes:
      - /opt/mydata/elasticsearch/node-1/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml
      - /opt/mydata/elasticsearch/node-1/data:/usr/share/elasticsearch/data
  #自定义docker网络模式,在调用服务的时候不用写死IP 直接使用服务名调用
    networks: 
      - es_net
      
  es2:
    image: elasticsearch:7.17.1
    container_name: es2
    environment:
      - "ES_JAVA_OPTS=-Xms256m -Xmx256m"
    ports:
      - "9202:9202"
      - "9302:9302"
    volumes:
      - /opt/mydata/elasticsearch/node-2/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml
      - /opt/mydata/elasticsearch/node-2/data:/usr/share/elasticsearch/data
    networks: 
      - es_net
      
  es3:
    image: elasticsearch:7.17.1
    container_name: es3
    environment:
      - "ES_JAVA_OPTS=-Xms256m -Xmx256m"
    ports:
      - "9203:9203"
      - "9303:9303"
    volumes:
      - /opt/mydata/elasticsearch/node-3/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml
      - /opt/mydata/elasticsearch/node-3/data:/usr/share/elasticsearch/data
    networks: 
      - es_net

networks:
  es_net:   
 
  • 检查docker-compose.yml是否有语法错误

    docker-compose config -q

​ 控制台什么都没有输出的话就是没有问题

2.8使用docker-compose一键启动容器实例
  • 后台启动:docker-compose up -d

  • 查看docker进程是否已经启动

    docker ps

es集群启动成功 端口映射成功

2.9 查看集群状态
  • 访问:

    http://IP:9201/_cluster/health

3.0 docker-compose一键关闭容器实例

docker-compose down

三、寄语

标签: 贴片恢复二极管es1jsod

锐单商城拥有海量元器件数据手册IC替代型号,打造 电子元器件IC百科大全!

 锐单商城 - 一站式电子元器件采购平台  

 深圳锐单电子有限公司