首页
学习
活动
专区
圈层
工具
发布
43 篇文章
1
干货 | Elasitcsearch7.X集群/索引备份与恢复实战
2
干货 | Elasticsearch 运维实战常用命令清单
3
腾讯云Elasticsearch集群运维常用命令详解一(集群篇)
4
腾讯云Elasticsearch集群运维常用命令详解二(节点篇)
5
腾讯云Elasticsearch集群运维常用命令详解三(索引篇)
6
如何系统的学习 Elasticsearch ?
7
Elasitcsearch 开发运维常用命令集锦
8
Elasticsearch集群数据备份与恢复 Snapshot & Restore
9
搭建ELFK日志采集系统
10
Kubernetes Helm3 部署 ElasticSearch & Kibana 7 集群
11
使用 Ansible 部署 Elasticsearch 集群
12
技术角 | 在CentOS 8上使用Elastic Stack: Elasticsearch/Kibana 7.8部署与认证配置
13
在CentOS 8上使用Elastic Stack: Elasticsearch/Kibana 7.8的部署与认证配置
14
Elasticsearch 生产环境集群部署最佳实践
15
ES 7.8 速成笔记(中)
16
ES 7.8 速成笔记(上)
17
如何在CentOS 7上设置生产Elasticsearch集群
18
kubernetes-2:helm实战-1:生产级别的elasticsearch集群部署
19
ElasticSearch 7集群部署
20
在CentOS 7安装ElasticSearch 7.x
21
zabbix 监控 es 集群
22
ELK 日志报警插件 ElastAlert
23
Elasticsearch集群规划最佳实践
24
kubernetes-7:elasticsearch容器化
25
Go Elasticsearch 增删改查(CRUD)快速入门
26
go操作elasticsearch示例
27
在 Kubernetes 上搭建 EFK 日志收集系统
28
一文彻底搞定 EFK 日志收集系统
29
TKE上搭建EFK日志采集系统
30
使用 EFKLK 搭建 Kubernetes 日志收集工具栈
31
腾讯云Elasticsearch集群规划及性能优化实践
32
【干货】Elasticsearch索引性能优化 (2)
33
让Elasticsearch飞起来!——性能优化实践干货
34
【干货】Elasticsearch的索引性能优化(3)
35
Elasticsearch性能优化实战指南
36
ElasticSearch性能优化官方建议
37
Elasticsearch 7.10.1集群压测报告(4核16G*3,AMD)
38
Elasticsearch压测之Esrally压测标准
39
通过 esrally 压测elasticsearch
40
Elasticsearch压测工具esrally部署之踩坑实录(上)
41
Elasticsearch压测工具Esrally部署之踩坑实录(下)
42
Elasticsearch压测工具Esrally部署指南
43
百亿架构之filebeat讲解

在CentOS 8上使用Elastic Stack: Elasticsearch/Kibana 7.8的部署与认证配置

本篇为慧响技术角“源产控”专题系列第3篇文章。

慧响技术角“源产控”专题,将聚焦开源、国产化、自主可控三个方向的技术,以操作系统、中间件、数据库、程序应用等为粗分类,更新相关技术的发展趋势、探究技术核心的深度使用、系统总结技术整体架构,为对相关技术的学习者提供可观的资料,亦为个人同步学习总结的笔记,以飨读者。

本篇对在CentOS 8上使用Elastic Stack套件中的Elasticsearch、Kibana进行简要总结,对Elasticsearch 7.8.0的部署、认证设置与Kibana 7.8.0的配套部署进行了详细总结。未来对在CentOS 8上使用Elastic Stack相关套件,将陆续更新其使用总结、性能调优等方面的系列文章,敬请期待。

Elastic Stack介绍

提起Elastic Stack,就不得不提到ELK。ELK是三个开源软件的缩写,分别为:Elasticsearch 、 Logstash以及Kibana , 它们都是开源软件。不过现在还新增了一个Beats,它是一个轻量级的日志收集处理工具(Agent),Beats占用资源少,适合于在各个服务器上搜集日志后传输给Logstash,官方也推荐此工具,目前由于原本的ELK Stack成员中加入了Beats工具所以已改名为Elastic Stack。

