Elasticsearch 安装 X-pack

news2024/11/23 10:54:10

X-Pack是Elastic Stack扩展功能,提供安全性,警报,监视,报告,机器学习和许多其他功能。 ES7.0+之后,默认情况下,当安装Elasticsearch时,会安装X-Pack,无需单独再安装。

1. ES集群配置(非集群可以跳过1.1生成证书步骤)

1.1 生成证书

以3台服务器的集群为例。在服务器1(任选一台服务器生成证书就行)bin目录下执行以下命令生成两个证书:

./elasticsearch-certutil ca
./elasticsearch-certutil cert --ca elastic-stack-ca.p12

两条命令一路回车即可,不需要给秘钥再添加密码。执行完以后会生成两个证书,证书在安装目录bin目录的上一级;

将两个证书移动到安装目录的config目录下(非config目录会报错);

将服务器1上的两个证书复制到另外两个ES服务器的config目录下;

其实生成证书这个步骤很好理解,ES集群之间需要进行数据同步,当给ES集群设置密码以后,ES集群的各服务器之间互相认可对方,证书就是这个作用。

1.2 修改elasticsearch.yml(位于安装目录config下)

在elasticsearch.yml中新增如下配置:

xpack.security.enabled: true
xpack.license.self_generated.type: basic
xpack.security.transport.ssl.enabled: true
# 非集群不用增加下面三行
xpack.security.transport.ssl.verification_mode: certificate
xpack.security.transport.ssl.keystore.path: /usr/local/elasticsearch-7.6.2/config/elastic-certificates.p12
xpack.security.transport.ssl.truststore.path: /usr/local/elasticsearch-7.6.2/config/elastic-certificates.p12
  • xpack.security.enabled:表示开启xpack认证机制。
  • xpack.security.transport.ssl.enabled:这条如果不配,es将起不来,会报如下错误:Transport SSL must be enabled if security is enabled on a [basic] license. Please set [xpack.security.transport.ssl.enabled] to [true] or disable security by setting [xpack.security.enabled] to [false]

1.3 重启ES服务器

依次重启3台服务器,生产环境ES集群不能停止服务,所以我们采用每次重启一台,切不可全部停止。

步骤1.3重启服务器一定要在步骤1.4设置ES账号密码之前。要不然1.4设置密码会失败。

1.4为ES内置账号设置密码

在服务器1(挑一台服务器执行即可,不需要每台服务器都执行)上ES的bin目录下执行如下命令设置密码:

ES内置elastic、apm_system、logstash_system、kibana等内置用户,需要分别为这些账户设置密码,密码中不要包含@符号,有坑。需要记住自己设置的密码,后续过程需要使用。

# interactiv手动设置密码
./elasticsearch-setup-passwords interactive

我这里把所有内置用户的密码全部设置成了:123456 

 也可使用以下命令设置(自动生成密码):

# 自动生成密码
./elasticsearch-setup-passwords auto

如果在设置密码的过程中报错,重新执行此命令再设置一次即可,不可跳过报错。

设置完账号密码以后,在命令行中执行如下命令验证一下账号密码是否设置成功:

curl -XGET -u elastic 'http://192.168.31.104:9200/_xpack/security/user?pretty'

若出现提示输入elastic账户的密码,则账号密码设置成功。

可使用如下方式测试密码是否设置成功:

curl 192.168.31.104:9200 -u elastic

2. 配置kibana连接

开启了安全认证之后,kibana连接es以及访问es都需要认证。

变更kibana的配置,一共有两种方法,一种明文的,一种密文的。

2.1 明文配置

在kibana.yml文件中新增配置:

server.port: 5601
server.host: "0.0.0.0"
server.name: "192.168.31.105"
elasticsearch.hosts: ["http://192.168.31.104:9200"]
kibana.index: ".kibana"
i18n.locale: "zh-CN"
elasticsearch.username: "elastic"
elasticsearch.password: "123456"
xpack.reporting.encryptionKey: "a_random_string"
xpack.security.encryptionKey: "something_at_least_32_characters"

由于加入了下面两行,表示是明文配置。但是建议使用密文配置,可参考步骤2.2
elasticsearch.username: "kibana"
elasticseacr.password: "kibana_passwd" 

  • elasticsearch.username:连接es的用户名。
  • elasticsearch.password:连接es的密码。
  • xpack.reporting.encryptionKey:如果不添加这条配置,将会报错 Generating a random key for xpack.reporting.encryptionKey. To prevent pending reports from failing on restart, please set xpack.reporting.encryptionKey in kibana.yml
  • xpack.security.encryptionKey:如果不配置这条,将会报错 Generating a random key for xpack.security.encryptionKey. To prevent sessions from being invalidated on restart, please set xpack.security.encryptionKey in kibana.yml

2.2 设置账户密码(密文配置)

使用这种密文的方式进行认证,认证之前,需要首先将用户名密码保存到内置的ketstore里。在bin目录下执行:

   ./kibana-keystore --allow-root create
   # 输入1.4中设置的账户:elastic
   ./kibana-keystore --allow-root add elasticsearch.username
   # 输入1.4中设置的elastic账户的密码
   ./kibana-keystore --allow-root add elasticsearch.password

执行如上三条命令,用户名输入时填写 elastic,密码输入时填写对应密码,接着调整kibana的配置,删除elasticsearch.username和elasticsearch.password:

server.port: 5601
server.host: "0.0.0.0"
server.name: "192.168.31.105"
elasticsearch.hosts: ["http://192.168.31.104:9200"]
kibana.index: ".kibana"
i18n.locale: "zh-CN"
xpack.reporting.encryptionKey: "a_random_string"
xpack.security.encryptionKey: "something_at_least_32_characters"

2.3 重启Kibana

然后重启kibana即可访问,访问的时候使用elastic的用户密码登入,将是全局管理权限,如果需要创建kibana的只读用户,则可以通过管理–用户–新建用户,对用户进行角色授权即可。  

kibana进程查找命令:netstat -tunlp|grep 5601,找到进程号之后 kill 掉。

启动命令:./kibana --allow-root &

3.Logstash配置

3.1 修改logstash.yml

logstash.yml(位于安装目录的 config/ 下)文件中新增如下配置:

xpack.monitoring.enabled: true
# 步骤1.4中设置的账户logstash_system为ES的内置账户
xpack.monitoring.elasticsearch.username: "logstash_system"
# logstash_system 账号对应的密码
xpack.monitoring.elasticsearch.password: "123456"
# elasticsearch 主机ip
xpack.monitoring.elasticsearch.hosts: ["http://192.168.31.104:9200"]

logstash_system为ES的内置账户,只有监控权限,用于心跳检测ES服务器的状态。此账户权限非常小,所以这里密码采用明文写在配置文件也不要紧。 

3.2设置账户密码

在bin目录下执行:

# 执行后 选Y
./logstash-keystore create
# 输入1.4中设置的账户:elastic,这里不要使用logstash_system这个账号,这个账号没有增删改索引的权限
./logstash-keystore add ES_USER 
# 输入1.4中设置的elastic账户的密码
./logstash-keystore add ES_PWD

3.3修改conf文件

修改logstash的配置文件,一般是自己新增的配置文件,位于config文件夹下。

在output模块中新增账号,密码

output {
    elasticsearch {
      action => "%{[@metadata][action]}"
      hosts => ["ip1:9200", "ip2:9200", "ip3:9200"]
      index => "demo_index"
      document_id => "%{id}"
      # 新增如下两行:采用密文配置,要使用明文可自行查看官方文档
      user => ${ES_USER}
      password => ${ES_PWD}
    }
}

3.4重启Logstash

重启后观察启动日志,有无ERROR报错,无ERROR即正常。或者验证数据有没有通过Logstash同步到ES上面。到这里ELK就全部配置完成~

4.验证集群状态

在服务器中执行如下命令,验证ES集群状态:

# curl -XGET -u ${username}:${pwd} http://${ip}:9200/_cluster/health?pretty
 curl -XGET -u elastic:123456 http://192.168.31.104:9200/_cluster/health?pretty

