从头开始搭建一套Elasticsearch集群

前言

刚开始使用ES接触的就是rpm或者是云上提供的ES服务,基本上开箱即用。特别是云上的ES服务,开局就是集群版本,提供的是优化后的参数配置、开箱即匹配访问鉴权及常用插件,如无特殊需要基本上屏蔽了所有细节,直接可投入生产使用。

现在遇到一个问题,验证一下远程集群的配置和使用,在没有多套集群的情况下,想在本地模拟两套ES集群,不得不从头走一遍ES集群从下载、自定义配置到启动kibana可使用的这一套流程。简单记录一下ES维护最原始的状态。

task:

  1. 启动一个单节点的ES服务
  2. ES开启鉴权
  3. 创建用户
  4. 配置kibana

环境介绍

操作系统: macOS 12.1

硬件架构: ARM

ES: 8.12.2

Jdk: 22.0.1

下载es包

本次部署使用8.12.2版本的ES,不是最新版本,需要到https://www.elastic.co/cn/downloads/past-releases#elasticsearch页面查找所需要的版本并下载。

下载地址如下:https://www.elastic.co/cn/downloads/past-releases/elasticsearch-8-12-2

选择对应原版本: MACOS AARCH64 : https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-8.12.2-darwin-aarch64.tar.gz

配置jdk

mac上使用brew安装jdk

brew install java    #默认会安装最新版的jdk

因为使用的ES基本也是最近的版本,最新版本的jdk可以支持ES运行。

手动安装指定jdk版本

下载所需要的jdk版本后,解压到指定的目录

编辑{userhome}/.zshrc

export JAVA_HOME=/Users/abc-test/data/jdk1.8.0_411.jdk/Contents/Home
export PATH=$PATH:$JAVA_HOME/bin

重新加载.zshrc

source .zshrc

配置ES

运行ES

解压es包

tar -xzf elasticsearch-8.12.2-darwin-x86_64.tar.gz

修改端口号(同一台机器上要运行多个ES进程,修改端口号避免冲突)

vim elasticsearch-8.12.2/config/elasticsearch.yml
#
cluster.name: remote-test                      #修改集群名称
node.name: node-101                             #指定节点名称
network.host: 0.0.0.0															#绑定的地址,如不打开端口只监听127.0.0.1
http.port: 19200																				#指定http端口
cluster.initial_master_nodes: ["node-101"]            #master节点 单节点集群填本身就可以,多节点集群需要填上master节点的列表
transport.port: 19300                                #tcp的监听端口

修改完成启动ES进程

#后台执行
bin/elasticsearch  -d 

用户

ES进程启动后,会在第一次启动时打印出内置用户elastic的密码。 日志类似这样:

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
✅ 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):
XQZ2EWK3LG8SaB*AYrdM

ℹ️ HTTP CA certificate SHA-256 fingerprint:
79f5240be4f0a02af881d7c73a626741d6e8df9ff130e52603f668635ab746c6

ℹ️ 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):
eyJ2ZXIiOiI4LjEyLjIiLCJhZHIiOlsiMTAuMjUzLjMuMTU5OjE5MjAwIl0sImZnciI6Ijc5ZjUyNDBiZTRmMGEwMmFmODgxZDdjNzNhNjI2NzQxZDZlOGRmOWZmMTMwZTUyNjAzZjY2ODYzNWFiNzQ2YzYiLCJrZXkiOiJzd3hlbTVBQnRqajNYdHpDUFdHZzpZTnEtOGRTcFI0bVQ1c3phZjMtWVh3In0=

ℹ️ Configure other nodes to join this cluster:
• Copy the following enrollment token and start new Elasticsearch nodes with bin/elasticsearch --enrollment-token <token> (valid for the next 30 minutes):
eyJ2ZXIiOiI4LjEyLjIiLCJhZHIiOlsiMTAuMjUzLjMuMTU5OjE5MjAwIl0sImZnciI6Ijc5ZjUyNDBiZTRmMGEwMmFmODgxZDdjNzNhNjI2NzQxZDZlOGRmOWZmMTMwZTUyNjAzZjY2ODYzNWFiNzQ2YzYiLCJrZXkiOiJzZ3hlbTVBQnRqajNYdHpDUFdHZzpYdmMyc0NQN1EzMlIzODJYbVExNHdnIn0=

If you’re running in Docker, copy the enrollment token and run:
docker run -e "ENROLLMENT_TOKEN=<token>" docker.elastic.co/elasticsearch/elasticsearch:8.12.2
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

可自行重置默认密码

bin/elasticsearch-reset-password -u elastic

验证ES启动是否成功

curl localhost:19200/_cat/health -u "elastic:XQZ2EWK3LG8SaB*AYrdM"

正常返回

1720593690 06:41:30 remote-test green 1 1 1 1 0 0 0 0 - 100.0%

ES启动成功。

配置kibana

