docker安装集群版ElasticSearch

本文涉及的产品
检索分析服务 Elasticsearch 版,2核4GB开发者规格 1个月
简介: docker安装集群版ElasticSearch

新建一个网络,后期把kibana、es都加入改网络里

docker network create es-net

下载elasticsearch镜像

 docker pull elasticsearch:7.6.2;

修改虚拟内存区域大小,否则会因为过小而无法启动:

sysctl -w vm.max_map_count=262144

新建目录
新建一个目录,创建三个文件夹:node-1、node-2、node-3
image.png

在每个节点文件夹下创建config,data文件夹
image.png

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

chmod 777 data/

编写配置文件(elasticsearch.yml)

#进入node-1目录下的config目录
cd node-1/config
#创建elasticsearch.yml
vim elasticsearch.yml
  • node-1
    #-------------------------------------------
    # es1
    # 集群的名称(各节点*集群名称*需要保持一致)
    cluster.name: "myt-escluster"
    # # # 节点的名称
    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: "myt-escluster"
# # # 节点的名称
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: "myt-escluster"
# # # 节点的名称
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:  "*"

编写docker-compose配置文件
docker-compose.yml与所有节点文件夹同级即可
image.png

vim docker-compose.yml

#docker-compose 文件格式的版本 3
version: "3"

services:
#服务名
  es1:
  #镜像名
    image: elasticsearch:7.6.2
  #容器实例名  
    container_name: es1
  #环境参数变量,设置JVM最大(小)可用内存 太小的话es启不起来
    environment:
      - "ES_JAVA_OPTS=-Xms256m -Xmx256m"
  #端口映射 宿主机端口->容器实例内端口
    ports:
      - "9201:9201"
      - "9301:9301"
  #挂载容器数据卷(类似于reids中的rdb,aof持久化技术,将容器内的数据保存到宿主机磁盘上,前边树宿主机目录,后边是容器目录)
    volumes:
      - /usr/docker/elasticsearchCluster/node-1/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml
      - /usr/docker/elasticsearchCluster/node-1/data:/usr/share/elasticsearch/data
  #自定义docker网络模式,在调用服务的时候不用写死IP 直接使用服务名调用
    networks: 
      - es-net

  es2:
    image: elasticsearch:7.6.2
    container_name: es2
    environment:
      - "ES_JAVA_OPTS=-Xms256m -Xmx256m"
    ports:
      - "9202:9202"
      - "9302:9302"
    volumes:
      - /usr/docker/elasticsearchCluster/node-2/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml
      - /usr/docker/elasticsearchCluster/node-2/data:/usr/share/elasticsearch/data
    networks: 
      - es-net

  es3:
    image: elasticsearch:7.6.2
    container_name: es3
    environment:
      - "ES_JAVA_OPTS=-Xms256m -Xmx256m"
    ports:
      - "9203:9203"
      - "9303:9303"
    volumes:
      - /usr/docker/elasticsearchCluster/node-3/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml
      - /usr/docker/elasticsearchCluster/node-3/data:/usr/share/elasticsearch/data
    networks: 
      - es-net

networks:
  es-net:

检查docker-compose.yml是否有语法错误

# 控制台什么都没有输出的话就是没有问题
docker-compose config -q;

image.png

如果提示找不到docker-compose命令,则在线安装即可:

# 安装docker-compose
curl -L https://github.com/docker/compose/releases/download/1.14.0-rc2/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose

chmod +x /usr/local/bin/docker-compose

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

docker-compose up -d

image.png

如果执行docker-compose up -d后没反应,则删除docker-compose,重新下载就行
rm /usr/local/bin/docker-compose

docker-compose -version查询docker-compose版本

查看docker进程是否已经启动

docker ps

image.png

查看集群状态
访问: http://192.168.52.128:9201/_cluster/health
image.png

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

docker-compose一键关闭容器实例

# 停掉容器
docker-compose stop;
# 停掉并删除容器
docker-compose down;

image.png

相关实践学习
使用阿里云Elasticsearch体验信息检索加速
通过创建登录阿里云Elasticsearch集群,使用DataWorks将MySQL数据同步至Elasticsearch,体验多条件检索效果,简单展示数据同步和信息检索加速的过程和操作。
ElasticSearch 入门精讲
ElasticSearch是一个开源的、基于Lucene的、分布式、高扩展、高实时的搜索与数据分析引擎。根据DB-Engines的排名显示,Elasticsearch是最受欢迎的企业搜索引擎,其次是Apache Solr(也是基于Lucene)。 ElasticSearch的实现原理主要分为以下几个步骤: 用户将数据提交到Elastic Search 数据库中 通过分词控制器去将对应的语句分词,将其权重和分词结果一并存入数据 当用户搜索数据时候,再根据权重将结果排名、打分 将返回结果呈现给用户 Elasticsearch可以用于搜索各种文档。它提供可扩展的搜索,具有接近实时的搜索,并支持多租户。
相关文章
|
3天前
|
存储 监控 负载均衡
Elasticsearch 集群副本
【8月更文挑战第24天】
27 13
|
3天前
|
存储 负载均衡 监控
Elasticsearch 集群分片
【8月更文挑战第24天】
27 12
|
3天前
|
存储 缓存 算法
Elasticsearch 集群节点间的通信
【8月更文挑战第25天】
15 6
|
3天前
|
存储 机器学习/深度学习 运维
Elasticsearch 集群节点的角色与职责
【8月更文挑战第25天】
24 6
|
3天前
|
存储 网络协议 搜索推荐
|
2天前
|
存储 缓存 监控
|
2天前
|
存储 负载均衡 算法
|
2天前
|
存储 缓存 监控
|
2天前
|
Ubuntu Docker 索引
2024年最新版 Ubuntu 20+ 上安装 Docker
这篇文章提供了在Ubuntu 20+版本上安装Docker的详细步骤,包括更新软件包索引、安装依赖包、添加Docker官方GPG密钥、设置Docker稳定版仓库、安装Docker CE以及验证安装是否成功,并指导如何将用户添加到docker组以非root用户身份运行Docker。
|
2天前
|
jenkins Java 持续交付
jenkins学习笔记之十九:Docker安装jenkins master及动、静态配置slave
jenkins学习笔记之十九:Docker安装jenkins master及动、静态配置slave
下一篇
云函数