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

embedded/2025/2/7 3:32:45/

文章目录

  • 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.ppmy.cn/embedded/160194.html

相关文章

生成式AI安全最佳实践 - 抵御OWASP Top 10攻击 (上)

今天小李哥将开启全新的技术分享系列&#xff0c;为大家介绍生成式AI的安全解决方案设计方法和最佳实践。近年来&#xff0c;生成式 AI 安全市场正迅速发展。据 IDC 预测&#xff0c;到 2025 年全球 AI 安全解决方案市场规模将突破 200 亿美元&#xff0c;年复合增长率超过 30%…

使用 Axios 获取用户数据并渲染——个人信息设置

目录 1. HTML 部分&#xff08;前端页面结构&#xff09; HTML 结构解析&#xff1a; 2. JavaScript 部分&#xff08;信息渲染逻辑&#xff09; JavaScript 解析&#xff1a; 3. 完整流程 4. 总结 5. 适用场景 本文将介绍如何通过 Axios 从服务器获取用户信息&#xff0…

强化学习笔记(5)——PPO

PPO视频课程来源 首先理解采样期望的转换 变量x在p(x)分布下&#xff0c;函数f(x)的期望 等于f(x)乘以对应出现概率p(x)的累加 经过转换后变成 x在q(x)分布下&#xff0c;f(x)*p(x)/q(x) 的期望。 起因是&#xff1a;求最大化回报的期望&#xff0c;所以对ceta求梯度 具体举例…

深入解析JUnit中的@ClassRule注解

在Java开发中&#xff0c;JUnit是一个非常流行的单元测试框架&#xff0c;它为开发者提供了强大的工具来编写和执行测试用例。今天&#xff0c;我们来深入探讨一下JUnit中的ClassRule注解&#xff0c;看看它是如何工作的&#xff0c;并通过一个实际的示例来加深理解。 一、Clas…

Vue3学习笔记-Vue开发前准备-1

一、安装15.0或更高版本的Node.js node -v npm -v 二、创建Vue项目 npm init vuelatest 三、Vue项目结构 node_modules: Vue项目运行的依赖文件public&#xff1a;资源文件夹package.json&#xff1a;信息描述文件

uniapp小程序自定义中间凸起样式底部tabbar

我自己写的自定义的tabbar效果图 废话少说咱们直接上代码&#xff0c;一步一步来 第一步&#xff1a; 找到根目录下的 pages.json 文件&#xff0c;在 tabBar 中把 custom 设置为 true&#xff0c;默认值是 false。list 中设置自定义的相关信息&#xff0c; pagePath&#x…

c++ list的front和pop_front的概念和使用案例

在 C 中&#xff0c;std::list 是一种双向链表容器&#xff0c;提供了对序列中元素的快速插入和删除操作。以下是 std::list 容器的 front 和 pop_front 方法的概念和使用案例。 front 概念&#xff1a;front 成员函数返回对 std::list 容器中第一个元素的引用。如果列表为空…

说一下JVM管理的常见参数

Java虚拟机&#xff08;JVM&#xff09;有许多常见参数&#xff0c;用于控制其行为和性能。以下是一些常见的JVM参数及其说明&#xff1a; 1. 内存管理参数 -Xms<size> START 设置初始堆内存大小。例如&#xff0c;-Xms512m表示初始堆大小为512MB。 -Xmx<size>…