Elasticsearch 是一种分布式的搜索和分析引擎,可以存储和检索各种类型的数据。在前端开发中,我们常常需要使用 Elasticsearch 来实现搜索和分析功能。在实际应用中,我们通常需要搭建一个 Elasticsearch 集群来支持高并发和高可用性的需求。本文将介绍如何使用 Docker 来搭建一个多节点 Elasticsearch 集群。
实验环境
- 操作系统:Ubuntu 18.04
- Docker:version 19.03.1
- Elasticsearch:version 6.8.6
1. Docker 镜像准备
在搭建 Elasticsearch 集群之前,我们需要先准备好 Docker 镜像。可以使用 Elasticsearch 官方提供的 Docker 镜像,也可以使用第三方的 Docker 镜像。这里我们使用 Elasticsearch 官方提供的 Docker 镜像。
docker pull elasticsearch:6.8.6
下载完成后,可以使用以下命令来确认是否下载成功。
docker images
2. 创建 Docker 网络
在搭建 Elasticsearch 集群之前,我们需要先创建一个 Docker 网络。这个网络将用于所有 Elasticsearch 节点之间的通信。
docker network create elasticsearch-network
3. 创建 Elasticsearch 集群
接下来,我们可以创建一个 Elasticsearch 集群。我们将创建 3 个节点,分别为 node-1、node-2 和 node-3。
创建一个目录来存放 Elasticsearch 数据:
mkdir -p ~/elasticsearch/data/node-1 mkdir -p ~/elasticsearch/data/node-2 mkdir -p ~/elasticsearch/data/node-3
在每个节点目录下创建一个 elasticsearch.yml 文件,用于配置 Elasticsearch 节点:
cd ~/elasticsearch/data/node-1 touch elasticsearch.yml cd ~/elasticsearch/data/node-2 touch elasticsearch.yml cd ~/elasticsearch/data/node-3 touch elasticsearch.yml
将以下配置添加到每个 elasticsearch.yml 文件中:
cluster.name: my-elasticsearch-cluster node.name: node-1 network.publish_host: node-1 discovery.zen.ping.unicast.hosts: ["node-1", "node-2", "node-3"]
- cluster.name:集群名称
- node.name:节点名称
- network.publish_host:主机名或 IP 地址,用于在 Elasticsearch 集群中标识节点
- discovery.zen.ping.unicast.hosts:用于发现 Elasticsearch 集群中的其他节点的 IP 地址
接下来,我们使用 Docker 命令来创建 3 个 Elasticsearch 节点。
-- -------------------- ---- ------- ------ --- -- ------ ------ - -- --------- -- --------- - -- ------------------- - -- -------------------------- - -- --------------------------------------- - -- ------------------ - -- ----------------------------- - -- ------------------------------------------------------- - -- ---------------------- --------- - -- --------------------------------------------------------- - --------- --------------------- - ------------------- ------ --- -- ------ ------ - -- --------- -- --------- - -- ------------------- - -- -------------------------- - -- --------------------------------------- - -- ------------------ - -- ----------------------------- - -- ------------------------------------------------------- - -- ---------------------- --------- - -- --------------------------------------------------------- - --------- --------------------- - ------------------- ------ --- -- ------ ------ - -- --------- -- --------- - -- ------------------- - -- -------------------------- - -- --------------------------------------- - -- ------------------ - -- ----------------------------- - -- ------------------------------------------------------- - -- ---------------------- --------- - -- --------------------------------------------------------- - --------- --------------------- - -------------------
在上面命令中,我们使用了以下参数:
- -d:后台运行容器
- --name:容器名称
- -p:映射容器端口到宿主机端口
- -e:设置环境变量
- -v:挂载一个本地目录到容器内部
- --network:指定容器使用的网络
4. 检查 Elasticsearch 集群
使用以下命令来检查 Elasticsearch 集群是否正常运行。
curl -XGET http://localhost:9200/_cat/nodes?v
执行成功后,应该会输出以下信息:
ip heap.percent ram.percent cpu load_1m load_5m load_15m node.role master name 172.18.0.2 23 93 5 0.00 0.01 0.01 dilmrt * node-1 172.18.0.4 28 93 5 0.00 0.01 0.01 dilmrt - node-3 172.18.0.3 27 93 5 0.00 0.01 0.01 dilmrt - node-2
其中,每个节点的信息包括 IP 地址、堆使用率、内存使用率、CPU 利用率,以及节点的角色和名称。
5. Elasticsearch 集群配置
在创建 Elasticsearch 集群时,可以进行更多的配置,包括设置副本和分片等参数。可以在 elasticsearch.yml 文件中设置这些参数,也可以使用 Elasticsearch API 来进行配置。
以下示例代码将创建一个索引,并设置 3 个分片和 1 个副本。
-- -------------------- ---- ------- ---- -- -------------- ----------------- ----- -------------------------------- --- - ---------- - - ------- - - ------------------ - -- -------------------- - - - - --
总结
本文介绍了如何使用 Docker 来搭建一个多节点 Elasticsearch 集群,并通过示例代码进行了演示。在实际应用中,可以根据需要对 Elasticsearch 进行更多的配置,以提高搜索和分析性能。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/64a5ef3048841e989426485b