使用了一段时间kibana作为ES的命令行和管理工具后,发现有界面的系统是真的香,索引管理,数据展示,dev tools 作常用功能模块已基本上满足日常管理需求,且不论更进一步的数据分析等模块。紧跟ES也跑一个kibana的实例出来。 这里注意kibana要跟ES的版本保持一致。

下载包

匹配ES版本的kibana: https://artifacts.elastic.co/downloads/kibana/kibana-8.12.2-darwin-aarch64.tar.gz

修改配置

下载到本地后,解压,修改配置

vim config/kibana.yml

server.port: 5602
server.ssl.enabled: false     #本地使用,禁用https协议
elasticsearch.hosts: ["http://localhost:19200"]          #配置ES的地址
elasticsearch.username: "kibana_system"           #连接ES的用户名
elasticsearch.password: "As4fpYOfz-ufMr7zI8dt"                     #连接ES的密码

这里需要到ES中重置kibana_system的密码,kibana_system是ES系统内置的用户。

 bin/elasticsearch-reset-password -u kibana_system

过程如下:

➜ elasticsearch-8.12.2 bin/elasticsearch-reset-password -u kibana_system
This tool will reset the password of the [kibana_system] user to an autogenerated value.
The password will be printed in the console.
Please confirm that you would like to continue [y/N]y

Password for the [kibana_system] user successfully reset.
New value: As4fpYOfz-ufMr7zI8dt

启动

bin/kibana

在这里插入图片描述

附录

知其所以然

内置用户

es提供了一系列的内置用户来运行和管理ES进程,这些用户设置了固定的权限。但是这些用户在没有设置密码前是不能使用的。elastic是内置的超级用户,可以用来设置其他用户的密码。elastic用户自己的密码在ES启动的时候会由进程自动设置,并在启动日志中打印出来。

es的内置用户:

  • elastic #超级管理员用户
  • kibana_system #kibana用户用于kibana连接elasticsearch
  • logstash_system #logstash使用
  • Beats_system #beats 程序使用
  • apm_system #apm功能
  • Remote_monitoring_user #远程监控功能用户

内置用户存储在.security这个特殊的索引中,当用户的密码改变时,会同步这些变更内容到各个节点。一旦这个特殊的索引被删除或者被快照等其他数据所覆盖,之前针对用户所做的所有操作都会丢失。

针对内置用户可以使用bin/elasticsearch-reset-password修改用户密码

bin/elasticsearch-reset-password -u kibana_system

初次启动的集群只有重置密码后才能使用。

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

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

相关文章

深入了解 MySQL 的 EXPLAIN 命令

一、什么是 EXPLAIN 命令&#xff1f; EXPLAIN 命令用于显示 MySQL 如何执行某个 SQL 语句&#xff0c;尤其是 SELECT 语句。通过 EXPLAIN 命令&#xff0c;可以看到查询在实际执行前的执行计划&#xff0c;这对于优化查询性能至关重要。 二、EXPLAIN 的基本用法 要使用 EXP…

如何禁用键盘上的特定键或快捷方式?这里有详细步骤

要禁用特定的键盘键或快捷键吗&#xff1f;微软官方应用程序Microsoft PowerToys使这项任务变得非常简单。以下是使用Microsoft PowerToys中的键盘管理器禁用特定键或快捷方式的快速指南。 如果你还没有安装Microsoft PowerToys 如果你的设备上没有安装Microsoft PowerToys&a…

springboot上传图片

前端的name的值必须要和后端的MultipartFile 形参名一致 存储本地

鸿蒙开发:Universal Keystore Kit(密钥管理服务)【匿名密钥证明(C/C++)】

匿名密钥证明(C/C) 在使用本功能时&#xff0c;需确保网络通畅。 在CMake脚本中链接相关动态库 target_link_libraries(entry PUBLIC libhuks_ndk.z.so)开发步骤 确定密钥别名keyAlias&#xff0c;密钥别名最大长度为64字节&#xff1b;初始化参数集&#xff1a;通过[OH_Huk…

css3 transform的旋转和位移制作太阳花

css3 transform 实例展示知识点rotate 旋转translate 位移transform: translate(300px,200px) rotate(90deg) 实例代码 实例展示 知识点 transform的两个属性 rotate 旋转 translate 位移 transform: translate(300px,200px) rotate(90deg) 实例代码 <!DOCTYPE html&g…

flask 定时任务(APScheduler)使用current_app app_context()上下文

前言: 描述&#xff1a;flask定时任务调用的方法中使用了current_app.logger.info()记录日志报错 报错代码 raise RuntimeError(unbound_message) from None RuntimeError: Working outside of application context.This typically means that you attempted to use functiona…

IDEA中Git常用操作及Git存储原理

Git简介与使用 Intro Git is a free and open source distributed version control system designed to handle everything from small to very large projects with speed and efficiency. Git是一款分布式版本控制系统&#xff08;VSC&#xff09;&#xff0c;是团队合作开发…

算法学习笔记(8.3)-(0-1背包问题)

