自学内容网 自学内容网

从头开始搭建一套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

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


原文地址:https://blog.csdn.net/kevin3101/article/details/140347437

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!