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创建目录
  • 自定义目录下创建三个文件夹(节点1,2,3)

image-20220728212924824

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

    image-20220728213717400

  • 修改每个节点文件夹下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与所有节点文件夹同级(相对路径好找)

image-20220728215432543

  • 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

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

image-20220728220729567

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

image-20220728220956660

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

    docker ps

image-20220728221142354

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

2.9 查看集群状态
  • 访问:

    http://IP:9201/_cluster/health

image-20220728221700684

status状态为green,集群搭建成功

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

docker-compose down
image-20220728221935339

三、寄语

最后文中如果有那里有错别的地方希望指出,没有看得特别仔细,希望此次演示能给您带来方便,感谢阅读!

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值