Elasticsearch 是一个流行的开源搜索和分析引擎,它可以用于处理大量结构化和非结构化数据。Docker Compose 是一个用于定义和运行多个 Docker 容器的工具。在本文中,我们将介绍如何使用 Docker Compose 构建一个多节点 Elasticsearch 集群,以便在本地或生产环境中进行开发和测试。
准备工作
在开始之前,您需要安装 Docker 和 Docker Compose。您可以参考 Docker 官方文档来安装它们。您还需要创建一个新的目录,用于存储 Docker Compose 配置文件和 Elasticsearch 数据。
创建 Docker Compose 配置文件
在新目录中创建一个名为 docker-compose.yml
的文件,并添加以下内容:
// javascriptcn.com 代码示例 version: '3' services: elasticsearch: image: docker.elastic.co/elasticsearch/elasticsearch:7.14.0 environment: - "discovery.type=single-node" - "cluster.name=docker-cluster" volumes: - esdata:/usr/share/elasticsearch/data ports: - "9200:9200" networks: - esnet elasticsearch2: image: docker.elastic.co/elasticsearch/elasticsearch:7.14.0 environment: - "discovery.type=zen" - "cluster.name=docker-cluster" - "cluster.initial_master_nodes=elasticsearch,elasticsearch2" volumes: - esdata2:/usr/share/elasticsearch/data networks: - esnet elasticsearch3: image: docker.elastic.co/elasticsearch/elasticsearch:7.14.0 environment: - "discovery.type=zen" - "cluster.name=docker-cluster" - "cluster.initial_master_nodes=elasticsearch,elasticsearch2,elasticsearch3" volumes: - esdata3:/usr/share/elasticsearch/data networks: - esnet volumes: esdata: esdata2: esdata3: networks: esnet:
这个配置文件定义了一个 Elasticsearch 集群,其中包含三个节点:elasticsearch
、elasticsearch2
和elasticsearch3
。每个节点都使用 Elasticsearch 7.14.0 镜像,并在 volumes
部分中指定了数据卷,以便 Elasticsearch 数据可以持久化存储。每个节点都在 networks
部分中指定了一个名为 esnet
的网络,以便它们可以相互通信。
elasticsearch
节点是集群的初始节点,并使用 discovery.type=single-node
配置。这意味着它只有一个节点,因此它不需要发现其他节点。elasticsearch2
和 elasticsearch3
节点使用 discovery.type=zen
配置,以便它们可以自动发现其他节点。
启动 Elasticsearch 集群
运行以下命令来启动 Elasticsearch 集群:
docker-compose up -d
这个命令将会使用 Docker Compose 配置文件中定义的镜像创建和启动三个节点。您可以使用以下命令来查看节点是否已启动:
docker-compose ps
如果一切正常,您应该看到类似于以下输出:
Name Command State Ports ------------------------------------------------------------------------------------------------------------------ elasticsearch /usr/local/bin/docker-entr ... Up 0.0.0.0:9200->9200/tcp, 9300/tcp elasticsearch2 /usr/local/bin/docker-entr ... Up 9300/tcp elasticsearch3 /usr/local/bin/docker-entr ... Up 9300/tcp
测试 Elasticsearch 集群
现在,您可以使用 curl 命令来测试 Elasticsearch 集群是否正常工作。运行以下命令:
curl http://localhost:9200/_cluster/health?pretty
您应该看到类似于以下输出:
// javascriptcn.com 代码示例 { "cluster_name" : "docker-cluster", "status" : "green", "timed_out" : false, "number_of_nodes" : 3, "number_of_data_nodes" : 3, "active_primary_shards" : 0, "active_shards" : 0, "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 }
这个输出表明 Elasticsearch 集群已经启动,并且有三个节点,状态为绿色。
总结
在本文中,我们介绍了如何使用 Docker Compose 构建一个多节点 Elasticsearch 集群。通过使用 Docker Compose,我们可以轻松地在本地或生产环境中构建和测试 Elasticsearch 集群。如果您正在开发或测试 Elasticsearch 应用程序,这个技术将会非常有用。如果您想更深入地了解 Elasticsearch,您可以参考 Elasticsearch 官方文档。
来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/65642c82d2f5e1655dd93091