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可以用于搜索各种文档。它提供可扩展的搜索,具有接近实时的搜索,并支持多租户。
相关文章
|
12天前
|
网络安全 Docker 容器
|
12天前
|
安全 Docker 容器
|
15天前
|
网络安全 Docker 容器
|
12天前
|
网络安全 数据安全/隐私保护 Docker
|
22天前
|
运维 监控 数据安全/隐私保护
管理 Docker Swarm 集群注意事项
【10月更文挑战第7天】
33 3
|
22天前
|
负载均衡 监控 安全
如何管理 Docker Swarm 集群和节点
【10月更文挑战第7天】
35 3
|
18天前
|
关系型数据库 MySQL Linux
Docker安装Mysql5.7,解决无法访问DockerHub问题
当 Docker Hub 无法访问时,可以通过配置国内镜像加速来解决应用安装失败和镜像拉取超时的问题。本文介绍了如何在 CentOS 上一键配置国内镜像加速,并成功拉取 MySQL 5.7 镜像。
160 2
Docker安装Mysql5.7,解决无法访问DockerHub问题
|
5天前
|
Prometheus 监控 Cloud Native
基于Docker安装Grafana和Prometheus
Grafana 是一款用 Go 语言开发的开源数据可视化工具,支持数据监控和统计,并具备告警功能。通过 Docker 部署 Grafana 和 Prometheus,可实现系统数据的采集、展示和告警。默认登录用户名和密码均为 admin。配置 Prometheus 数据源后,可导入主机监控模板(ID 8919)进行数据展示。
32 2
|
7天前
|
消息中间件 Linux RocketMQ
在Red Hat Enterprise Linux 9上使用Docker快速安装并部署
通过以上步骤,你可以在Red Hat Enterprise Linux 9上使用Docker快速安装并部署RocketMQ。这种方法不仅简化了安装过程,还提供了一个灵活的环境来管理和扩展消息队列系统。RocketMQ作为一款高性能的分布式消息系统,通过Docker可以实现快速部署和高效管理。
25 2
|
8天前
|
消息中间件 Linux RocketMQ
在Red Hat Enterprise Linux 9上使用Docker快速安装并部署
通过以上步骤,你可以在Red Hat Enterprise Linux 9上使用Docker快速安装并部署RocketMQ。这种方法不仅简化了安装过程,还提供了一个灵活的环境来管理和扩展消息队列系统。RocketMQ作为一款高性能的分布式消息系统,通过Docker可以实现快速部署和高效管理。
19 3