Elastic Stack包含:

  • Elasticsearch是个开源分布式搜索引擎,提供搜集、分析、存储数据三大功能。它的特点有:分布式,零配置,自动发现,索引自动分片,索引副本机制,RESTful风格接口,多数据源,自动搜索负载等。详细可参考Elasticsearch权威指南。
  • Logstash主要是用来日志的搜集、分析、过滤日志的工具,支持大量的数据获取方式。一般工作方式为C/S架构,client端安装在需要收集日志的主机上,Server端负责将收到的各节点日志进行过滤、修改等操作在一并发往Elasticsearch上去。
  • Kibana也是一个开源和免费的工具,Kibana可以为 Logstash 和 Elasticsearch 提供的日志分析友好的 Web 界面,可以帮助汇总、分析和搜索重要数据日志。
  • Beats在这里是一个轻量级日志采集器,其实Beats家族有6个成员,早期的ELK架构中使用Logstash收集、解析日志,但是Logstash对内存、CPU、I/O等资源消耗比较高。相比 Logstash,Beats所占系统的CPU和内存几乎可以忽略不计。

Elasticsearch 7.8的部署

方式一:YUM方式安装

输入如下命令,下载安装公共签名证书:

代码语言:txt
复制
rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch

在目录/etc/yum.repos.d/下新建文件elasticsearch.repo,文件内容填写如下:

代码语言:txt
复制
[elasticsearch]
name=Elasticsearch repository for 7.x packages
baseurl=https://artifacts.elastic.co/packages/7.x/yum
gpgcheck=1
gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
enabled=0
autorefresh=1
type=rpm-md

添加好后,直接执行yum -y install --enablerepo=elasticsearch elasticsearch安装即可。

方式二:下载RPM包手工安装

执行如下命令,进行安装:

代码语言:txt
复制
wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.8.0-x86_64.rpm;
wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.8.0-x86_64.rpm.sha512;
shasum -a 512 -c elasticsearch-7.8.0-x86_64.rpm.sha512;
rpm --install elasticsearch-7.8.0-x86_64.rpm;

注意:shasum提示找不到命令,请输入yum -y install perl-Digest-SHA进行依赖安装。

提示:鉴于Elastic网站为国外,下载速度极慢,可选择国内镜像地址,例如华为云的镜像,下载地址:https://mirrors.huaweicloud.com/elasticsearch/7.8.0/

安装完成,系统提示如下:

代码语言:txt
复制
### NOT starting on installation, please execute the following statements to configure elasticsearch service to start automatically using systemd
 sudo systemctl daemon-reload
 sudo systemctl enable elasticsearch.service
### You can start elasticsearch service by executing
 sudo systemctl start elasticsearch.service
Created elasticsearch keystore in /etc/elasticsearch/elasticsearch.keystore
[/usr/lib/tmpfiles.d/elasticsearch.conf:1] Line references path below legacy directory /var/run/, updating /var/run/elasticsearch → /run/elasticsearch; please update the tmpfiles.d/ drop-in file accordingly.

方式三:源码安装

如有更为灵活的需求,可通过官网下载Elasticsearch源码包进行部署。首先需建立用户属组:

代码语言:txt
复制
groupadd -g 888 elasticsearch;
useradd -g elasticsearch -m -u 888 elasticsearch;

后通过官网或镜像下载地址下载,解压到需要部署的文件夹:

代码语言:txt
复制
wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.8.0-linux-x86_64.tar.gz;
tar -zxvf elasticsearch-7.8.0-linux-x86_64.tar.gz -C /usr/share/;
mv /usr/share/elasticsearch-7.8.0/ /usr/share/elasticsearch;
chown -R elasticsearch:elasticsearch /usr/share/elasticsearch;

Elasticsearch 7.8的配置

部署完成后就进入配置环节了,在配置之前我们需要知道的是进程文件和配置文件所在地。通过上述方式一、二安装,进程文件路径在/usr/share/elasticsearch,配置文件路径在/etc/elasticsearch。通过上述方式三安装,进程文件路径在解压文件路径,例如示例给出的/usr/share/elasticsearch,配置文件在进程文件路径下的config文件夹内。

