elasticsearch8.15 高可用集群搭建(含认证Kibana)

文章目录

  • 1.资源配置
  • 2.系统参数优化
  • 3.JDK17安装
  • 4.下载&安装ES 8.15
  • 5.生成ES的证书(用于ES节点之间进行安全数据传输)
  • 6.修改ES 相关配置文件
  • 7.创建es用户并启动
  • 8.配置ES的账号和密码(用于ES服务端和客户端)
  • 9.下载和安装Kibana
  • 10.编辑Kibana配置文件
  • 11.启动Kiabana
  • 12.访问Kiaban
  • 13.通过Kibana验证ES集群

1.资源配置

主机名称IPcpu内存es角色es集群名称es节点名称
es-1192.168.25.311.5G1master、dataes-clusternode-1
es-2192.168.25.321.5G1master、dataes-clusternode-2
es-3192.168.25.331.5G1master、dataes-clusternode-3

注:默认每个节点都是协调节点,故而不用特定当前节点为协调节点

ES角色说明:

  1. 主节点(Master Node)
    活跃主节点(active master node):集群中只允许有一个活跃的主节点,负责轻量级集群范围的操作,例如创建或删除索引、跟踪集群成员以及决定分片的分配。拥有一个稳定的主节点对于集群健康很重要。(也就是如果你配置了多个主节点,实际活跃的主节点只有一个,其他为候选主节点)
  2. 数据节点(Data Node)
    数据节点主要负责数据的存储和处理,包括数据的增删改查、搜索和聚合等操作。这些操作是I/O密集型、内存密集型和CPU密集型的,因此监控这些资源并在它们过载时添加更多数据节点非常重要。
  3. 协调节点(Coordinating Node)
    协调节点主要负责协调客户端的请求,将接收到的请求分发给合适的节点,并把结果汇集到一起返回给客户端。每个节点都默认起到了协调节点的职责。(默认每个节点都是协调节点,故而不用特定当前节点为协调节点)

2.系统参数优化

注:所有ES节点都需要执行

# 修改系统参数
cat >> /etc/security/limits.conf << 'EOF'
* soft nofile 65536
* hard nofile 131072
* soft nproc 2048
* hard nproc 4096
EOF#用于限制一个进程可以拥有的最大内存映射区域数量。
echo "vm.max_map_count=655360" >> /etc/sysctl.conf#让配置生效
sysctl -p#

soft nofile 65536:表示软性限制下,一个进程最多能打开的文件描述符(或句柄)数量为65536。软性限制是一个警告阈值,当达到或超过这个限制时,系统会给出警告,但进程仍然可以继续运行(取决于系统配置和策略)。
hard nofile 131072:表示硬性限制下,一个进程最多能打开的文件描述符数量为131072。硬性限制是一个严格的阈值,当达到或超过这个限制时,系统会拒绝进程打开更多的文件,并可能导致进程出错。
soft nproc 2048:表示软性限制下,一个用户最多能创建的进程数量为2048。同样,这是一个警告阈值。
hard nproc 4096:表示硬性限制下,一个用户最多能创建的进程数量为4096。这是一个严格的阈值,当达到或超过这个限制时,系统会拒绝用户创建更多的进程。

3.JDK17安装

注:所有ES节点都需要执行
JDK17 下载地址:https://download.oracle.com/java/17/archive/jdk-17.0.1_linux-x64_bin.tar.gz

下载后上传至服务器。

#创建存放软件的目录
mkdir /opt/software# 解压jdk到指定目录
tar -zxvf jdk-17.0.1_linux-x64_bin.tar.gz -C /opt/software/#添加JDK环境变量配置
cat >>  /etc/profile << 'EOF'
export JAVA_HOME=/opt/software/jdk-17.0.1
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib
EOF#让配置生效
source /etc/profile#查看jdk17是否安装成功
java -version

4.下载&安装ES 8.15

