实战案例丨用 Docker Compose 快速运行一个 3 节点 Elasticsearch 集群

本文涉及的产品
Elasticsearch Serverless检索通用型,资源抵扣包 100CU*H
简介: 使用 Docker 在笔记本电脑上安装 Elasticsearch 集群进行测试是非常方便的。在这篇文章中,我将向您展示如何快速、简便地在 docker 上运行一个3节点的 elasticsearch 集群进行测试。

screenshot

出品丨Docker公司(ID:docker-cn)
编译丨小东
每周一、三、五,与您不见不散!


使用 Docker 在笔记本电脑上安装 Elasticsearch 集群进行测试是非常方便的。在这篇文章中,我将向您展示如何快速、简便地在 docker 上运行一个3节点的 elasticsearch 集群进行测试。


先决条件

我们需要设置“vm.max_map_count”内核参数:

$ sudo sysctl -w vm.max_map_count=262144
AI 代码解读

若要永久设置此值,请将其添加到“/etc/sysctl.conf”并使用“sudo sysctl -p”命令重新加载。


Docker Compose

我们将引用的 docker compose 文件:

version: '2.2'
services:
 elasticsearch:
   image: docker.elastic.co/elasticsearch/elasticsearch:6.2.4
   container_name: elasticsearch
   environment:
     - cluster.name=docker-cluster
     - bootstrap.memory_lock=true
     - http.cors.enabled=true
     - http.cors.allow-origin=*
     - "ES_JAVA_OPTS=-Xms512m -Xmx512m"
   ulimits:
     memlock:
       soft: -1
       hard: -1
   volumes:
     - esdata1:/home/ruan/workspace/docker/elasticsearch/data
   ports:
     - 9200:9200
   networks:
     - esnet
 elasticsearch2:
   image: docker.elastic.co/elasticsearch/elasticsearch:6.2.4
   container_name: elasticsearch2
   environment:
     - cluster.name=docker-cluster
     - bootstrap.memory_lock=true
     - http.cors.enabled=true
     - http.cors.allow-origin=*
     - "ES_JAVA_OPTS=-Xms512m -Xmx512m"
     - "discovery.zen.ping.unicast.hosts=elasticsearch"
   ulimits:
     memlock:
       soft: -1
       hard: -1
   volumes:
     - esdata2:/home/ruan/workspace/docker/elasticsearch/data
   networks:
     - esnet
 elasticsearch3:
   image: docker.elastic.co/elasticsearch/elasticsearch:6.2.4
   container_name: elasticsearch3
   environment:
     - cluster.name=docker-cluster
     - bootstrap.memory_lock=true
     - http.cors.enabled=true
     - http.cors.allow-origin=*
     - "ES_JAVA_OPTS=-Xms512m -Xmx512m"
     - "discovery.zen.ping.unicast.hosts=elasticsearch"
   ulimits:
     memlock:
       soft: -1
       hard: -1
   volumes:
     - esdata3:/home/ruan/workspace/docker/elasticsearch/data
   networks:
     - esnet
 
 kibana:
   image: 'docker.elastic.co/kibana/kibana:6.3.2'
   container_name: kibana
   environment:
     SERVER_NAME: kibana.local
     ELASTICSEARCH_URL: http://elasticsearch:9200
   ports:
     - '5601:5601'
   networks:
     - esnet
 
 headPlugin:
   image: 'mobz/elasticsearch-head:5'
   container_name: head
   ports:
     - '9100:9100'
   networks:
     - esnet
 
volumes:
 esdata1:
   driver: local
 esdata2:
   driver: local
 esdata3:
   driver: local
 
networks:
 esnet:
AI 代码解读

现在,只需确保我们在 compose 文件中所引用的路径是真实存在的,在我展示的实例中,其路径是“/home/ruan/workspace/docker/elasticsearch/data”。


部 署

使用 docker compose 来部署 elasticsearch 集群:

$ docker-compose up
AI 代码解读

它将在前台运行,您可以在控制台看到其输出结果。


测试 Elasticsearch

接下来,让我们运行几个查询。首先,检查群集运行状况 api:

$ curl http://127.0.0.1:9200/_cluster/health?pretty
{
 "cluster_name" : "docker-cluster",
 "status" : "green",
 "timed_out" : false,
 "number_of_nodes" : 3,
 "number_of_data_nodes" : 3,
 "active_primary_shards" : 1,
 "active_shards" : 2,
 "relocating_shards" : 0,
 "initializing_shards" : 0,
 "unassigned_shards" : 0,
 "delayed_unassigned_shards" : 0,
 "number_of_pending_tasks" : 0,
 "number_of_in_flight_fetch" : 0,
 "task_max_waiting_in_queue_millis" : 0,
 "active_shards_percent_as_number" : 100.0
}
AI 代码解读

创建一个复制计数为2的索引:

$ curl -H "Content-Type: application/json" -XPUT http://127.0.0.1:9200/test -d '{"number_of_replicas": 2}'
AI 代码解读

将文档提取到 elasticsearch:

$ curl -H "Content-Type: application/json" -XPUT http://127.0.0.1:9200/test/docs/1 -d '{"name": "ruan"}'
{"_index":"test","_type":"docs","_id":"1","_version":1,"result":"created","_shards":{"total":3,"successful":3,"failed":0},"_seq_no":0,"_primary_term":1}
AI 代码解读

