ElasticSearch全文搜索引擎,如何建立集群服务器?
发布于 作者:苏南大叔 来源:程序如此灵动~
全文检索引擎ElasticSearch,主打的就是分布式搜索。也就是说,可以建立多个节点,共同组成一个集群。当其中一部分节点不能工作的时候,还会有其它的服务器节点分担建设任务,这就是分布式存储的意义所在。

苏南大叔的“程序如此灵动”博客,记录苏南大叔的代码编程经验总结。本文测试环境:win10,elasticsearch@8.17.1,kibana@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
【从节点】,放在E盘。为了做区分,修改elastic.yml配置文件,修改端口9999(如果是多台服务器的话,并不需要修改)。
node.name: node-2
http.port: 9999主节点产生token
操作主节点,使用下面的命令,获得新的enrollment token。
bin/elasticsearch-create-enrollment-token -s node
从节点接收token
从节点执行下面的命令,就可以加入集群了。注意替换<token>为上一步得到的新token。
bin/elasticsearch --enrollment-token <token>不出意外的话,这个从节点就接收了主节点设定信息token,并启动起来了。下次启动的话,不需要再次传递enrollment-token信息,已经把相关信息自动的保存在config/elasticsearch.yml文件里面了。

要点讨论
为了正确的配置集群,可能有以下要点需要注意:
首次和非首次
- 【主节点】在配置之前,必须是启动过至少一次的。因为这样才会有
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来查看节点情况。从节点的用户名密码继承主节点的用户名密码。

格式返回,类似如下:
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相关文章,请点击: