ElasticSearch全文搜索引擎,如何建立集群服务器?
发布于 作者:苏南大叔 来源:程序如此灵动~![](/usr/themes/panda/assets/img/icon/ok.png)
全文检索引擎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
相关文章,请点击:
![](/usr/themes/panda/assets/img/icon/end.gif)
![](/usr/themes/panda/assets/img/icon/ok.png)
![](/usr/themes/panda/assets/img/icon/stop.png)