本篇文章首发于头条号单机如何搭建Elasticsearch集群?使用容器技术快速构建集群环境,欢迎关注头条号和微信公众号“大数据技术和人工智能”(微信搜索bigdata_ai_tech)获取更多干货,也欢迎关注CSDN博客。

在之前的文章里分别介绍过Elasticsearch本地环境安装和常用操作和Elasticsearch源码构建来搭建一个Standalone(单机集群)模式的Elasticsearch环境,那么这种方式的环境能否在实际生产环境中使用呢?很显然是可以的,但是强烈不推荐。随着大数据的不断发展成熟和大数据应用的落地实施,传统的技术架构的缺陷越来越明显,分布式、集群、微服务、云计算等技术架构越来越流行,这篇文章就来介绍一下如何使用Docker来搭建一个Elasticsearch的集群环境。

为什么是Docker?

Docker是一个高速创新的企业级容器平台,优点很多,比如:

  • 可以在任何地方安全地构建、共享和运行任何应用程序
  • 节省资源、降低成本
  • 部署非常灵活方便

让我们开始吧

这个例子会使用Docker来搭建一个主节点两个数据节点的Elasticsearch集群,首先要已经安装好docker,可以使用docker --version命令来看确认一下。

1、下面是目录结构,接下来会基于这个目录结构来操作

.
├── docker-compose.yml
├── config
│   ├── es01
│   │   └── elasticsearch.yml
│   ├── es02
│   │   └── elasticsearch.yml
│   └── es03
│       └── elasticsearch.yml
├── data
│   ├── es01
│   ├── es02
│   └── es03
└── logs├── es01├── es02└── es03

2、编写docker-compose.yml文件

version: '2'
services:es01:image: docker.elastic.co/elasticsearch/elasticsearch:6.2.0container_name: es01restart: alwaysenvironment:- "ES_JAVA_OPTS=-Xms512m -Xmx512m"ulimits:memlock:soft: -1hard: -1volumes:- ./data/es01:/usr/share/elasticsearch/data- ./config/es01/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml- ./logs/es01:/usr/share/elasticsearch/logsports:- 9200:9200- 9300:9300networks:- esnetes02:image: docker.elastic.co/elasticsearch/elasticsearch:6.2.0container_name: es02restart: alwaysenvironment:- "ES_JAVA_OPTS=-Xms512m -Xmx512m"ulimits:memlock:soft: -1hard: -1volumes:- ./data/es02:/usr/share/elasticsearch/data- ./config/es02/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml- ./logs/es02:/usr/share/elasticsearch/logsdepends_on:- es01networks:- esnetes03:image: docker.elastic.co/elasticsearch/elasticsearch:6.2.0container_name: es03restart: alwaysenvironment:- "ES_JAVA_OPTS=-Xms512m -Xmx512m"ulimits:memlock:soft: -1hard: -1volumes:- ./data/es03:/usr/share/elasticsearch/data- ./config/es03/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml- ./logs/es03:/usr/share/elasticsearch/logsdepends_on:- es01networks:- esnetnetworks:esnet:

Elasticsearch集群启动的时候,需要主节点启动成功后,其他节点才能启动并join到集群里,因此在配置文件里要保证这一点,官网Control startup and shutdown order in Compose这篇文章介绍了如何控制启动和关闭顺序的问题,我这里是通过配置restart: alwaysdepends_on来控制顺序的,这个办法比较简单。
另外,我这里使用的是6.2.0版本的elasticsearch,官方目前只提供了6.8.1和7.2.0版本的docker镜像,所以需要先自己做个6.2.0的镜像,下面简单说下如何制作镜像。

  • 新建一个目录并进入这个目录
  • 新建Dockerfile文件,文件内容为FROM docker.elastic.co/elasticsearch/elasticsearch:6.2.0,保存
  • 打开终端进入当前目录执行docker build .

3、分别编写每个节点的elasticsearch.yml配置

cluster.name: es-cluster
node.name: es01
node.master: true
node.data: false
path.data: /usr/share/elasticsearch/data
path.logs: /usr/share/elasticsearch/logs
bootstrap.memory_lock: true
network.host: 0.0.0.0
http.port: 9200
transport.tcp.port: 9300
discovery.zen.ping.unicast.hosts: ["es01", "es02", "es03"]
# discovery.seed_hosts: ["es02", "es03"]
# cluster.initial_master_nodes: ["es01", "es02", "es03"]http.cors.enabled: true
http.cors.allow-origin: "*"xpack.security.enabled: false
xpack.security.transport.ssl.enabled: false

每个节点的配置基本一样,这里只写一个节点的配置,其他节点主要改下node.namenode.masternode.data配置即可。

4、执行命令docker-compose up部署集群,可以在命令后面加上-d参数使后台执行。

5、验证
浏览器打开http://127.0.0.1:9200,输出如下则表示成功了。

{"name" : "es01","cluster_name" : "es-cluster","cluster_uuid" : "-zUZlE_lTJ2LX7JMq4R40g","version" : {"number" : "6.2.0","build_hash" : "37cdac1","build_date" : "2018-02-01T17:31:12.527918Z","build_snapshot" : false,"lucene_version" : "7.2.1","minimum_wire_compatibility_version" : "5.6.0","minimum_index_compatibility_version" : "5.0.0"},"tagline" : "You Know, for Search"
}