目录 最常见的0-1背包问题&#xff1a; 第一步&#xff1a;思考每轮的决策&#xff0c;定义状态&#xff0c;从而得到dp表 第二步&#xff1a;找出最优子结构&#xff0c;进而推导出状态转移方程 第三步&#xff1a;确定边界条件和状态转移顺序 方法一&#xff1a;暴力搜素…

MFC之对话框--线宽/线型/颜色

文章目录 线宽输入实现优化无法记录上一次线粗问题 线宽滑动实现实现选择线类型实现颜色选择总结 线宽输入实现 优化无法记录上一次线粗问题 线宽滑动实现 实现选择线类型 实现颜色选择 总结 1。创建新窗口&#xff08;dialog)会创建一个新的类&#xff0c;在类中实现窗口中的…

vue中父子传递属性值

1、父传子属性值 自定义图库组件 在add.vue中应用tuku组件并给默认值 效果 2、 子传父&#xff0c;逆向赋值 add.vue和第一问中一样 修改tuku组件&#xff0c;传值给add.vue 3、多个传递 效果&#xff1a; 点击两个修改按钮后 4、使用defineModel简化父子传值 其他代码跟…

【postgresql】时间函数和操作符

日期/时间操作符 加减操作符&#xff1a; 和 - 可以用于日期、时间、时间戳和时间间隔的加减操作。 SELECT 2024-01-01::date INTERVAL 1 day as "date"; ; -- 结果&#xff1a;2024-01-02SELECT 2024-01-01 12:00:00::timestamp - INTERVAL 2 hours as "…

CSS上下悬浮特效

要实现一个上下悬浮的特效&#xff0c;可以使用CSS的keyframes规则和动画属性。以下是一个简单的示例&#xff1a; 代码示例 /* 定义一个名为floating的动画 */ keyframes floating {0% {transform: translateY(0); /* 初始位置 */}50% {transform: translateY(-4px); /* 向上…

KALI使用MSF攻击安卓设备

这期是kali使用MSF进行安卓渗透的保姆级别教程&#xff0c;话不多说&#xff0c;直接开始。 准备材料&#xff1a; 1.装有kali的实体机或虚拟机&#xff08;这里用实体机进行演示&#xff09; 2.一台安卓10.0以下的手机 打开kali&#xff0c;先用ifconfig查看自己的kali IP地址…

Python3极简教程(一小时学完)下

目录 PEP8 代码风格指南 知识点 介绍 愚蠢的一致性就像没脑子的妖怪 代码排版 缩进 制表符还是空格 每行最大长度 空行 源文件编码 导入包 字符串引号 表达式和语句中的空格 不能忍受的情况 其他建议 注释 块注释 行内注释 文档字符串 版本注记 命名约定 …

[BJDCTF2020]EasySearch1

知识点&#xff1a; 1.swp泄露 2.md5碰撞 3.PHP代码审计 4.SSI代码执行漏洞 // Apache SSI 远程命令执行漏洞复现 看着像sql注入&#xff0c;不过注入无果&#xff0c;扫一下目录试试~ 发现是swp泄露. SWP文件泄露漏洞是指在使用 Vim编辑器 编辑一个文件时&#xff0c;Vim会在…

OpenCV漫水填充函数floodFill函数的使用

操作系统&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 编程语言&#xff1a;C11 功能描述 ffloodFill函数是OpenCV库中用于图像处理的一个功能&#xff0c;它用于填充与种子点颜色相近的连通区域。这个函数在很多场景下都非常有用&#x…

MUR2060CTR-ASEMI无人机专用MUR2060CTR

编辑&#xff1a;ll MUR2060CTR-ASEMI无人机专用MUR2060CTR 型号&#xff1a;MUR2060CTR 品牌&#xff1a;ASEMI 封装&#xff1a;TO-220 批号&#xff1a;最新 最大平均正向电流&#xff08;IF&#xff09;&#xff1a;20A 最大循环峰值反向电压&#xff08;VRRM&#…

【数据结构】线性表----队列详解

1. 队列的基本概念 话不多说&#xff0c;直接开始&#xff01; 队列是一种线性数据结构&#xff0c;同栈类似但又不同&#xff0c;遵循先进先出&#xff08;FIFO, First In First Out&#xff09;的原则。换句话说&#xff0c;最先进入队列的元素会最先被移除。这样的特点使得…

小白学python(第七天)

哈哈&#xff0c;这个系列的文章也有一段时间没更新&#xff0c;主要是最近在忙c嘎嘎&#xff0c;不过没事接下来会优先更python啦&#xff0c;那么我们先进入正题吧 函数的定义及调用 函数定义 格式&#xff1a;def 函数名&#xff08;形参列表&#xff09;&#xff1a; 语…

QTabWidget、QListWidget、QStackedWidget

The QTabWidget class provides a stack of tabbed widgets. More... The QListWidget class provides an item-based list widget. More... QStringList strlist;strlist<<"系统"<<"外观"<<"截图"<<"贴图"…