在我之前的文章 “Elastic:用 Docker 部署 Elastic 栈” 中,我介绍了如何使用 Docker 部署的方法在一个电脑中启动多个 Docker 来实现多个节点的部署。在今天的文章中,我将用另外一种方法来模拟多个节点的部署。在这种情况下,我们不使用 docker。不过过千万要记住:尽管此配置对于开发目的是一个很好的选择,但不应在生产中使用此配置,尤其是在资源有限的情况下(例如,只有一台机器用于开发和测试)。
第一步:下载并安装 Elasticsearch
我们可以参照我之前的文章 “如何在 Linux,MacOS 及 Windows 上进行安装 Elasticsearch” 来下载并安装我们的 Elasticsearch。我们先不要运行 Elasticsearch。
第二步:运行 Elasticsearch 实例
现在,我们将展示如何启动你的第一个实例。 为此,请打开终端并转到 Elasticsearch 的安装目录。 然后使用以下命令启动名为 node1 的节点:
./bin/elasticsearch -E node.name=node1 -Enode.max_local_storage_nodes=3
此命令使用选项 -E 将参数 node.name 设置为 node1。 要启动其他两个实例非常简单:你只需要使用相同的命令,但使用另一个节点名称。
在新终端上,使用以下命令启动名为 node2 的节点:
./bin/elasticsearch -E node.name=node2 -Enode.max_local_storage_nodes=3
在新终端上,使用以下命令启动名为 node3 的节点:
./bin/elasticsearch -E node.name=node3 -Enode.max_local_storage_nodes=3
你可以使用 curl 和 _cat /nodes 端点检查 3 个节点的集群:
curl -X GET http://localhost:9200/_cat/nodes?v
或者:
curl -u elastic:123123 -X GET http://localhost:9200/_cat/nodes?v
如果你已经为你的集群设置密码的话。这里 elastic:123123 是集群的用户名及密码。
显示的结果为:
curl -X GET http://localhost:9200/_cat/nodes?v
ip heap.percent ram.percent cpu load_1m load_5m load_15m node.role master name
127.0.0.1 10 77 6 2.31 dilm - node2
127.0.0.1 18 77 6 2.31 dilm - node3
127.0.0.1 15 77 6 2.31 dilm * node1
从上面我们可以看出来有三个运行的节点。其中 node1 是一个 master node(含有一个*)。上面的 dilm 表示:
- d: data node
- i: ingest node
- m: master node
- l: machine learning node
方法二
依据 Elastic 的官方文档 “Get Elasticsearch up and running”,我们也可以通过如下的方法来实现在同一个机器上两个节点。启动另外两个 Elasticsearch 实例,以便你可以看到典型的多节点集群的行为。 你需要为每个节点指定唯一的数据和日志路径。
你可以参阅之前的文章 “如何在 Linux,MacOS 及 Windows 上进行安装 Elasticsearch” 来启动第一个 Elasticsearch 的实例。你可以通过如下的方法启动另外的两个 Elasticsearch 的实例:
Linux and macOS:
./elasticsearch -Epath.data=data2 -Epath.logs=log2
./elasticsearch -Epath.data=data3 -Epath.logs=log3
Windows:
.\elasticsearch.bat -E path.data=data2 -E path.logs=log2
.\elasticsearch.bat -E path.data=data3 -E path.logs=log3
为其他节点分配了唯一的 ID。 由于你在本地运行所有三个节点,因此它们会自动与第一个节点一起加入群集。