ES8.15 下载地址:https://www.elastic.co/downloads/past-releases/elasticsearch-8-15-0
在这里插入图片描述
下载后将压缩包上传至服务器。

#将ES解压至特定目录
tar -zxvf elasticsearch-8.15.0-linux-x86_64.tar.gz -C /opt/software/#切到es目录
cd /opt/software/elasticsearch-8.15.0/

5.生成ES的证书(用于ES节点之间进行安全数据传输)

注:其中一个ES节点执行,生成证书后拷贝到其他服务器的ES节点上。

ES证书工具类用法说明:

[root@es8-1 elasticsearch-8.15.0]# ./bin/elasticsearch-certutil --help
Simplifies certificate creation for use with the Elastic StackCommands
--------
csr - generate certificate signing requests   
cert - generate X.509 certificates and keys
ca - generate a new local certificate authority
http - generate a new certificate (or certificate request) for the Elasticsearch HTTP interface

生成CA证书和节点证书

#生成CA根证书(注:执行命令后会提示你输入密码之类的,一直回车即可)
[root@es8-1 elasticsearch-8.15.0]# ./bin/elasticsearch-certutil ca#生成节点证书并指定CA根证书(注:执行命令后会提示你输入密码之类的,一直回车即可)
[root@es8-1 elasticsearch-8.15.0]# ./bin/elasticsearch-certutil cert --ca elastic-stack-ca.p12

将证书移动到ES的config目录或config子目录之下!!!(不然后续ES会启动报错)

[root@es8-1 elasticsearch-8.15.0]# mkdir /opt/software/elasticsearch-8.15.0/config/cert
[root@es8-1 elasticsearch-8.15.0]# mv elastic-stack-ca.p12 ./config/cert/
[root@es8-1 elasticsearch-8.15.0]# mv elastic-certificates.p12 ./config/cert/

注1:执行生成证书命令后会提示你输入密码之类的,一直回车即可
注2:生成证书后,看到当前目录下多了两个证书文件,elastic-stack-ca.p12(CA根证书)、elastic-certificates.p12(节点证书)
注3:在其中一个es节点中生成好证书后,将证书下载并上传到其他几台ES服务器上的es的配置目录下。
“注4”:一定要把生成的SSL证书放到ES的config目录之下,不然后续启动会报错!!

6.修改ES 相关配置文件

注:所有ES节点都需要执行

修改jvm.options文件

#编辑jvm文件,修改jvm的堆大小(根据实际情况来)
[root@es8-1 elasticsearch-8.15.0]# vim config/jvm.options
-Xms512m
-Xmx512m

修改elasticsearch.yml文件

[root@es8-1 elasticsearch-8.15.0]# vim config/elasticsearch.yml

主要修改的参数如下:

#集群名称
cluster.name: es-cluster
#节点名称(集群中不同实例的节点名称要求唯一)
node.name: node-1
#节点角色注意至少有两个具有选举master资格的节点
node.roles: [master,data]
#es的数据目录
path.data: /opt/software/elasticsearch-8.15.0/data
#es的日志目录
path.logs: /opt/software/elasticsearch-8.15.0/logs
#es节点绑定的网卡。0.0.0.0即绑定所有网卡
network.host: 0.0.0.0
#http端口(es服务端和客户端的通讯端口)
http.port: 9200
#用于指定集群自动发现所需的初始主机节点列表(不要求一定是主节点)。这些主机节点用于引导新加入的节点发现和加入集群。
discovery.seed_hosts: [“192.168.25.31:9300”, “192.168.25.32:9300”, “192.168.25.33:9300”]
#用于指定集群的初始主节点列表。这些节点在集群启动时负责选举出主节点,并承担集群的管理和协调工作。
cluster.initial_master_nodes: [“node-1”, “node-2”, “node-3”]
#是否支持模糊方式(如_all 或 *)删除索引(不要开启,怕误删风险)
action.destructive_requires_name: false
#跨域配置。避免前端网站访问es出现跨域
http.cors.enabled: true
http.cors.allow-origin: “*”
#证书配置
xpack.security.transport.ssl.enabled: true
xpack.security.transport.ssl.verification_mode: certificate
xpack.security.transport.ssl.client_authentication: required
xpack.security.transport.ssl.keystore.path: /opt/software/elasticsearch-8.15.0/config/cert/elastic-certificates.p12
xpack.security.transport.ssl.truststore.path: /opt/software/elasticsearch-8.15.0/config/cert/elastic-certificates.p12