在配置文件路径下有一个文件叫jvm.options,修改其中的-Xms-Xmx两行参数来调整jvm的初始化堆大小以及最大堆大小。该值建议设置为操作系统内存的40%~50%。注:-Xms-Xmx相同。例:若虚拟机内存为8G,可设置为如下参数:

代码语言:txt
复制
-Xms4g
-Xmx4g

或者

代码语言:txt
复制
-Xms4096m
-Xmx4096m

在配置文件路径下有一个文件叫elasticsearch.yml文件,对该文件进行配置以使集群启动:

代码语言:txt
复制
# 集群名称,集群中所有节点统一
cluster.name: Elasticsearch-Cluster
# 当前节点名,自定义但集群内不允许重复
node.name: node-1
node.attr.rack: r1
# 下方数据和日志存放路径请按照实际情况修改路径
# 通过方法一、二安装,默认路径已存在,通过方法三安装,请指定存在的路径
path.data: /var/lib/elasticsearch
path.logs: /var/logs/elasticsearch
bootstrap.memory_lock: true
# 当前节点内网IP地址,虽也可以设置为0.0.0.0但建议还是按此设置
network.host: 10.66.66.1
http.port: 9200
# 集群中所有节点地址
discovery.seed_hosts: ["10.66.66.1", "10.66.66.2","10.66.66.3"]
# 集群中所有节点名,应与集群所有节点的node.name一致
cluster.initial_master_nodes: ["node-1", "node-2","node-3"]

另外,在启动Elasticsearch 7.8之前需先做些准备工作。首先编辑文件/etc/security/limits.conf,在尾部增加如下配置:

代码语言:txt
复制
elasticsearch      soft    nofile  100000
elasticsearch      hard    nofile  100000
elasticsearch      soft    memlock unlimited
elasticsearch      hard    memlock unlimited
elasticsearch      soft    nproc   4096
elasticsearch      hard    nproc   4096

编辑文件/etc/sysctl.conf,根据文件内已有内容,调整或新增如下配置:

代码语言:txt
复制
vm.swappiness=10
vm.max_map_count=262144

添加完成后,执行sysctl -p

最后修改/etc/hosts文件,增加Elasticsearch集群主机名,例如:

代码语言:txt
复制
10.66.66.1  node-1
10.66.66.2  node-2
10.66.66.3  node-3

Elasticsearch内置Java,无需再在系统层再次部署Java。

完成配置后即可启动,方法一、二可通过systemctl命令进行启停:

代码语言:txt
复制
systemctl start elasticsearch;
systemctl stop elasticsearch;
systemctl restart elasticsearch;

如需开启开机自启,可通过如下命令开启:

代码语言:txt
复制
systemctl daemon-reload;
systemctl enable elasticsearch;

方法三启动可通过如下命令进行启停:

代码语言:txt
复制
# 启动
/usr/share/elasticsearch/bin/elasticsearch -d -p /usr/share/elasticsearch/pid;
# 停止
esid=$(cat /usr/share/elasticsearch/pid && echo);
kill -SIGTERM $esid;

启动后可以执行如下命令,查看启动日志、集群节点发现、主节点选举是否正常:

代码语言:txt
复制
# 路径请注意:1. 按照配置文件设置的日志存放路径寻找;2. 按照实际集群名输入日志文件名
tail -f /var/logs/elasticsearch/Elasticsearch-Cluster.log;
# 按照方法一、二安装后也可以通过如下命令查看Elasticsearch进程情况
systemctl status elasticsearch;

也可以通过如下网址浏览器或curl命令访问直接获取Elasticsearch返回的集群健康检查信息:

代码语言:txt
复制
curl -XGET http://node-1:9200/_cluster/health?pretty

也可以在浏览器直接访问机器的9200端口,可展示如下页面:

Elasticsearch启动成功后9200端口默认访问页

Elasticsearch 7.8的认证功能配置

Elasticsearch默认启动后,9200端口通过设定的Host IP是可以随意访问的,这十分不安全。为了保证一定的安全性,我们可以修改elasticsearch.yml文件里http.port字段,修改默认端口,以及增加访问时必须帐密认证访问。

