引言
前面我们基于Elasticsearch8.2版本,从环境安装,quick start,安全配置层层递进构建了一个基于VMware的虚拟机学习环境,并且安装了单机下的开发和生产模式的Elasticsearch和Kibana,并且进行了安全配置,大家对这一套已经相对熟悉了,今天我们这一篇将作为安装篇的最终章,构建一个真实的生产Elasticsearch集群。更重要的是,Elasticsearch8.x版本默认开启安全认证,那么对于安全性开启下的集群构建,提供了更加便捷的方式。后面我们将开启新的一篇,《术语篇》结合Elasticsearch的API来彻底搞懂术语。
天也不早了,人也不少了,我们开撸。
网络拓扑
我们预计搭建三个节点,ESNode-01
,ESNode-02
,ESNode-03
,每个节点安装Elasticsearch构建集群,在节点ESNode-01安装Kibana。

克隆节点
先将前三节中实验的虚拟机节点ESNode-01
关机,在虚拟机操作页面进行克隆出ESNode-02
和ESNode-03
。

分别把ESNode-02和ESNode-03的IP进行修改。
# 编辑网卡,更改IPvi /etc/sysconfig/network-scripts/ifcfg-ens33# 重启网络service network restart
现在我们有三台机器进行生产集群的控制。为了让这篇搭建文章系统性,我会再次快速对默认情况下的Elasticsearch安装进行演示,如果你已经清楚了注意点,可以直接跳转到下节,安全启用下注册Kibana。
1.将上传的Elasticsearch包进行解压
tar -zxvf elasticsearch-8.2.2-linux-x86_64.tar.gz
2.先通过bin/elasticsearch首次启动es生成一些自带的配置,不要忘记切换到非root用户
需要注意的是,首次启动,安全配置的一些信息会自动进行配置。
•为传输HTTP层生成TLS的证书[1]和密钥[2]。在config文件夹下的certs目录•TLS配置设置写入elasticsearch.yml
。•为elastic
用户生成密码。•为Kibana生成注册令牌。
解读一下启动日志
✅ Elasticsearch security features have been automatically configured!✅ Authentication is enabled and cluster connections are encrypted.# 用户密码ℹ️ Password for the elastic user (reset with `bin/elasticsearch-reset-password -u elastic`):zQvUTJ1H2fTXRzgdzN=1ℹ️ HTTP CA certificate SHA-256 fingerprint:7dd378a453f8908464194723161b8892088ea94b7989b24167c373654f7a8c34# Kibana的注册令牌ℹ️ Configure Kibana to use this cluster:• Run Kibana and click the configuration link in the terminal when Kibana starts.• Copy the following enrollment token and paste it into Kibana in your browser (valid for the next 30 minutes):eyJ2ZXIiOiI4LjIuMiIsImFkciI6WyIxNzIuMTYuMTkyLjEwMTo5MjAwIl0sImZnciI6IjdkZDM3OGE0NTNmODkwODQ2NDE5NDcyMzE2MWI4ODkyMDg4ZWE5NGI3OTg5YjI0MTY3YzM3MzY1NGY3YThjMzQiLCJrZXkiOiJ0em82am9FQmc1M25jenMxV1FvRzpHUFcxd0Q4RlRDU1pxMnFzQUVCSkdBIn0=# 如果超时或者忘记了,看怎么来生成加入本节点的nodetokenℹ️ Configure other nodes to join this cluster:• On this node:⁃ Create an enrollment token with `bin/elasticsearch-create-enrollment-token -s node`.⁃ Uncomment the transport.host setting at the end of config/elasticsearch.yml.⁃ Restart Elasticsearch.• On other nodes:⁃ Start Elasticsearch with `bin/elasticsearch --enrollment-token <token>`, using the enrollment token that you generated.
Kibana的token使用生成
bin/elasticsearch-create-enrollment-token --scope kibana
1.更改安装目录下config/elasticsearch.yml
此处我们进行几个关键性的配置修改
# 集群名称,其他节点用来发现cluster.name: es-learn-01# 节点名称node.name: node-1# 向外暴露的IP,更改之后es会切换成生产模式,进行系统配置预检network.host: 172.16.192.101# 集群发现节点host配置,这里我们填了将要连接的两个地址discovery.seed_hosts: ["172.16.192.101", "172.16.192.102","172.16.192.103"]
2.更改完配置后再次启动,验证
curl --cacert config/certs/http_ca.crt -u elastic https://172.16.192.101:9200

安全性启用下注册Kibana
Kibana和Elasticsearch进行关联,可以使用两种方式,一种是浏览器的交互模式,一种是非浏览器的分离模式
修改Kibana的绑定IP配置
server.host:172.16.192.101
# 启动Kibanabin/kibana

首次启动进入了配置页面




使用Elasticsearch
的elastic账户登录,之后可以进行Kibana进行操作账户创建
安全性开启下加入其他节点构建集群
1.在第一个启动的节点,生成加入该节点的token,保存下来
# 生成加入节点的tokenbin/elasticsearch-create-enrollment-token -s node# 输出eyJ2ZXIiOiI4LjIuMiIsImFkciI6WyIxNzIuMTYuMTkyLjEwMTo5MjAwIl0sImZnciI6IjdkZDM3OGE0NTNmODkwODQ2NDE5NDcyMzE2MWI4ODkyMDg4ZWE5NGI3OTg5YjI0MTY3YzM3MzY1NGY3YThjMzQiLCJrZXkiOiJVenlPam9FQlZET2hnc0tVVlZxTDppamJqbHYyR1JHQ1Zybnp3dDZCZnV3In0=

1.修改将要安装的es配置文件
cluster.name: es-learn-01node.name: node-2network.host: 172.16.192.102
2.暴露本机的9200,9300端口
/sbin/iptables -I INPUT -p tcp --dport 9300 -j ACCEPT
3.携带token启动es
bin/elasticsearch --enrollment-token eyJ2ZXIiOiI4LjIuMiIsImFkciI6WyIxNzIuMTYuMTkyLjEwMTo5MjAwIl0sImZnciI6IjdkZDM3OGE0NTNmODkwODQ2NDE5NDcyMzE2MWI4ODkyMDg4ZWE5NGI3OTg5YjI0MTY3YzM3MzY1NGY3YThjMzQiLCJrZXkiOiJVenlPam9FQlZET2hnc0tVVlZxTDppamJqbHYyR1JHQ1Zybnp3dDZCZnV3In0=
4.对于节点3执行同样的步骤
通过Kibana查看集群的情况

至此,基于Elasticsearch8.x版本,在开启安全性构建集群的教程已经全部完结,相比于之前的版本来说,Elasticsearch提供了更加便捷的构建方式,甚至不需要手动生成相关秘钥。
如果你有任何的问题,欢迎加群一起探讨

References
[1]
证书: https://www.elastic.co/guide/en/elasticsearch/reference/current/configuring-stack-security.html#stack-security-certificates[2]
密钥: https://www.elastic.co/guide/en/elasticsearch/reference/current/configuring-stack-security.html#stack-security-certificates




