经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » 程序设计 » Elasticsearch » 查看文章
使用Docker搭建Elasticsearch集群环境
来源:cnblogs  作者:chaojianok  时间:2019/7/15 8:37:29  对本文有异议

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

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

为什么是Docker?

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

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

让我们开始吧

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

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

  1. .
  2. ├── docker-compose.yml
  3. ├── config
  4. ├── es01
  5. └── elasticsearch.yml
  6. ├── es02
  7. └── elasticsearch.yml
  8. └── es03
  9. └── elasticsearch.yml
  10. ├── data
  11. ├── es01
  12. ├── es02
  13. └── es03
  14. └── logs
  15. ├── es01
  16. ├── es02
  17. └── es03

2、编写docker-compose.yml文件

  1. version: '2'
  2. services:
  3. es01:
  4. image: docker.elastic.co/elasticsearch/elasticsearch:6.2.0
  5. container_name: es01
  6. restart: always
  7. environment:
  8. - "ES_JAVA_OPTS=-Xms512m -Xmx512m"
  9. ulimits:
  10. memlock:
  11. soft: -1
  12. hard: -1
  13. volumes:
  14. - ./data/es01:/usr/share/elasticsearch/data
  15. - ./config/es01/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml
  16. - ./logs/es01:/usr/share/elasticsearch/logs
  17. ports:
  18. - 9200:9200
  19. - 9300:9300
  20. networks:
  21. - esnet
  22. es02:
  23. image: docker.elastic.co/elasticsearch/elasticsearch:6.2.0
  24. container_name: es02
  25. restart: always
  26. environment:
  27. - "ES_JAVA_OPTS=-Xms512m -Xmx512m"
  28. ulimits:
  29. memlock:
  30. soft: -1
  31. hard: -1
  32. volumes:
  33. - ./data/es02:/usr/share/elasticsearch/data
  34. - ./config/es02/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml
  35. - ./logs/es02:/usr/share/elasticsearch/logs
  36. depends_on:
  37. - es01
  38. networks:
  39. - esnet
  40. es03:
  41. image: docker.elastic.co/elasticsearch/elasticsearch:6.2.0
  42. container_name: es03
  43. restart: always
  44. environment:
  45. - "ES_JAVA_OPTS=-Xms512m -Xmx512m"
  46. ulimits:
  47. memlock:
  48. soft: -1
  49. hard: -1
  50. volumes:
  51. - ./data/es03:/usr/share/elasticsearch/data
  52. - ./config/es03/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml
  53. - ./logs/es03:/usr/share/elasticsearch/logs
  54. depends_on:
  55. - es01
  56. networks:
  57. - esnet
  58. networks:
  59. 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配置

  1. cluster.name: es-cluster
  2. node.name: es01
  3. node.master: true
  4. node.data: false
  5. path.data: /usr/share/elasticsearch/data
  6. path.logs: /usr/share/elasticsearch/logs
  7. bootstrap.memory_lock: true
  8. network.host: 0.0.0.0
  9. http.port: 9200
  10. transport.tcp.port: 9300
  11. discovery.zen.ping.unicast.hosts: ["es01", "es02", "es03"]
  12. # discovery.seed_hosts: ["es02", "es03"]
  13. # cluster.initial_master_nodes: ["es01", "es02", "es03"]
  14. http.cors.enabled: true
  15. http.cors.allow-origin: "*"
  16. xpack.security.enabled: false
  17. xpack.security.transport.ssl.enabled: false

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

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

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

  1. {
  2. "name" : "es01",
  3. "cluster_name" : "es-cluster",
  4. "cluster_uuid" : "-zUZlE_lTJ2LX7JMq4R40g",
  5. "version" : {
  6. "number" : "6.2.0",
  7. "build_hash" : "37cdac1",
  8. "build_date" : "2018-02-01T17:31:12.527918Z",
  9. "build_snapshot" : false,
  10. "lucene_version" : "7.2.1",
  11. "minimum_wire_compatibility_version" : "5.6.0",
  12. "minimum_index_compatibility_version" : "5.0.0"
  13. },
  14. "tagline" : "You Know, for Search"
  15. }

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

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

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

原文链接:http://www.cnblogs.com/cjblogs/p/11175508.html

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号