引言
前面我们基于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进行修改。
vi /etc/sysconfig/network-scripts/ifcfg-ens33
service network restart
复制代码
现在我们有三台机器进行生产集群的控制。为了让这篇搭建文章系统性,我会再次快速对默认情况下的Elasticsearch安装进行演示,如果你已经清楚了注意点,可以直接跳转到下节,安全启用下注册Kibana。
- 将上传的Elasticsearch包进行解压
tar -zxvf elasticsearch-8.2.2-linux-x86_64.tar.gz
复制代码
- 先通过bin/elasticsearch首次启动es生成一些自带的配置,不要忘记切换到非root用户
需要注意的是,首次启动,安全配置的一些信息会自动进行配置。
解读一下启动日志
✅ 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
ℹ️ 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=
ℹ️ 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
复制代码
- 更改安装目录下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"]
复制代码
- 更改完配置后再次启动,验证
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
复制代码
bin/kibana
复制代码
首次启动进入了配置页面
使用Elasticsearch
的elastic账户登录,之后可以进行Kibana进行操作账户创建
安全性开启下加入其他节点构建集群
- 在第一个启动的节点,生成加入该节点的token,保存下来
bin/elasticsearch-create-enrollment-token -s node
eyJ2ZXIiOiI4LjIuMiIsImFkciI6WyIxNzIuMTYuMTkyLjEwMTo5MjAwIl0sImZnciI6IjdkZDM3OGE0NTNmODkwODQ2NDE5NDcyMzE2MWI4ODkyMDg4ZWE5NGI3OTg5YjI0MTY3YzM3MzY1NGY3YThjMzQiLCJrZXkiOiJVenlPam9FQlZET2hnc0tVVlZxTDppamJqbHYyR1JHQ1Zybnp3dDZCZnV3In0=
复制代码
- 修改将要安装的es配置文件
cluster.name: es-learn-01
node.name: node-2
network.host: 172.16.192.102
复制代码
- 暴露本机的9200,9300端口
/sbin/iptables -I INPUT -p tcp --dport 9300 -j ACCEPT
复制代码
- 携带token启动es
bin/elasticsearch --enrollment-token eyJ2ZXIiOiI4LjIuMiIsImFkciI6WyIxNzIuMTYuMTkyLjEwMTo5MjAwIl0sImZnciI6IjdkZDM3OGE0NTNmODkwODQ2NDE5NDcyMzE2MWI4ODkyMDg4ZWE5NGI3OTg5YjI0MTY3YzM3MzY1NGY3YThjMzQiLCJrZXkiOiJVenlPam9FQlZET2hnc0tVVlZxTDppamJqbHYyR1JHQ1Zybnp3dDZCZnV3In0=
复制代码
- 对于节点3执行同样的步骤
通过Kibana查看集群的情况
至此,基于Elasticsearch8.x版本,在开启安全性构建集群的教程已经全部完结,相比于之前的版本来说,Elasticsearch提供了更加便捷的构建方式,甚至不需要手动生成相关秘钥。
如果你有任何的问题,欢迎加群一起探讨