集群状态为green就大功告成。如果为yellow就稍等一会,说明有副本分片还未恢复。如果集群状态为red,说明有主分片未恢复,需要去查看是否有ES服务器还未重启成功。

5.Java代码修改配置

5.1 RestHighClient配置

final CredentialsProvider credentialsProvider = new BasicCredentialsProvider();
/*设置账号密码*/
credentialsProvider.setCredentials(AuthScope.ANY, new UsernamePasswordCredentials("username","password"));
/*创建rest client对象*/
RestClientBuilder builder = RestClient.builder(new HttpHost(127.0.0.1, 9200))
                .setHttpClientConfigCallback(new RestClientBuilder.HttpClientConfigCallback() {
                    @Override
                    public HttpAsyncClientBuilder customizeHttpClient(HttpAsyncClientBuilder httpAsyncClientBuilder) {
                        return httpAsyncClientBuilder.setDefaultCredentialsProvider(credentialsProvider);
                    }
                });
        client = new RestHighLevelClient(builder);

5.2 SpringBoot自带的ES连接客户端

在项目配置文件中ES直接配置上username,password即可。

参考文档:Elasticsearch7.x配置xpack实战_elasticsearch xpack_普通网友的博客-CSDN博客

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/544310.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

编程测试被候选人吐槽了?原因可能是这些

一位前Facebook Tech Lead曾经说过:面试就好像是在第一次约会的时候,就决定是不是要跟对方结婚。 这虽然是个无奈的笑话,但也真实地反映了技术面试中的一个难题:面试官需要在相当有限的时间里,准确地判断候选人的技术…

什么是自然语言处理的机器翻译?

机器翻译(Machine Translation,MT)是一种自然语言处理技术,旨在将一种语言的文本自动翻译成另一种语言。机器翻译是自然语言处理领域的重要应用之一,它可以帮助人们在跨语言交流、文档翻译和信息检索等方面更加便捷和高…

Maven聚合和继承,使用IDEA构建聚合与继承工程

文章目录 1 聚合步骤1:创建一个空的maven项目步骤2:将项目的打包方式改为pom步骤3:pom.xml添加所要管理的项目步骤4:使用聚合统一管理项目 2 继承步骤1:创建一个空的Maven项目并将其打包方式设置为pom步骤2:在子项目中设置其父工程步骤3:优化子项目共有依赖导入问题步骤4:优化子…

企业数据治理内训的好处这么多,赶紧安排!

数据治理是确保数据的质量和完整性的一种方法,这对企业非常重要,因为它们需要准确的数据来做出正确的决策。 学习有效地管理和维护数据 通过内部培训,员工可以学习如何有效地管理和维护数据,从而提高数据质量和可靠性。 帮助企业…

SpringAop的实践应用