查看索引:

$ curl http://127.0.0.1:9200/_cat/indices?v
health status index                      uuid                  pri rep docs.count docs.deleted store.size pri.store.size
green open  test                       w4p2Q3fTR4uMSYBfpNVPqw  5  2         1           0     3.3kb         1.1kb
green open  .monitoring-es-6-2018.04.29 W69lql-rSbORVfHZrj4vug  1  1      1601          38       4mb           2mb
AI 代码解读

Kibana

Kibana 也包含在应用栈中,可以通过“http://localhost:5601/”访问它,如下图所示:

screenshot


Elasticsearch Head UI

我喜欢直接使用 RESTFul API,但是如果您想使用 UI 与 Elasticsearch 进行交互,你可以通过“http:// localhost:9100/”访问它,如下图所示:

screenshot


删除群集

因为它在前台运行,所以您只需按下“ctrl + c”就可以持续地将数据保存在我们的 compose 文件中。当您再次启动集群时,数据仍然会存在。

浏览 https://www.elastic.co/guide/en/elasticsearch/reference/current/docker.html 了解更多Elasticsearch 的相关信息!

相关实践学习
使用阿里云Elasticsearch体验信息检索加速
通过创建登录阿里云Elasticsearch集群,使用DataWorks将MySQL数据同步至Elasticsearch,体验多条件检索效果,简单展示数据同步和信息检索加速的过程和操作。
ElasticSearch 入门精讲
ElasticSearch是一个开源的、基于Lucene的、分布式、高扩展、高实时的搜索与数据分析引擎。根据DB-Engines的排名显示,Elasticsearch是最受欢迎的企业搜索引擎,其次是Apache Solr(也是基于Lucene)。 ElasticSearch的实现原理主要分为以下几个步骤: 用户将数据提交到Elastic Search 数据库中 通过分词控制器去将对应的语句分词,将其权重和分词结果一并存入数据 当用户搜索数据时候,再根据权重将结果排名、打分 将返回结果呈现给用户 Elasticsearch可以用于搜索各种文档。它提供可扩展的搜索,具有接近实时的搜索,并支持多租户。
目录
打赏
0
0
0
0
70
分享
相关文章
让搜索引擎“更懂你”:AI × Elasticsearch MCP Server 开源实战
本文介绍基于Model Context Protocol (MCP)标准的Elasticsearch MCP Server,它为AI助手(如Claude、Cursor等)提供与Elasticsearch数据源交互的能力。文章涵盖MCP概念、Elasticsearch MCP Server的功能特性及实际应用场景,例如数据探索、开发辅助。通过自然语言处理,用户无需掌握复杂查询语法即可操作Elasticsearch,显著降低使用门槛并提升效率。项目开源地址:<https://github.com/awesimon/elasticsearch-mcp>,欢迎体验与反馈。
118 1
Docker部署RocketMQ5.2.0集群
本文详细介绍了如何使用Docker和Docker Compose部署RocketMQ 5.2.0集群。通过创建配置文件、启动集群和验证容器状态,您可以快速搭建起一个RocketMQ集群环境。希望本文能够帮助您更好地理解和应用RocketMQ,提高消息中间件的部署和管理效率。
322 91
实战~如何组织一个多容器项目docker-compose
本文介绍了如何使用Docker搭建Nginx、PHP和MySQL的环境。首先启动Nginx容器并查看IP地址,接着启动Alpine容器并安装curl测试连通性。通过`--link`方式或`docker-compose`配置文件实现服务间的通信。最后展示了Nginx配置文件和PHP代码示例,验证了各服务的正常运行。
140 3
实战~如何组织一个多容器项目docker-compose
如何使用Prometheus监控Docker Swarm集群的资源使用情况?
还可以根据实际需求进行进一步的配置和优化,如设置告警规则,当资源使用超出阈值时及时发出警报。通过这些步骤,能够有效地使用 Prometheus 对 Docker Swarm 集群的资源进行监控和管理。
147 8
如何监控Docker Swarm集群的性能?
如何监控Docker Swarm集群的性能?
232 8
Docker容器性能调优的关键技巧,涵盖CPU、内存、网络及磁盘I/O的优化策略,结合实战案例,旨在帮助读者有效提升Docker容器的性能与稳定性。
本文介绍了Docker容器性能调优的关键技巧,涵盖CPU、内存、网络及磁盘I/O的优化策略,结合实战案例,旨在帮助读者有效提升Docker容器的性能与稳定性。
391 7
Docker Swarm集群的扩展与缩容策略,涵盖其意义、方法、步骤及注意事项
本文深入探讨了Docker Swarm集群的扩展与缩容策略,涵盖其意义、方法、步骤及注意事项,旨在帮助用户高效管理集群资源,适应业务变化,确保服务稳定性和资源优化。
119 6
深入探索容器化技术——Docker 的实战应用
深入探索容器化技术——Docker 的实战应用
192 0
深入探索容器化技术——Docker的实战应用
深入探索容器化技术——Docker的实战应用
73 0
Docker 的实战应用与优化策略
Docker 的实战应用与优化策略
75 0