我们相信:世界是美好的,你是我也是。平行空间的世界里面,不同版本的生活也在继续...

全文检索引擎ElasticSearch,主打的就是分布式搜索。也就是说,可以建立多个节点,共同组成一个集群。当其中一部分节点不能工作的时候,还会有其它的服务器节点分担建设任务,这就是分布式存储的意义所在。

苏南大叔:ElasticSearch全文搜索引擎,如何建立集群服务器? - 加入集群节点
ElasticSearch全文搜索引擎,如何建立集群服务器?(图5-1)

苏南大叔的“程序如此灵动”博客,记录苏南大叔的代码编程经验总结。本文测试环境:win10elasticsearch@8.17.1kibana@8.17.1。本文主要演示elasticsearch服务器集群节点的加入。

准备工作

本文通过下面的方式,安装最新版的elasticsearch。参考文章:

为了演示集群多节点,在测试机上面,放置了两个elasticsearch
【主节点】,放在D盘。端口默认9200,节点名称默认。启用xpack,并【不】禁用ssl,开启transport。改完配置,重启elastic。(至少执行过一次之后,才会有下面这些配置)

xpack.security.enabled: true
xpack.security.http.ssl:
  enabled: true
transport.host: 0.0.0.0

苏南大叔:ElasticSearch全文搜索引擎,如何建立集群服务器? - 主节点配置
ElasticSearch全文搜索引擎,如何建立集群服务器?(图5-2)

【从节点】,放在E盘。为了做区分,修改elastic.yml配置文件,修改端口9999(如果是多台服务器的话,并不需要修改)。

node.name: node-2
http.port: 9999

主节点产生token

操作主节点,使用下面的命令,获得新的enrollment token

bin/elasticsearch-create-enrollment-token -s node

苏南大叔:ElasticSearch全文搜索引擎,如何建立集群服务器? - 主从节点交换信息
ElasticSearch全文搜索引擎,如何建立集群服务器?(图5-3)

从节点接收token

从节点执行下面的命令,就可以加入集群了。注意替换<token>为上一步得到的新token

bin/elasticsearch --enrollment-token <token>

不出意外的话,这个从节点就接收了主节点设定信息token,并启动起来了。下次启动的话,不需要再次传递enrollment-token信息,已经把相关信息自动的保存在config/elasticsearch.yml文件里面了。

苏南大叔:ElasticSearch全文搜索引擎,如何建立集群服务器? - 配置文件2
ElasticSearch全文搜索引擎,如何建立集群服务器?(图5-4)

要点讨论

为了正确的配置集群,可能有以下要点需要注意:

首次和非首次

  • 【主节点】在配置之前,必须是启动过至少一次的。因为这样才会有xpack相关的配置,以及用户名密码等等。
  • 【从节点】在配置之前,要求没有启动过,第一次运行就必须是带着--enrollment-token参数的。这样的话,才能正确的加入节点。

http和https

目前的权宜之计是:开启主节点的https,然后传递token到从节点。

  • 如果主节点启用https的话,就会有很多有关“自签名证书”等麻烦事。
  • 如果主节点不启用https的话,以目前的角度来看,主节点和从节点的通信/传递token,又会被打断。

节点配置

最终,在主从节点都配置好之后,修改两者的配置文件config/elastic-search.yml
主节点和从节点,都设置为:

  • 关闭xpack.security.http.ssl(方便不使用https访问自己)。
  • 开启xpack.security.transport.ssl(节点之间使用证书传递信息)。
  • 【从节点】修改了发现设置:127.0.0.1:9300

主节点配置信息

xpack.security.enabled: true
xpack.security.enrollment.enabled: true
xpack.security.http.ssl:
  enabled: false
  keystore.path: certs/http.p12
xpack.security.transport.ssl:
  enabled: true
  verification_mode: certificate
  keystore.path: certs/transport.p12
  truststore.path: certs/transport.p12
cluster.initial_master_nodes: ["SUNAN-AIR"]
http.host: 0.0.0.0
transport.host: 0.0.0.0

从节点配置

xpack.security.enabled: true
xpack.security.enrollment.enabled: true
xpack.security.http.ssl:
  enabled: false
  keystore.path: certs/http.p12
xpack.security.transport.ssl:
  enabled: true
  verification_mode: certificate
  keystore.path: certs/transport.p12
  truststore.path: certs/transport.p12
discovery.seed_hosts: ["127.0.0.1:9300"]
http.host: 0.0.0.0

节点列表

在任意一个节点上,都可以通过/_cat/nodes来查看节点情况。从节点的用户名密码继承主节点的用户名密码。

苏南大叔:ElasticSearch全文搜索引擎,如何建立集群服务器? - 节点列表
ElasticSearch全文搜索引擎,如何建立集群服务器?(图5-5)

格式返回,类似如下:

ip           heap.percent ram.percent cpu load_1m load_5m load_15m node.role   master name
192.168.1.13            9          89  10                          cdfhilmrstw *      SUNAN-AIR
127.0.0.1               7          89  10                          cdfhilmrstw -      node-2

结语

从不断的失败尝试中,可以得出结论:elasticsearch需要的服务器配置比较高,硬盘容量需要的也比较大。可以说:硬件难度较高,需要更高的配置。更多的elastic相关文章,请点击:

如果本文对您有帮助,或者节约了您的时间,欢迎打赏瓶饮料,建立下友谊关系。
本博客不欢迎:各种镜像采集行为。请尊重原创文章内容,转载请保留作者链接。

 【福利】 腾讯云最新爆款活动!1核2G云服务器首年50元!

 【源码】本文代码片段及相关软件,请点此获取更多信息

 【绝密】秘籍文章入口,仅传授于有缘之人   elastic