自Elasticsearch 6.8开始,Elastic将部分X-Pack付费功能免费开放使用,其中就有基础认证功能,因此在Elasticsearch 6.8以后,可直接使用Elasticsearch自带的认证功能。而之前的版本,则需要一个开源插件叫做elasticsearch-http-basic,作者仓库地址:https://github.com/Asquera/elasticsearch-http-basic 。然而目前此仓库已封版不再更新,因此建议如需使用Elasticsearch,不要使用Elasticsearch 6.8以前的版本。

接下来我们配置Elasticsearch 7.8的认证功能,首先在某一台集群节点中,进入进程文件路径,执行如下命令,创建一个证书颁发机构:

代码语言:txt
复制
bin/elasticsearch-certutil ca;

一路回车即可,中间有设置CA的密码,无需设置。完成后将在进程文件路径目录生成文件elastic-stack-ca.p12。后继续在该台已生成证书颁发机构的集群节点继续执行如下命令,创建一个证书与私钥:

代码语言:txt
复制
bin/elasticsearch-certutil cert --ca elastic-stack-ca.p12;

一路回车即可,中间有设置证书的密码,无需设置。完成后将在进程文件路径目录生成文件elastic-certificates.p12。完成生成后,将该文件拷贝到其他机器的相同路径,集群所有机器修改两个文件的属组:

代码语言:txt
复制
chown -R elasticsearch:elasticsearch *.p12;

集群所有机器建立软连接到配置文件路径下,示例如下,具体路径请修改为实际路径:

代码语言:txt
复制
ln -s /usr/share/elasticsearch/elastic-certificates.p12 /etc/elasticsearch/elastic-certificates.p12;
ln -s /usr/share/elasticsearch/elastic-stack-ca.p12 /etc/elasticsearch/elastic-stack-ca.p12;

配置elasticsearch.yml

代码语言:txt
复制
# 设置集群互信通信端口9300
transport.port: 9300
http.cors.enabled: true
http.cors.allow-origin: "*"
http.cors.allow-headers: Authorization
# 开启X-Pack的安全认证
xpack.security.enabled: true
# 开启X-Pack的集群内互信安全认证,与上面安全认证开关同步必开
xpack.security.transport.ssl.enabled: true
# 验证模式为证书模式
xpack.security.transport.ssl.verification_mode: certificate
# 配置证书路径
xpack.security.transport.ssl.keystore.path: elastic-certificates.p12
xpack.security.transport.ssl.truststore.path: elastic-certificates.p12
# 如果需要启用SSL/TLS通过HTTPS访问ES集群,再添加如下配置
xpack.security.http.ssl.enabled: true
xpack.security.http.ssl.keystore.path: elastic-certificates.p12
xpack.security.http.ssl.truststore.path: elastic-certificates.p12
xpack.security.http.ssl.client_authentication: none

修改discovery.seed_hosts字段配置,增加集群互信通信端口9300,例如:

代码语言:txt
复制
discovery.seed_hosts: ["10.66.66.1:9300", "10.66.66.2:9300","10.66.66.3:9300"]

完成配置后,重启Elasticsearch进程即可。后进行内置用户认证密码的设置,在某一台集群节点中,进入进程文件路径,执行如下命令:

代码语言:txt
复制
bin/elasticsearch-setup-passwords interactive;

这里给Elasticsearch中内置用户创建密码,其内置用户有:

  • elastic:拥有 superuser 角色,是内置的超级用户,它可以做任何事情。
  • kibana:拥有 kibana_system 角色,是Kibana用来连接Elasticsearch并与之通信的。Kibana服务器以该用户身份提交请求以访问集群监视API和.kibana索引不能访问 index。
  • logstash_system:拥有logstash_system角色。是Logstash在Elasticsearch中存储监控信息时使用。
  • beats_system:拥有 beats_system 角色。是Beats在Elasticsearch中存储监控信息时使用。
  • apm_system:APM服务器在Elasticsearch中存储监视信息时使用的用户。
  • remote_monitoring_user:Metricbeat用户在Elasticsearch中收集和存储监视信息时使用。 它具有remote_monitoring_agent和remote_monitoring_collector内置角色。

