沪ICP备2021032517号-1

Elasticsearch-8.5.2 TLS 集群部署

  |   0 评论   |   0 浏览

环境准备

将主机名映射写入各节点的hosts文件

cat>>/etc/hosts<<EOF
10.13.1.2 es.node.01
10.13.1.10 es.node.02
10.13.3.108 es.node.03
10.13.1.9 es.master.01
10.13.15.13 es.master.02
10.13.15.24 es.master.03
EOF

创建数据和日志目录并授权

mkdir -p /data/elasticsearch/{logs,data}

chown -R elasticsearch.elasticsearch /data/elasticsearch

说明

1、使用官方默认部署方式不区分节点的的角色。所有节点均具有相同的所有角色。在业务场景不复杂的情况下使用默认配置即可(所有节点均具有master角色)。

2、如果业务场景要求高。master节点需要独立。即 elasticsearch.yml 需要指定 node.roles (7.9版本以后支持) 配置项

集群节点角色可参考:

https://developer.aliyun.com/article/859667

部署服务

1、先卸载历史版本(如有)

systemctl stop elasticsearch

yum remove -y elasticsearch-8.5.2

rm -rf /etc/elasticsearch/
rm -rf /data/elasticsearch/data/*
rm -rf /usr/share/elasticsearch
rm -rf /var/lib/elasticsearch

2、下载安装文件

yum install perl-Digest-SHA -y

wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-8.5.2-x86_64.rpm

wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-8.5.2-x86_64.rpm.sha512

安装

shasum -a 512 -c elasticsearch-8.5.2-x86_64.rpm.sha512

rpm --install elasticsearch-8.5.2-x86_64.rpm

3、已上命令执行后会打印安装信息,其中包含 超级用户 elastic 的密码,需要保存

如下:

--------------------------- Security autoconfiguration information ------------------------------

Authentication and authorization are enabled.
TLS for the transport and HTTP layers is enabled and configured.

The generated password for the elastic built-in superuser is : fyBrlfU7PHgUOtzu8sIa

If this node should join an existing cluster, you can reconfigure this with
'/usr/share/elasticsearch/bin/elasticsearch-reconfigure-node --enrollment-token <token-here>'
after creating an enrollment token on your existing cluster.

You can complete the following actions at any time:

Reset the password of the elastic built-in superuser with 
'/usr/share/elasticsearch/bin/elasticsearch-reset-password -u elastic'.

Generate an enrollment token for Kibana instances with 
 '/usr/share/elasticsearch/bin/elasticsearch-create-enrollment-token -s kibana'.

Generate an enrollment token for Elasticsearch nodes with 
'/usr/share/elasticsearch/bin/elasticsearch-create-enrollment-token -s node'.

------------------------------------------------------------------------------------------------

已上信息包含

elastic 用户密码

重置 elastic 用户密码的方式

kibana节点接入token生成

node节点接入toke生成

第一个master节点配置

注意:

1、采用默认方式安装,第一个节点具有master 和 data 属性,因为单节点需要在 green 状态下才能生成供其他节点加入的toke。

2、第一个节点的配置文件 "cluster.initial_master_nodes" 配置项只需要在master节点第一次启动初始化时使用到,集群配置完成后,该配置项需要删除,并增加 "discovery.seed_hosts" 配置项。如果没有删除,重启节点时会报错。

3、实际部署过程中发现 第一个master节点配置文件第一次启动时不能加 node.roles: [ master ] 配置;cluster.initial_master_nodes 只能填写本机节点的ip或者本机对应域名的地址信息

第一个节点的配置:

cat >/etc/elasticsearch/elasticsearch.yml<<EOF
cluster.name: elastic-cluster

node.name: ${HOSTNAME}

network.host: ${HOSTNAME}

path.data: /data/elasticsearch/data

path.logs: /data/elasticsearch/logs

xpack.security.enabled: true

xpack.security.enrollment.enabled: true

xpack.security.http.ssl:
  enabled: true
  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: [ "es.master.01" ]

http.host: 0.0.0.0

thread_pool.get.queue_size: 10000
thread_pool.write.queue_size: 10000
EOF

启动:

systemctl start elasticsearch

查看日志:

tail -100f /data/elasticsearch/logs/elastic-cluster.log

验证节点状态:

curl --cacert /etc/elasticsearch/certs/http_ca.crt -u elastic:fyBrlfU7PHgUOtzu8sIa 'https://10.13.1.9:9200/_cat/nodes?v'

curl --cacert /etc/elasticsearch/certs/http_ca.crt -u elastic:fyBrlfU7PHgUOtzu8sIa 'https://10.13.1.9:9200/_cluster/health?pretty'

确认正常后执行下一步

5、生成用于其他节点加入的 token

/usr/share/elasticsearch/bin/elasticsearch-create-enrollment-token -s node

记录返回的 token 信息

其他master节点加入集群

使用第5步获取的 token,在剩余所有节点执行同步集群配置的命令,执行前不要启动节点的elasticsearch服务,等修改完配置文件后再启动

/usr/share/elasticsearch/bin/elasticsearch-reconfigure-node --enrollment-token eyJ2ZXIiOiI4LjUuMiIsImFkciI6WyIxMC4xMy4xLjk6OTIwMCJdLCJmZ3IiOiIyYmEyNTBkOWE0YWI0NzMzYmQ0YzM1NWQ1NWJiZTQ5MGUxMzViYzk4MTAzZDUxMzkzZWE1NGE0YzNhN2I1MjU2Iiwia2V5IjoiNDFvZHpJUUJ2VjJBcWQ0UkNOckk6VG1rSFN6N19SUnFQTjlXN19ZQ1diQSJ9

执行该命令以后会同步第一个启动节点的证书信息和 elasticsearch.yml配置信息

修改属于master节点角色的配置文件

cat >/etc/elasticsearch/elasticsearch.yml<<EOF
cluster.name: elastic-cluster

node.roles: [ master ]

node.name: ${HOSTNAME}

network.host: ${HOSTNAME}

path.data: /data/elasticsearch/data

path.logs: /data/elasticsearch/logs

xpack.security.enabled: true

xpack.security.enrollment.enabled: true

xpack.security.http.ssl:
  enabled: true
  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: [ "es.master.01","es.master.02","es.master.03" ]

http.host: 0.0.0.0

thread_pool.get.queue_size: 10000
thread_pool.write.queue_size: 10000
EOF

启动节点

systemctl start elasticsearch

Node data 数据节点配置

6、使用第5步获取的 toke,在所有data节点执行加入集群命令,执行前不要启动节点的elasticsearch服务,等修改完配置文件后再启动

/usr/share/elasticsearch/bin/elasticsearch-reconfigure-node --enrollment-token eyJ2ZXIiOiI4LjUuMiIsImFkciI6WyIxMC4xMy4xLjk6OTIwMCJdLCJmZ3IiOiIyYmEyNTBkOWE0YWI0NzMzYmQ0YzM1NWQ1NWJiZTQ5MGUxMzViYzk4MTAzZDUxMzkzZWE1NGE0YzNhN2I1MjU2Iiwia2V5IjoiNDFvZHpJUUJ2VjJBcWQ0UkNOckk6VG1rSFN6N19SUnFQTjlXN19ZQ1diQSJ9

执行该命令以后会同步第一个启动节点的证书信息和 elasticsearch.yml配置信息

7、修改属于data角色节点的配置文件

cat >/etc/elasticsearch/elasticsearch.yml<<EOF
cluster.name: elastic-cluster

node.roles: [ data,transform,ingest ]

node.name: ${HOSTNAME}

network.host: ${HOSTNAME}

path.data: /data/elasticsearch/data

path.logs: /data/elasticsearch/logs

xpack.security.enabled: true

xpack.security.enrollment.enabled: true

xpack.security.http.ssl:
  enabled: true
  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: [ "es.master.01","es.master.02","es.master.03" ]

http.host: 0.0.0.0

thread_pool.get.queue_size: 10000
thread_pool.write.queue_size: 10000
EOF

依次启动所有节点;

再次验证集群状态。

初始master节点去除 cluster.initial_master_nodes 配置项

修改master节点的配置文件,将 cluster.initial_master_nodes 配置项替换为 discovery.seed_hosts 配置项,因为该配置项只需要在master节点第一次初始化启动时使用到。如不去除替换,再次重启节点后会报错。

节点角色管理

新增计算节点并设置为专属master节点

所有节点均默认为master节点,如果你的集群需要新增专属的master节点。新增计算节点资源,并执行加入集群的toke命令,拷贝之前master节点的配置文件,添加以下配置。

node.roles: [ master ]

确认其他前置配置就绪后启动服务

修改已有数据节点为master节点

不推荐该方式,因为集群就绪后可能会有分片落到需要调整的节点上。需要执行清理节点数据的命令后才能加入。清理分片数据会给集群带来一定的影响,如果你的集群没有数据而且需要将数据节点变更为master节点,且每个分片都有副本的情况下可以使用该方式进行调整。

清理节点数据命令:

/usr/share/elasticsearch/bin/elasticsearch-node repurpose

然后配置文件新增

node.roles: [ master ]

重启节点服务

配置专属的数据节点

在配置文件添加以下配置并重启节点

node.roles: [ data,transform,ingest ]

Kibana接入

1、先生成 token并记录

/usr/share/elasticsearch/bin/elasticsearch-create-enrollment-token -s kibana

2、安装kibana

rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch

wget https://artifacts.elastic.co/downloads/kibana/kibana-8.5.2-x86_64.rpm

shasum -a 512 kibana-8.5.2-x86_64.rpm 

rpm --install kibana-8.5.2-x86_64.rpm

3、不用修改配置文件,直接启动:

systemctl start kibana.service

4、修改 kibana.yml

server.host: "10.13.1.2"

访问:粘贴第1步生成的token

image.png

根据提示在kibana节点运行

/usr/share/kibana/bin/kibana-verification-code

会返回6位数字,填入下面的提示框中


image.png

账号密码用第一次安装master节点返回的 elastic用户和密码

Logstash接入

安装

rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch
echo >/etc/yum.repos.d/logstash.repo<<EOF
[logstash-8.x]
name=Elastic repository for 8.x packages
baseurl=https://artifacts.elastic.co/packages/8.x/yum
gpgcheck=1
gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
enabled=1
autorefresh=1
type=rpm-md
EOF
yum install logstash

配置文件

/etc/logstash/conf.d/logstash.conf

这里只列出 output 到 es 部分的配置

elasticsearch {
  hosts => ["https://10.13.1.9:9200"]
  index => "%{[kubernetes][container][name]}-perf-%{index_date}"
  user => "elastic"
  password => "fyBrlfU7PHgUOtzu8sIa"
  cacert => '/etc/logstash/certs/http_ca.crt'
}

其中的 cacert证书文件是在使用rpm安装Elasticserch时,自动生成的 /etc/elasticsearch/http_ca.crt 这个文件

将es节点的 /etc/elasticsearch/certs/http_ca.crt 拷贝到logstash节点的 /etc/logstash/certs/http_ca.crt

并设置权限

chmod 777 -R /etc/logstash/certs

启动服务

systemctl start logstash

开启白金版功能

LDAP接入

SAML 单点登录接入


标题:Elasticsearch-8.5.2 TLS 集群部署
作者:zifuy
地址:https://www.zifuy.cn/articles/2022/12/01/1669878683835.html