使用AOP来对前端传来的对象参数进行 BaseDto中属性的填充 这样就不用每次都去UserThreadLocal中拿了再又往BaseDto中放了 Aspect Component public class UserAspect {Pointcut("annotation(org.springframework.web.bind.annotation.RequestMapping) || annotation(o…

测试将被开发、运维替代?我后悔了!?

记得在求职的时候,面试官经常问我:“为什么要选择软件测试工作?”而我也会经常说一堆自己有的没的优势去应付。 工作这么久了,也不再浮躁,静下心来回忆当初选择软件测试工作的历程,也是对自己职业生涯的一次回顾。 …

每日一题162——重塑矩阵

在 MATLAB 中,有一个非常有用的函数 reshape ,它可以将一个 m x n 矩阵重塑为另一个大小不同(r x c)的新矩阵,但保留其原始数据。 给你一个由二维数组 mat 表示的 m x n 矩阵,以及两个正整数 r 和 c &…

Conmi的正确答案——Cordova安装并编译Android应用

系统:debian 11 Cordova版本:11.1.0 Cordova的Android平台:10.1.2 当前安卓最新稳定API:33(Android版本列表) 1、安装npm(cordova是基于nodejs开发的) apt install npm -y2、使用n…

OpenCV中的图像处理3.10(八)直方图-寻找、绘制、分析(掩膜)与均衡化

目录 3.10 OpenCV中的直方图3.10.1 直方图--1:寻找、绘制、分析目标理论寻找直方图绘制直方图掩膜的应用其他资源 3.10.2 直方图--2:直方图均衡化目标理论OpenCV中的直方图均衡化CLAHE(对比度有限的自适应直方图均衡)其他资源 翻译…

【笔试强训选择题】Day16.习题(错题)解析

作者简介:大家好,我是未央; 博客首页:未央.303 系列专栏:笔试强训选择题 每日一句:人的一生,可以有所作为的时机只有一次,那就是现在!!! 文章目录…

Linux Qt6 安装教程及错误解决

在Linux环境,通常为Ubuntu,安装Qt开发环境,与Windows安装相比,还是稍显繁琐,需要多做几个步骤。 这里的Ubuntu版本采用的是ubuntu-22.04.2-desktop-amd64,所以,比旧版本会少很多坑,…

今天面了个字节跳动拿35K出来的测试,真是砂纸擦屁股,给我露了一手啊

今年的春招已经结束,很多小伙伴收获不错,拿到了心仪的 offer。 各大论坛和社区里也看见不少小伙伴慷慨地分享了常见的面试题和八股文,为此咱这里也统一做一次大整理和大归类,这也算是划重点了。 俗话说得好,他山之石…

现在的00后,实在是太卷了,我们这些老油条都想辞职了......

现在的小年轻真的卷得过分了。前段时间我们公司来了个00年的,工作没两年,跳槽到我们公司起薪20K,都快要超过我了。 后来才知道人家是个卷王,从早干到晚就差搬张床到工位睡觉了。 最近和他聊了一次天,原来这位小老弟家…

MathType7公式编辑器新版详细介绍下载安装

由于CSDN这边不能发相关的教程等,若仅用于学习体验,请移步,有能力请支持正版。 wx供重浩:创享日记 对话框发送:mathtype 免费获取MathType-win-zh.exe安装包 它是一款用于数学公式编辑和排版的软件。MathType可以在Mi…

能源革命:可持续能源技术如何改变世界

随着全球气候变化日趋严重,能源转型成为解决气候问题和提高全球能源安全合理性的必要措施之一。可持续能源技术因其对环境的友好性和可再生性而成为了当前热点话题。你认为可持续能源技术真的能改变世界吗?一起来说说你的看法吧! 一、你在工…

实现能效升级 | 基于ACM32 MCU的冰箱压缩机变频方案

概述 冰箱制冷系统中最重要的部件是压缩机。它从吸气管吸入低温低压的制冷剂气体,通过电机运转带动活塞对其进行压缩后,向排气管排出高温高压的制冷剂气体,为整个制冷循环提供源动力。这样就实现了压缩→冷凝→膨胀→蒸发 ( 吸热 ) 的制冷循…

1016. 子串能表示从 1 到 N 数字的二进制串

给定一个二进制字符串 s 和一个正整数 n,如果对于 [1, n] 范围内的每个整数,其二进制表示都是 s 的 子字符串 ,就返回 true,否则返回 false 。 子字符串 是字符串中连续的字符序列。 示例 1: 输入:s &qu…

【C++】new和delete

new是个运算符 使用: new 类型(初始值); malloc和new的区别: 1--new申请空间失败抛出异常,malloc返回空指针 ip(new(nothrow) Int(10))//不想它抛出异常 2--new调用构造函数 3--new可以重…

智慧闹钟

访问【WRITE-BUG数字空间】_[内附完整源码和文档] 首先相对于传闹钟设置闹铃的方式,我想把这款创意闹钟设计成通过光照传感器来实现对闹钟的开启,更有效实现闹钟的自动化、智能化,不过为了防止误触带来闹钟的开启,需要对开启条件…

一起搭建我的世界服务器来实现公网远程联机教程「不需要公网IP」

文章目录 前言1. 安装JAVA2. MCSManager安装3.局域网访问MCSM4.创建我的世界服务器5.局域网联机测试6.安装cpolar内网穿透7. 配置公网访问地址8.远程联机测试9. 配置固定远程联机端口地址9.1 保留一个固定tcp地址9.2 配置固定公网TCP地址9.3 使用固定公网地址远程联机 转载自内…