完成此步设置,再使用HTTP/HTTPS协议通过9200端口访问时,就需要帐密了。输入帐密即可访问。curl也可,命令测试示例如下,例如用户名为elastic,密码为ESabc+2333

代码语言:txt
复制
curl -uelastic:ESabc+2333 -XGET http://node-1:9200/_cluster/health?pretty

Kibana的部署与配置

Kibana的部署配置比较简单,安装方式类似Elasticsearch,具体可自行选择,本节不再赘述,使用方法二,执行如下命令,进行安装:

代码语言:txt
复制
wget https://artifacts.elastic.co/downloads/kibana/kibana-7.8.0-x86_64.rpm;
shasum -a 512 kibana-7.8.0-x86_64.rpm;
rpm --install kibana-7.8.0-x86_64.rpm;

注意:shasum提示找不到命令,请输入yum -y install perl-Digest-SHA进行依赖安装。

提示:鉴于Elastic网站为国外,下载速度极慢,可选择国内镜像地址,例如华为云的镜像,下载地址:https://mirrors.huaweicloud.com/kibana/7.8.0/

按上述方式安装后其进程文件路径在/usr/share/kibana,配置文件路径在/etc/kibana

修改/etc/kibana/kibana.yml文件为如下配置:

代码语言:txt
复制
server.port: 5601
server.host: "0.0.0.0"
# 设置Elasticsearch集群地址,方便Kibana做容灾管理
elasticsearch.hosts: ["https://node-1:9200","https://node-2:9200","https://node-3:9200"]
kibana.index: ".kibana"
# 国际化设置,设置为中文
i18n.locale: "zh-CN"
# 开启X-Pack的安全认证
xpack.security.enabled: true
# Elasticsearch内置账户密码
elasticsearch.username: "kibana"
elasticsearch.password: "ESabc+2333" # 设置内置账户密码时kibana账户的密码
# Kibana SSL/TLS访问开启,若无需配置SSL/TLS,可忽略
server.ssl.enabled: true
server.ssl.key: /etc/kibana/kibana-certificates.key
server.ssl.certificate: /etc/kibana/kibana-certificates.cer
server.ssl.certificateAuthorities: /etc/kibana/kibana-certificates-ca.cer
server.ssl.clientAuthentication: none
# Elasticsearch如开启SSL/TLS访问,则需要配置如下两条规则
elasticsearch.ssl.verificationMode: certificate
elasticsearch.ssl.certificateAuthorities: /etc/kibana/kibana-certificates-ca.cer

上述Kibana配置中SSL/TLS的认证有点小插曲需要说明,由于Kibana现在不支持.p12文件的加密认证方式,若目前没有SSL/TLS安全机构认可的签发证书,但仍需要启用SSL/TLS,此时需要我们将.p12文件转换后使用配置。具体操作如下:

代码语言:txt
复制
openssl pkcs12 -in elastic-certificates.p12 -nocerts -nodes > kibana-certificates.key
openssl pkcs12 -in elastic-certificates.p12 -clcerts -nokeys > kibana-certificates.cer
openssl pkcs12 -in elastic-certificates.p12 -cacerts -nokeys -chain > kibana-certificates-ca.cer

将生成的几个文件放置在合适的路径,例如上述配置将这几个文件放置在了/etc/kibana/路径下,后调用即可。

注意:仍然建议使用域名向安全机构申请认可的签发证书后配置Kibana的SSL/TLS选项,因为自签发证书浏览器不认为是安全的,仍有安全风险,请注意。

完成配置后即可启动,可通过systemctl命令进行启停:

代码语言:txt
复制
systemctl start kibana;
systemctl stop kibana;
systemctl restart kibana;

如需开启开机自启,可通过如下命令开启:

代码语言:txt
复制
systemctl daemon-reload;
systemctl enable kibana;

启动后通过浏览器访问即可,可通过输入内置用户访问Kibana,例如用户名为elastic,密码为ESabc+2333

Kibana登录界面
Kibana登录后界面
下一篇
举报
领券