接下来再使用Elasticsearch提供的API来检查一下集群和节点的健康状况。
使用/_cluster/health/_cat/health?v查看集群健康状况,结果分别如下图:

使用/_cat/nodes?v查看节点,结果如下图:

至此,就已经完成了使用Docker搭建的Elasticsearch集群。

转载于:https://www.cnblogs.com/cjblogs/p/11175508.html

使用Docker搭建Elasticsearch集群环境相关推荐

  1. 用Docker搭建Elasticsearch集群

    用Docker搭建Elasticsearch集群 对于用Docker搭建分布式Elasticsearhc集群的一个介绍,以及一些实施中遇到问题的总结 搜索服务简述 结合业务的场景,在目前的商品体系需要 ...

  2. docker 添加端口映射_苟且偷生的程序猿没法摸鱼了,从docker搭建elasticsearch集群开始学习...

    最近刚换了公司,然后公司刚好使用的docker.而本人作为一个石锤的搬砖员,之前只知道搬砖们,对于这些东西确实没学过.今天在本地使用docker搭建elasticsearch集群,记录下过程,而且el ...

  3. Docker搭建ElasticSearch集群

    Docker搭建ElasticSearch集群 一.环境准备 Linux Verison(7.9) VMware(16) Docker(20.10.16) ElasticSearch(7.17.1) ...

  4. 基于Docker搭建Elasticsearch集群

    一.环境搭建 SpringBoot整合es时使用的集群环境,如果不搭建集群使用SpringBoot整合时会报错:None of the configured nodes are available 我 ...

  5. Docker搭建Clickhouse集群

    Docker搭建Clickhouse集群 环境说明 2C 2G 30G hostname IP 操作系统 服务 localhost 192.168.88.171 CentOs 7.8 clickhou ...

  6. 如何基于Docker快速搭建Elasticsearch集群?

    如何基于Docker快速搭建Elasticsearch集群? Elasticsearch  作为一个搜索引擎,我们对它的基本要求就是存储海量数据并且可以在非常短的时间内查询到我们想要的信息.所以第一步 ...

  7. Docker学习七:使用docker搭建Hadoop集群

    本博客简单分享了如何在Docker上搭建Hadoop集群,我的电脑是Ubuntu20,听同学说wsl2有些命令不对,所以建议在虚拟机里按照Ubuntu或者直接安装双系统吧 Docker学习一:Dock ...

  8. docker搭建pxc集群

    前言 随着mysql存储的数据量越来越大,mysql查询单表时的响应速度也会随之变慢,尤其是当单节点承载的数据量超出一定的范围后,比如单表超过2000万之后,查询响应速度会下降的很快,因此,一方面可以 ...

  9. Kubeadm介绍与使用Kubeadm搭建kubernetes集群环境

    文章目录 1.Kubeadm介绍 2.使用Kubeamd搭建kubernetes集群环境 2.1.首先准备一个三台的centos机器 2.2.yum -y update [在三台机器上执行更新包] 2 ...

最新文章

  1. asyncio之Coroutines,Tasks and Future
  2. Windows Phone 7 不温不火学习之《画图》
  3. 休眠锁定模式– PESSIMISTIC_FORCE_INCREMENT锁定模式如何工作
  4. pip默认使用国内镜像地址
  5. 阿里云推PostgreSQL 10 高可用版
  6. 精选| 2021年9月R新包推荐(第58期)
  7. 基于fitter库判断已知数据服从分布——python
  8. 小乔皮肤分析-缤纷独角兽/青蛇皮肤
  9. html表格中加背景,css表格怎么添加背景颜色?
  10. 7月22日自助装机配置专家点评
  11. 魏鹏机器人_智能刷脸、机器人、无人机...山东多地校园开学充满“科技感”
  12. JavaEE中的依赖性——依赖查找
  13. 贴一篇感人肺腑激动人心的博客(转自51cto)
  14. 【全教程】qt连接mysql——从qt编译mysql驱动到qt连接mysql数据库(二、编译连接)
  15. 感恩节快到了 Thanksgiving is coming,愿所有人健康平安!
  16. 接口测试介绍以及实践超详细篇
  17. Oracle number 类型转换为 varchar2
  18. 人工智能之语音合成,语音识别
  19. 这几个游戏玩不通关你还算黑客?
  20. 超实用的企业公众号运营方案分享,建议收藏

热门文章

  1. 本地连接阿里云RDS
  2. VirtWire 向客服发ticket
  3. [转]七大.NET开源框架
  4. 2009_01_15_星期三
  5. Linux入门第五集!MySQL8在Linux上的安装!MySQL的Linux资源分享!
  6. head在c语言中的作用,阅读以下说明和C语言函数,将应填入(n)处的字句写在对应栏内。【说明】 函数sort (NODE *head)的功能 - 赏学吧...
  7. mc pe Linux服务器,MC 基岩版(PE) 服务器来了
  8. python对接微信支付_python3接入微信企业支付实现小程序提现
  9. java cqlfilter_Geoserver系列:将CQL转换OGC的xml过滤
  10. python分治算法_python算法实现-分治法