注1:有些参数是配置文件上没有的,没有的就在配置文件上补上
注2:上面用的9300端口是ES实例内部之间进行通讯的TCP端口
注3:不同ES节点修改的内容基本一样,除了node.name,其它都一样

7.创建es用户并启动

注:所有ES节点都需要执行

由于es不支持root用户启动,故而需要添加一个普通用户来启动es

# 创建普通用户用于es
useradd -s /bin/bash elastic#将es相关目录授权给es用户
chown -R elastic:elastic /opt/software/elasticsearch-8.15.0

:需要把es所有相关目录都授权给elastic用户,尤其是 数据目录和日志目录放在其他路径下的,都要注意下,否则可能会因为无权限而导致启动失败。


自定义Systemctl来控制ES的启停:

#自定义sytemctl来控制ES的启停
cat > /etc/systemd/system/elasticsearch.service << 'EOF'
[Unit]
Description=Elastic Search
Documentation=https://www.elastic.co/docs
After=network.target[Service]
Type=forking
#运行elasticsearch使用的用户	
User=elastic
Group=elastic
ExecStart=/opt/software/elasticsearch-8.15.0/bin/elasticsearch -d
Restart=always
#注:启动超时时间需要设长一点。因为我1核cpu启动需要很久,如果超时时间短,会导致启动超时,然后又会触发systemctl 进行es服务重启,导致es永远都没有启动成功。
TimeoutStartSec=600s
RestartSec=650s
#设置进程的系统参数
LimitNOFILE=65536
LimitNPROC=4096[Install]
WantedBy=multi-user.targetEOF#让配置生效
systemctl daemon-reload

启动ES

#启动es
systemctl start elasticsearch
#开机自启动
systemctl enable elasticsearch

8.配置ES的账号和密码(用于ES服务端和客户端)

注:集群中的其中一个ES节点进行即可

可以看到在访问的时候要求我们输入账号和密码。故而我们需要配置ES的用户和密码。
在这里插入图片描述


ES给我们内置了很多不同业务场景使用的账号,故而可以通过命令给这些账号进行密码设置,如下所示:

[root@es8-1 elasticsearch-8.15.0]# ./bin/elasticsearch-setup-passwords interactive
warning: ignoring JAVA_HOME=/opt/software/jdk-17.0.1; using bundled JDK
******************************************************************************
Note: The 'elasticsearch-setup-passwords' tool has been deprecated. This       command will be removed in a future release.
******************************************************************************Initiating the setup of passwords for reserved users elastic,apm_system,kibana,kibana_system,logstash_system,beats_system,remote_monitoring_user.
You will be prompted to enter passwords as the process progresses.
Please confirm that you would like to continue [y/N]y# 下面内置的账号中,你可以根据你的需求设置对应的密码
Enter password for [elastic]: 
Reenter password for [elastic]: 
Enter password for [apm_system]: 
Reenter password for [apm_system]: 
Enter password for [kibana_system]: 
Reenter password for [kibana_system]: 
Enter password for [logstash_system]: 
Reenter password for [logstash_system]: 
Enter password for [beats_system]: 
Reenter password for [beats_system]: 
Enter password for [remote_monitoring_user]: 
Reenter password for [remote_monitoring_user]: 
Changed password for user [apm_system]
Changed password for user [kibana_system]
Changed password for user [kibana]
Changed password for user [logstash_system]
Changed password for user [beats_system]
Changed password for user [remote_monitoring_user]
Changed password for user [elastic]
[root@es8-1 elasticsearch-8.15.0]# 

