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

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 Stack

Commands
--------
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.target

EOF

#让配置生效
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-file
  fileName: /opt/software/kibana-8.15.0/logs/kibana.log
  policy:
    type: size-limit
    size: 256mb
  strategy:
    type: numeric
    max: 2
  layout:
    type: pattern
    pattern: "[%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.target

EOF

#让配置生效
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集群的搭建大功告成~~~~

### Elasticsearch 8.15.3 版本特性 Elasticsearch 8.15.3 提供了一系列增强功能和修复,旨在提高性能、安全性和易用性。此版本继续支持多租户架构下的细粒度访问控制,并增强了数据流处理能力[^1]。 - **安全性改进**:引入了更强大的身份验证机制和支持更多类型的加密算法。 - **查询优化**:通过新的聚合函数和更快的索引操作提升了查询效率。 - **机器学习模块更新**:增加了对异常检测的支持范围并提高了模型训练速度。 - **跨集群复制(CCR)**:简化了设置过程中的复杂配置项,使得CCR更加稳定可靠。 ### 安装配置指南 对于希望部署该版本的用户来说,可以按照如下方法获取官方发布的二进制文件: ```bash wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-8.15.3-linux-x86_64.tar.gz wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-8.15.3-linux-x86_64.tar.gz.sha512 shasum -a 512 -c elasticsearch-8.15.3-linux-x86_64.tar.gz.sha512 tar -xzf elasticsearch-8.15.3-linux-x86_64.tar.gz cd elasticsearch-8.15.3/ ``` 完成下载解压之后,在启动之前还需要确保已经正确设置了JVM参数和其他必要的环境变量。 ### 使用文档概览 官方提供了详尽的手册来指导开发者如何充分利用这个工具集的功能。这些资源涵盖了从基础概念到高级主题的内容,包括但不限于API参考手册、教程视频以及最佳实践案例研究等资料。建议初次使用者先阅读入门指南部分,熟悉基本的操作流程后再深入探索特定领域内的应用技巧。 ### 更新日志摘要 自上一主要发布以来的主要变化记录如下所示: - 解决了一些潜在的安全漏洞问题; - 改进了内存管理和磁盘I/O表现; - 增加了针对云原生平台的支持选项; - 对RESTful API进行了扩展和完善; 以上信息总结了Elasticsearch 8.15.3的关键特性和安装步骤等内容。为了获得最准确的信息,请参阅官方网站上的正式公告和技术白皮书。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值