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可以用于搜索各种文档。它提供可扩展的搜索,具有接近实时的搜索,并支持多租户。
相关文章
|
30天前
|
网络安全 Docker 容器
|
30天前
|
安全 Docker 容器
|
1月前
|
网络安全 Docker 容器
|
30天前
|
网络安全 数据安全/隐私保护 Docker
|
13天前
|
存储 监控 安全
Elasticsearch 集群
【11月更文挑战第3天】
91 54
|
5天前
|
缓存 监控 Java
Elasticsearch集群JVM调优
Elasticsearch集群JVM调优
18 5
|
9天前
|
监控 API 索引
Elasticsearch集群健康检查
【11月更文挑战第4天】
23 3
|
13天前
|
存储 安全 数据管理
如何在 Rocky Linux 8 上安装和配置 Elasticsearch
本文详细介绍了在 Rocky Linux 8 上安装和配置 Elasticsearch 的步骤,包括添加仓库、安装 Elasticsearch、配置文件修改、设置内存和文件描述符、启动和验证 Elasticsearch,以及常见问题的解决方法。通过这些步骤,你可以快速搭建起这个强大的分布式搜索和分析引擎。
29 5
|
23天前
|
Prometheus 监控 Cloud Native
基于Docker安装Grafana和Prometheus
Grafana 是一款用 Go 语言开发的开源数据可视化工具,支持数据监控和统计,并具备告警功能。通过 Docker 部署 Grafana 和 Prometheus,可实现系统数据的采集、展示和告警。默认登录用户名和密码均为 admin。配置 Prometheus 数据源后,可导入主机监控模板(ID 8919)进行数据展示。
59 2
|
25天前
|
消息中间件 Linux RocketMQ
在Red Hat Enterprise Linux 9上使用Docker快速安装并部署
通过以上步骤,你可以在Red Hat Enterprise Linux 9上使用Docker快速安装并部署RocketMQ。这种方法不仅简化了安装过程,还提供了一个灵活的环境来管理和扩展消息队列系统。RocketMQ作为一款高性能的分布式消息系统,通过Docker可以实现快速部署和高效管理。
56 2