跳到主要内容

Elasticsearch 集群搭建

Elasticsearch是一个分布式搜索引擎,广泛用于全文搜索、日志分析和实时数据分析等场景。为了确保高可用性和扩展性,Elasticsearch通常以集群的形式运行。本文将逐步指导你如何搭建一个Elasticsearch集群。

什么是Elasticsearch集群?

Elasticsearch集群是由一个或多个节点(Node)组成的集合,这些节点共同存储数据并提供搜索服务。集群中的每个节点都可以处理搜索请求,并且数据会在多个节点之间进行分片(Shard)和复制(Replica),以确保数据的高可用性和容错性。

搭建Elasticsearch集群的步骤

1. 安装Java

Elasticsearch是基于Java开发的,因此首先需要安装Java。确保你的系统上安装了Java 8或更高版本。

bash
# 检查Java版本
java -version

如果未安装Java,可以使用以下命令安装:

bash
# 在Ubuntu上安装Java
sudo apt update
sudo apt install openjdk-11-jdk

2. 下载并安装Elasticsearch

访问Elasticsearch官方网站下载最新版本的Elasticsearch。下载完成后,解压并安装:

bash
# 下载Elasticsearch
wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.10.1-linux-x86_64.tar.gz

# 解压
tar -xzf elasticsearch-7.10.1-linux-x86_64.tar.gz

# 进入目录
cd elasticsearch-7.10.1

3. 配置Elasticsearch集群

在Elasticsearch的配置文件config/elasticsearch.yml中,我们需要配置集群的名称、节点名称、网络绑定地址等。

yaml
# config/elasticsearch.yml

# 集群名称,所有节点必须相同
cluster.name: my_cluster

# 节点名称,每个节点必须唯一
node.name: node-1

# 绑定地址,设置为0.0.0.0以允许外部访问
network.host: 0.0.0.0

# 集群初始主节点
cluster.initial_master_nodes: ["node-1"]
备注

如果你有多个节点,确保每个节点的node.name是唯一的,并且cluster.name相同。

4. 启动Elasticsearch节点

在配置完成后,可以启动Elasticsearch节点:

bash
# 启动Elasticsearch
./bin/elasticsearch

启动后,你可以通过访问http://localhost:9200来验证Elasticsearch是否正常运行。

5. 添加更多节点

要创建一个多节点的集群,只需在其他机器上重复上述步骤,并确保它们的cluster.name相同。每个节点的node.name必须唯一。

例如,第二个节点的配置可能如下:

yaml
# config/elasticsearch.yml

cluster.name: my_cluster
node.name: node-2
network.host: 0.0.0.0
discovery.seed_hosts: ["node-1_ip_address"]
cluster.initial_master_nodes: ["node-1"]
提示

discovery.seed_hosts用于指定集群中其他节点的IP地址,以便新节点能够加入集群。

6. 验证集群状态

你可以使用Elasticsearch的REST API来检查集群状态:

bash
curl -X GET "localhost:9200/_cluster/health?pretty"

输出将显示集群的健康状态、节点数量等信息。

json
{
"cluster_name" : "my_cluster",
"status" : "green",
"timed_out" : false,
"number_of_nodes" : 2,
"number_of_data_nodes" : 2,
"active_primary_shards" : 10,
"active_shards" : 20,
"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集群来存储和搜索商品信息。通过将数据分布在多个节点上,你可以确保即使某个节点发生故障,搜索服务仍然可用。

总结

通过本文,你已经学会了如何搭建一个Elasticsearch集群。我们介绍了集群的基本概念、安装步骤、配置方法以及如何验证集群状态。Elasticsearch集群的搭建是构建高可用性和高性能搜索服务的关键步骤。

附加资源

练习

  1. 尝试在一台机器上启动两个Elasticsearch节点,并让它们加入同一个集群。
  2. 使用Elasticsearch的REST API创建一个索引,并向其中添加一些文档。
  3. 模拟一个节点故障,观察集群如何自动恢复。

通过实践这些练习,你将更深入地理解Elasticsearch集群的工作原理。