密码设置完毕之后,把上一步设置好的账号(用elastic账号)和密码输入进去,然后就可以登陆成功了,登陆成功后的界面如下所示:

在这里插入图片描述

9.下载和安装Kibana

注:其中一个ES节点执行 或者 其他服务器上执行都可以

Kibana下载地址:https://www.elastic.co/downloads/past-releases/kibana-8-15-0

#解压并安装到指定目录
tar -zxvf kibana-8.15.0-linux-x86_64.tar.gz -C /opt/software/
cd /opt/software/kibana-8.15.0/

10.编辑Kibana配置文件

vim /opt/software/kibana-8.15.0/config/kibana.yml

#绑定所有网卡(让外部能访问到)
server.host: “0.0.0.0”
#指定es集群的地址
elasticsearch.hosts: [“http://192.168.25.31:9200”,“http://192.168.25.32:9200”,“http://192.168.25.33:9200”]
#指定kibana连接es使用的账号(kibana_system)和密码。该密码上文设置过了
elasticsearch.username: “kibana_system”
elasticsearch.password: “123456”
#设置网站文字为中文
i18n.locale: “zh-CN”
#指定kibana日志输出格式和输出路径

logging.appenders.default:type: rolling-filefileName: /opt/software/kibana-8.15.0/logs/kibana.logpolicy:type: size-limitsize: 256mbstrategy:type: numericmax: 2layout:type: patternpattern: "[%date][%level][%logger] %message"

11.启动Kiabana

kibana安装目录授权给elastic用户

chown -R elastic:elastic /opt/software/kibana-8.15.0/

自定义Systemctl来控制Kibana的启停:

#自定义sytemctl来控制Kibana的启停
cat > /etc/systemd/system/kibana.service << 'EOF'
[Unit]
Description=Kibana
Documentation=https://www.elastic.co/docs
After=network.target[Service]
#运行Kibana使用的用户	
User=elastic
Group=elastic
ExecStart=/opt/software/kibana-8.15.0/bin/kibana[Install]
WantedBy=multi-user.targetEOF#让配置生效
systemctl daemon-reload

启动kibana

#启动kibana
systemctl start kibana
#开机自启动
systemctl enable kibana

:可以通过上面配置的日志路径找到对应日志文件来查看kibana是否启动成功。

12.访问Kiaban

访问地址:http://Kibana所在服务器IP:5601/。
我这里对应的地址是:http://192.168.25.31:5601/

网站进入登陆界面后,通过elastic账号进行登陆。
在这里插入图片描述
登陆成功后:
在这里插入图片描述

13.通过Kibana验证ES集群

在这里插入图片描述


通过“菜单”-“开发工具”-“控制台” 来执行我们的ES客户端命令。

执行集群查看命令

GET /_cluster/health

返回结果如下:

{"cluster_name": "es-cluster",		# 集群名称"status": "green",		#集群状态,绿色代表健康"timed_out": false,"number_of_nodes": 3,   #三个集群节点"number_of_data_nodes": 3,   #三个集群数据节点"active_primary_shards": 31,"active_shards": 62,"relocating_shards": 0,"initializing_shards": 0,"unassigned_shards": 0,"delayed_unassigned_shards": 0,"number_of_pending_tasks": 0,"number_of_in_flight_fetch": 0,"task_max_waiting_in_queue_millis": 0,"active_shards_percent_as_number": 100
}

在这里插入图片描述

至此,ES集群的搭建大功告成~~~~

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

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

相关文章

地址查询API接口:高效查询地址信息,提升数据处理效率

地址查询各省市区API接口 地址查询是我们日常生活中经常遇到的一个需求&#xff0c;无论是在物流配送、地图导航还是社交网络等应用中&#xff0c;都需要通过地址来获取地理位置信息。为了满足这个需求&#xff0c;我们可以使用地址查询API接口来高效查询地址信息&#xff0c;提…

3、C#基于.net framework的应用开发实战编程 - 实现(三、三) - 编程手把手系列文章...

三、 实现&#xff1b; 三&#xff0e;三、编写应用程序&#xff1b; 此文主要是实现应用的主要编码工作。 1、 分层&#xff1b; 此例子主要分为UI、Helper、DAL等层。UI负责便签的界面显示&#xff1b;Helper主要是链接UI和数据库操作的中间层&#xff1b;DAL为对数据库的操…

leetcode解题思路分析(一百六十三)1409 - 1415 题

查询带键的排列 给定一个正整数数组 queries &#xff0c;其取值范围在 1 到 m 之间。 请你根据以下规则按顺序处理所有 queries[i]&#xff08;从 i0 到 iqueries.length-1&#xff09;&#xff1a; 首先&#xff0c;你有一个排列 P[1,2,3,…,m]。 对于当前的 i &#xff0c;找…

【自学笔记】GitHub的重点知识点-持续更新

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 GitHub使用指南详细知识点一、GitHub基础与账户管理1. GitHub简介2. 创建与管理GitHub账户3. 创建与配置仓库&#xff08;Repository&#xff09; 二、Git基础与Git…

vscode软件操作界面UI布局@各个功能区域划分及其名称称呼

文章目录 abstract检查用户界面的主要区域官方文档关于UI的介绍 abstract 检查 Visual Studio Code 用户界面 - Training | Microsoft Learn 本质上&#xff0c;Visual Studio Code 是一个代码编辑器&#xff0c;其用户界面和布局与许多其他代码编辑器相似。 界面左侧是用于访…

类和对象(下)——类型转化 static成员 内部类 匿名对象 拷贝对象优化

一、类型转换 1.1 类型转化特点 C支持内置类型隐式类型转换为类类型对象&#xff0c;需要有相关内置类型为参数的构造函数。构造函数前面加explicit就不再支持隐式类型转换。类类型的对象之间也可以隐式转换&#xff0c;需要相应的构造函数支持 内置类型转换为类类型对象&#…

基于场景图的零样本目标导航

参考论文&#xff1a;SG-Nav&#xff1a;Online 3D Scene Graph Prompting for LLM-based Zero-shot Object Navigation 0 前言 基于现成的视觉基础模型VFMs和大语言模型LLM构建了无需任何训练的零样本物体巡航框架SG-Nav。 通过VLMs将机器人对场景的观测构建为在线的3D场景图…

深入解析 clone():高效的进程与线程创建方法(中英双语)

深入解析 clone()&#xff1a;高效的进程与线程创建方法 1. 引言 在 Unix/Linux 系统中&#xff0c;传统的进程创建方式是 fork()&#xff0c;它会复制父进程的地址空间来创建子进程。然而&#xff0c;fork() 复制的资源往往会被 exec() 立即替换&#xff0c;这会导致额外的内…

开屏广告-跳过神器

给大家介绍一款超实用的软件——SKIP&#xff0c;它堪称李跳跳的最佳平替&#xff01;这款软件已经在Github开源免费&#xff0c;完全无需担心内置源问题&#xff0c;也无需导入任何规则。安装完成后&#xff0c;即可直接使用&#xff0c;非常便捷&#xff01; 首次打开软件时…

大模型本地化部署(Ollama + Open-WebUI)

文章目录 环境准备下载Ollama模型下载下载Open-WebUI 本地化部署的Web图形化界面本地模型联网查询安装 Docker安装 SearXNG本地模型联网查询 环境准备 下载Ollama 下载地址&#xff1a;Ollama网址 安装完成后&#xff0c;命令行里执行命令 ollama -v查看是否安装成功。安装成…

自制虚拟机(C/C++)(三、做成标准GUI Windows软件,扩展指令集,直接支持img软盘)

开源地址:VMwork 要使终端不弹出&#xff0c; #pragma comment(linker, "/subsystem:windows /ENTRY:mainCRTStartup") 还要实现jmp near 0x01类似的 本次的main.cpp #include <graphics.h> #include <conio.h> #include <windows.h> #includ…

排序算法--桶排序

核心思想为分区间排序后合并。适用于数据均匀分布在一个范围内&#xff0c;或浮点数排序或范围明确的数据。如果需要处理整数或其他数据范围&#xff0c;可以通过调整BUCKET_RANGE的计算方式实现&#xff0c;例如对[0,100)的整数排序&#xff1a; int index arr[i] / 10; // …

【游戏设计原理】97 - 空间感知

一、游戏空间的类型 将游戏设计中的空间设计单独提取出来&#xff0c;可以根据其结构、功能和玩家的交互方式划分为以下几种主要类型。这些类型可以单独存在&#xff0c;也可以组合使用&#xff0c;以创造更加复杂和有趣的游戏体验。 1. 线性空间 定义&#xff1a;空间设计是…

va_list va_start va_end的概念和使用案例

va_list、va_start 和 va_end 是 C/C 中用于处理可变参数函数&#xff08;Variadic Functions&#xff09;的一组宏&#xff0c;定义在 <stdarg.h>&#xff08;C&#xff09;或 <cstdarg>&#xff08;C&#xff09;头文件中。它们允许函数接受不固定数量的参数&…

基于开源AI智能名片2 + 1链动模式S2B2C商城小程序视角下的个人IP人设构建研究

摘要&#xff1a;本文深入探讨在开源AI智能名片2 1链动模式S2B2C商城小程序的应用场景下&#xff0c;个人IP人设构建的理论与实践。通过剖析个人IP人设定义中的“诉求”“特质”“可感知”三要素&#xff0c;结合该小程序特点&#xff0c;阐述其对个人IP打造的影响与推动作用&…

数据库和数据表的创建、修改、与删除

1.标识符命名规则 数据库名、表名不得超过30个字符&#xff0c;变量名限制为29个 必须只能包含A-Z,a-z,0-9,_共63个字符 数据库名、表名、字段名等对象名中间不能包含空格 同一个MySQL软件中&#xff0c;数据库不能同名&#xff1b;同一个库中&#xff0c;表不能重名&#…

算法日记10:SC62求和(单调栈)(共享求解)

一、题目 二、题解&#xff1a; 1、首先&#xff0c;我们看到题目的第一个想法&#xff0c;就是把样例答案如何求解给列出来&#xff0c;图例如下 2、通过分析样例&#xff0c;可以很清晰的发现每一个数字都有其管辖的区间&#xff0c;因此我们可以想到能否找到一个数字它所管…

C#基础知识

0 C#介绍 定义与背景 C#&#xff08;发音为C - sharp&#xff09;是微软公司开发的一种高级编程语言。它是专门为构建在微软的.NET平台上运行的各种应用程序而设计的。在2000年左右推出&#xff0c;目的是结合当时编程语言的优点&#xff0c;如C的强大功能和Java的简单性与安全…

HTML 字符实体

HTML 字符实体 在HTML中,字符实体是一种特殊的表示方式,用于在文档中插入那些无法直接通过键盘输入的字符。字符实体在网页设计和文档编写中扮演着重要的角色,尤其是在处理特殊字符、符号和数学公式时。以下是关于HTML字符实体的详细解析。 字符实体概述 HTML字符实体是一…

Revit二次开发 自适应族添加放样融合

大多数博客给出的方案都是如何在有自适应族的情况下进行修改定位点或是将数据传入自适应族,如何直接在族文件中创建自适应模型并将点转换为自适应点,连接自适应点成为自适应路径这种方式没有文章介绍. 下面的代码中给出了如何在自适应族文件中创建参照点并转换为自适应点连接…