ElasticSearch集群环境搭建
之前章节我们介绍的内容中,只是简单运行了一个单节点的ES服务,也没有配置安全认证等,在实际的生产环境中,ElasticSearch一般都是以集群方式搭建的。集群模式的ES能够实现数据分片和副本模式,能够将计算压力分散到各个节点上,还能实现系统的高可用,避免单点故障。除此之外,ElasticSearch经常搭配Kibana使用,Kibana是Elastic官方提供的一个数据可视化界面。
本篇笔记我们学习如何搭建和配置ElasticSearch集群,并安装Kibana面板。
注:ES7的安全配置要手动配置自签名证书等操作,非常麻烦;ES8版本则简化了这一过程,我们启动ES节点时会自动进行安全配置,这里对ES7不再介绍。
安装ElasticSearch
我这里使用3台主机进行搭建,ES默认会使用4GB大小的堆内存,因此生产环境每个节点配置建议至少8GB内存:
192.168.1.164
192.168.1.165
192.168.1.166
ElasticSearch的安装包在官网即可找到,我这里使用的是8.2.3版本,我们直接下载下来并解压:
tar xvf elasticsearch-8.2.3-linux-x86_64.tar.gz
解压后,将我们需要的IK等插件拷贝到plugins目录。此外,ElasticSearch由于内置了JDK,因此我们其实并不需要额外安装Java运行环境。
配置文件
我们分别按如下配置修改3个节点的config/elasticsearch.yml配置文件:
cluster.name: es-cluster
node.name: node1
network.host: 192.168.1.164
http.port: 9200
transport.port: 9300
cluster.name:集群名node.name:当前节点名,每个节点需要唯一network.host:节点主机名,这里我们直接设置为节点IPhttp.port:提供HTTP服务的端口,默认为9200transport.port:集群通信端口,默认为9300
启动ES节点
我们先启动主节点(其它节点先不要动,ES8启动会自动修改追加安全配置,这是个很垃圾的设计,如果其它节点独自启动加入集群时就会报错):
./bin/elasticsearch
-d:以守护进程模式启动,如果不加该参数默认会以前台进程启动,我们可以先以前台方式启动,便于查看启动日志等信息,没问题后再使用守护进程模式。
ES主节点启动成功后会输出如下信息:

同时,查看配置文件config/elasticsearch.yml会发现里面自动追加了如下配置:
#----------------------- BEGIN SECURITY AUTO CONFIGURATION -----------------------
#
# The following settings, TLS certificates, and keys have been automatically
# generated to configure Elasticsearch security features on 23-07-2022 10:16:01
#
# --------------------------------------------------------------------------------
# Enable security features
xpack.security.enabled: true
xpack.security.enrollment.enabled: true
# Enable encryption for HTTP API client connections, such as Kibana, Logstash, and Agents
xpack.security.http.ssl:
enabled: true
keystore.path: certs/http.p12
# Enable encryption and mutual authentication between cluster nodes
xpack.security.transport.ssl:
enabled: true
verification_mode: certificate
keystore.path: certs/transport.p12
truststore.path: certs/transport.p12
# Create a new cluster with the current node only
# Additional nodes can still join the cluster later
cluster.initial_master_nodes: ["node1"]
#----------------------- END SECURITY AUTO CONFIGURATION -------------------------
从控制台输出信息可知,我们可以使用bin/elasticsearch --enrollment-token <token>命令启动其它节点并加入集群:
./bin/elasticsearch --enrollment-token eyJ2ZXIiOiI4LjIuMyIsImFkciI6WyIxOTIuMTY4LjEuMTY0OjkyMDAiXSwiZmdyIjoiNTJlODYzNDI5Yzc0YTgwYTEwYjcwMmM1MDBlYzgyMTI5YzkyNDk3NDc3MTE1NDk4MDk5YjM3ZWJiM2Y4NGMyNSIsImtleSI6InBMZVpLb0lCX093cVJTQ2VMaGhFOnJReFJ3RWdKUlNDSjR4NHJ3TlF5d1EifQ==
密码认证
之前控制台输出信息中,显示了默认用户名为elastic,密码为c+6jHy1yo9vjieQ4eqj_。如果使用Postman进行测试,我们在请求中加入认证信息即可:

这里注意开启安全配置后,我们需要使用HTTPS协议访问,当然我们的证书的自签名的,Postman中可以设置忽略SSL证书问题,或者也可以手动安装config/certs目录下的自签名CA证书。
如果希望自定义密码,可以执行./bin/elasticsearch-setup-passwords interactive命令,这里就不多介绍了。
访问ES服务
我们这里查看一下集群节点状态:
GET https://192.168.1.164:9200/_cat/nodes?v=true
输出:
ip heap.percent ram.percent cpu load_1m load_5m load_15m node.role master name
192.168.1.165 74 97 2 0.22 0.19 0.29 cdfhilmrstw - node2
192.168.1.166 48 93 2 0.13 0.18 0.25 cdfhilmrstw - node3
192.168.1.164 57 66 1 0.27 0.18 0.20 cdfhilmrstw * node1
安装使用Kibana
Kibana是ElasticSearch官方提供的图形管理面板,使用Node.js开发,我们在官网下载对应ElasticSearch版本的Kibana即可,我这里使用的是8.2.3版本。下载下来直接解压:
tar xvf kibana-8.2.3
解压后我们首先需要修改配置文件config/kibana.yml,其中server.host默认为localhost,我们一般都需要配置为对应服务器的域名或IP地址。配置完成后即可启动Kibana:
./bin/kibana
Kibana初次启动需要填一个token,用于配置ElasticSearch服务端信息,我们可以在ES的目录中执行如下命令生成token:
./bin/elasticsearch-create-enrollment-token -s kibana
自动配置完成后,使用之前的elastic用户即可进入Kibana面板:

我们可以在菜单Management -> Dev Tools执行ES命令:
