百度搜到网站,网站建设与管理岗位,专业做网站设计公司价格,免费的个人简历模板范文Elasticsearch 是一个分布式的搜索和分析引擎#xff0c;广泛应用于日志分析、全文搜索、实时数据分析等场景。它以其高性能、高可用性和易用性而著称。本文档将引导您完成一个基本的 Elasticsearch 集群配置#xff0c;包括节点间的通信、客户端访问、安全设置等关键步骤。我… Elasticsearch 是一个分布式的搜索和分析引擎广泛应用于日志分析、全文搜索、实时数据分析等场景。它以其高性能、高可用性和易用性而著称。本文档将引导您完成一个基本的 Elasticsearch 集群配置包括节点间的通信、客户端访问、安全设置等关键步骤。我们将通过三个节点node1、node2、node3来搭建一个高可用的 Elasticsearch 集群以确保您的数据能够在多个节点之间高效地存储和检索。
中文文档Elastic — 搜索 AI 公司 | Elastic
英文文档Documentation
1. 准备工作
1. 配置多台 Linux 虚拟机参考如何准备多台虚拟机并配置集群化软件_多台服务器虚拟化集群-CSDN博客文章浏览阅读978次点赞8次收藏11次。在搭建集群化软件的过程中首先需要准备好多台Linux服务器。本文将详细介绍如何使用VMware提供的克隆功能来准备多台虚拟机并进行必要的配置以实现集群化软件的部署。_多台服务器虚拟化集群https://blog.csdn.net/kersixy/article/details/142205834?spm1001.2014.3001.5501
2. 【node1、2、3】创建工作目录
以部署到 /export/server 目录为例
mkdir -p /export/server
3. 【node1、2、3】开放必要端口
确保以下端口在防火墙中开放
9200HTTP REST API 端口用于与 Elasticsearch 集群进行交互。9300节点间通信端口用于 Elasticsearch 节点之间的内部通信。5601可选Kibana 端口用于访问 Kibana 界面。
sudo firewall-cmd --zonepublic --add-port9200/tcp --permanent
sudo firewall-cmd --zonepublic --add-port9300/tcp --permanent
sudo firewall-cmd --zonepublic --add-port5601/tcp --permanent
sudo firewall-cmd --reload
2. 下载和安装 Elasticsearch
1. 下载 Elasticsearch
方式一在线下载
wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.17.26-linux-x86_64.tar.gz方式二浏览器下载
Past Releases of Elastic Stack Software | ElasticLooking for a past release of Elasticsearch, Logstash, Kibana, es-hadoop, Shield, Marvel, or our language clients? Youre in the right place....https://www.elastic.co/cn/downloads/past-releases#elasticsearch
选择所需的版本点击下载 点击 LINUX X86_64下载 tar.gz 文件上传到虚拟机。 2. 【node1】解压 Elasticsearch并创建数据目录
tar -zxvf elasticsearch-7.17.26-linux-x86_64.tar.gz
mv elasticsearch-7.17.26 /export/server/elasticsearch
mkdir -p /export/server/elasticsearch/data
3. 配置 Elasticsearch
1. 【node1】配置 elasticsearch.yml :
sudo vi /export/server/elasticsearch/config/elasticsearch.yml
i 编辑文件在文件中追加一下内容
cluster.name: es-cluster
node.name: node-1
node.master: true
node.data: true
path.data: /export/server/elasticsearch/data
path.logs: /export/server/elasticsearch/logs
network.host: 0.0.0.0
discovery.seed_hosts: [node2, node3]
network.tcp.keep_alive: true
network.tcp.no_delay: true
action.destructive_requires_name: true
gateway.recover_after_nodes: 2
cluster.initial_master_nodes: [node-1, node-2, node-3]
http.port: 9200
cluster.routing.allocation.cluster_concurrent_rebalance: 16
cluster.routing.allocation.node_concurrent_recoveries: 16
cluster.routing.allocation.node_initial_primaries_recoveries: 16ESC 退出编辑:wq 保存并退出。 配置说明 cluster.name集群名称。同一个集群的所有节点必须使用相同的集群名称。node.name节点名称。同一个集群内的每个节点名称必须唯一。node.master是否可以被选举为主节点。设置为 true 表示该节点有资格成为主节点。node.data该节点是否可以存储数据。设置为 true 表示该节点可以存储数据。node.roles是否有主节点资格;master使其有资格被选为控制集群的主节点;data此节点同时为数据节点7.x版本以后支持同node.master node.data。配置示例node.roles: [master,data]path.data数据目录的位置。Elasticsearch 将在此目录下存储索引数据。path.logs日志目录的位置。Elasticsearch 将在此目录下存储日志文件。network.host设置节点绑定的 IP 地址或主机名。默认情况下Elasticsearch 只允许本机访问。设置为 0.0.0.0 表示允许任何 IP 地址访问。discovery.seed_hosts发现其他节点的初始列表。这里填写其他节点的 IP 地址或主机名不包括当前节点。network.tcp.keep_alive是否启用 TCP 保活机制。设置为 true 可以防止长时间空闲的连接被关闭。network.tcp.no_delay是否禁用 Nagle 算法。设置为 true 可以减少延迟提高响应速度。action.destructive_requires_name控制是否需要在执行破坏性操作时明确指定索引名称。破坏性操作包括删除索引、清空索引等。启用此配置可以增加安全性防止误操作导致数据丢失。gateway.recover_after_nodes在集群恢复过程中至少需要多少个节点在线后才开始恢复索引。通常这个值应该小于或等于集群中的总节点数。cluster.initial_master_nodes用于指定在集群启动时哪些节点可以作为初始主节点候选。填写全部节点名称。http.portHTTP REST API 端口。默认端口为 9200。cluster.routing.allocation.cluster_concurrent_rebalance集群内同时启动的数据任务个数。默认是 2 个。cluster.routing.allocation.node_concurrent_recoveries添加或删除节点及负载均衡时并发恢复线程个数。默认是 4 个。cluster.routing.allocation.node_initial_primaries_recoveries初始化数据恢复时并发恢复线程的个数。默认是 4 个。 2. 【node1】配置 JVM 选项
sudo vi /export/server/elasticsearch/config/jvm.options
G 跳转到文件尾行$ 跳转到当前行末尾i 编辑文件。在文件末尾新建一行添加
-Xms4g
-Xmx4g ESC 退出编辑:wq 保存并退出。
3. 【node1】将 elasticsearch 录递归复制到 node2、node3 主机的 /export/server/ 目录下
cd /export/server
scp -r elasticsearch node2:pwd/
scp -r elasticsearch node3:pwd/
4. 【node2】修改 node2 的 elasticsearch.yml
sudo vi /export/server/elasticsearch/config/elasticsearch.yml
i 编辑文件文件内容修改为
cluster.name: es-cluster
node.name: node-2
node.master: true
node.data: true
path.data: /export/server/elasticsearch/data
path.logs: /export/server/elasticsearch/logs
network.host: 0.0.0.0
discovery.seed_hosts: [node1, node3]
network.tcp.keep_alive: true
network.tcp.no_delay: true
action.destructive_requires_name: true
gateway.recover_after_nodes: 2
cluster.initial_master_nodes: [node-1, node-2, node-3]
http.port: 9200
cluster.routing.allocation.cluster_concurrent_rebalance: 16
cluster.routing.allocation.node_concurrent_recoveries: 16
cluster.routing.allocation.node_initial_primaries_recoveries: 16
ESC 退出编辑:wq 保存并退出。
5. 【node3】修改 node3 的 elasticsearch.yml
sudo vi /export/server/elasticsearch/config/elasticsearch.yml
i 编辑文件文件内容修改为
cluster.name: es-cluster
node.name: node-3
node.master: true
node.data: true
path.data: /export/server/elasticsearch/data
path.logs: /export/server/elasticsearch/logs
network.host: 0.0.0.0
discovery.seed_hosts: [node1, node2]
network.tcp.keep_alive: true
network.tcp.no_delay: true
action.destructive_requires_name: true
gateway.recover_after_nodes: 2
cluster.initial_master_nodes: [node-1, node-2, node-3]
http.port: 9200
cluster.routing.allocation.cluster_concurrent_rebalance: 16
cluster.routing.allocation.node_concurrent_recoveries: 16
cluster.routing.allocation.node_initial_primaries_recoveries: 16
ESC 退出编辑:wq 保存并退出。
4. 【node1、2、3】系统配置
1. 创建 Elasticsearch 用户
groupadd es
useradd es -g es
cd /export/server
sudo chown es:es -R elasticsearch/
查看赋权情况
ll 2. 设置系统资源限制
sudo vi /etc/security/limits.conf
G 跳转到文件尾行$ 跳转到当前行末尾i 编辑文件。在文件末尾新建一行添加
* soft nofile 65536
* hard nofile 65536
ESC 退出编辑:wq 保存并退出。
3. 设置虚拟内存限制
sudo vi /etc/sysctl.conf
G 跳转到文件尾行$ 跳转到当前行末尾i 编辑文件。在文件末尾新建一行添加
vm.max_map_count262145
ESC 退出编辑:wq 保存并退出。加载并应用 /etc/sysctl.conf 文件中的系统参数设置
sysctl -p 4. 设置环境变量
sudo vi /etc/profile
G 跳转到文件尾行$ 跳转到当前行末尾i 编辑文件。在文件末尾新建一行添加
export ES_JAVA_HOME/export/server/elasticsearch/jdk
export PATH$ES_JAVA_HOME/bin:$PATH 注意 如果同时配置过 JAVA_HOME 和 ES_JAVA_HOME PATH 会优先使用先配置的环境变量即 java -version 的版本为先配置的 PATH如想优先使用 JAVA_HOME则需要将 export PATH$ES_JAVA_HOME/bin:$PATH
export PATH$JAVA_HOME/bin:$PATH 合并为 export PATH$JAVA_HOME/bin:$ES_JAVA_HOME/bin:$PATH ESC 退出编辑:wq 保存并退出。重新加载 /etc/profile 文件中的环境变量设置使新的设置立即生效
source /etc/profile
5. 创建 Systemd 服务可选
vi /etc/systemd/system/elasticsearch.service
i 编辑文件文件内容为
[Unit]
DescriptionElasticsearch
Afternetwork.target[Service]
Useres
Groupes
EnvironmentES_JAVA_OPTS-Xms512m -Xmx512m
EnvironmentES_JAVA_HOME/export/server/elasticsearch/jdk
EnvironmentJAVA_HOME/export/server/jdk
ExecStart/export/server/elasticsearch/bin/elasticsearch
ExecReload/bin/kill -HUP $MAINPID
ExecStop/bin/kill -SIGINT $MAINPID
Restarton-failure
LimitMEMLOCKinfinity
LimitNOFILE65536[Install]
WantedBymulti-user.target
5. 【node1、2、3】启动 Elasticsearch
5.1 方式一手动启动
su es
cd /export/server/elasticsearch/bin
./elasticsearch -d
5.2 方式二使用 Systemd 服务
# 启动elasticsearch
systemctl start elasticsearch
# 查看elasticsearch状态
systemctl status elasticsearch
# 设置开机自启动
systemctl enable elasticsearch Systemd 服务其他命令 # 重启elasticsearch
systemctl restart elasticsearch
# 停止elasticsearch服务
systemctl stop elasticsearch 6. 查看服务状态
1. 查看启动是否成功
项目启动大约需要2-4 分钟时间要确保项目完全启动后再执行否则会出现拒绝访问
curl http://内网ip:9200 2. 检查 Elasticsearch 集群的健康状态
curl -X GET 内网ip:9200/_cat/health?v 说明 status: 集群状态常见的状态有 green: 所有主分片和副本分片都可用。yellow: 所有主分片可用但某些副本分片不可用。red: 一些主分片不可用。 3. 分析 Elasticsearch 集群的状态和各个节点的信息
curl -X GET http://内网ip:9200/_cat/nodes?v 说明 ip: 节点的 IP 地址。heap.percent: 堆内存使用百分比。ram.percent: 物理内存使用百分比。cpu: CPU 使用率。load_1m: 最近 1 分钟的系统负载平均值。load_5m: 最近 5 分钟的系统负载平均值。load_15m: 最近 15 分钟的系统负载平均值。node.role: 节点的角色常见的角色包括 c: 集群管理节点。d: 数据节点。f: 冻结节点。h: 主节点。i: 协调节点。l: 日志节点。m: 主节点。r: 远程集群客户端节点。s: 存储节点。t: 传输节点。w: 写节点。master: 是否为主节点* 表示是主节点- 表示不是主节点。name: 节点名称。 到此为止无安全配置的 Elasticsearch 集群配置完成。 7. 安全配置
7.1 生成证书
1. 【node1】生成 CA 证书
cd /export/server/elasticsearch/bin
./elasticsearch-certutil ca
输入 CA 证书文件名。接受默认文件名 elastic-stack-ca.p12亦可换成其他文件名设置 CA 密钥库的密码。 2. 【node1】生成节点证书
./elasticsearch-certutil cert --ca /export/server/elasticsearch/elastic-stack-ca.p12
输入CA 密钥库的密码。输入上一步的CA 密钥库的密码输入节点证书文件名。接受默认文件名 elastic-certificates.p12 亦可输入文件名修改最后提示输入节点证书密钥库密码。可以直接回车跳过输入密码。 3. 【node1】移动和赋权证书
cd /export/server/elasticsearch
mv elastic-certificates.p12 config/
mv elastic-stack-ca.p12 config/
cd config/
scp -r elastic-certificates.p12 node2:pwd/
scp -r elastic-stack-ca.p12 node2:pwd/
scp -r elastic-certificates.p12 node3:pwd/
scp -r elastic-stack-ca.p12 node3:pwd/
4. 【node1、2、3】配置安全设置
cd /export/server/elasticsearch/config/
sudo chown es:es -R ./*
sudo vi elasticsearch.yml
G 跳转到文件尾行$ 跳转到当前行末尾i 编辑文件。在文件末尾新建一行添加
xpack.security.enabled: true
xpack.security.transport.ssl.enabled: true
xpack.security.transport.ssl.verification_mode: certificate
xpack.security.transport.ssl.keystore.path: /export/server/elasticsearch/config/elastic-certificates.p12
xpack.security.transport.ssl.truststore.path: /export/server/elasticsearch/config/elastic-certificates.p12
ESC 退出编辑:wq 保存并退出。
5. 【node1、2、3】重启 Elasticsearch
如果是手动启动的则按以下方法重启
# 查看进程
ps -ef | grep elasticsearch
# 强制停止进程
kill -9 对应进程
# 启动Elasticsearch
# 如果是root用户下需要su es切换用户es用户下无需切换
su es
cd /export/server/elasticsearch/bin
./elasticsearch -d 如果使用 Systemd 服务则按以下方法重启
# 重启Elasticsearchelasticsearch.service可写为elasticsearch
systemctl restart elasticsearch.service
7.2 【node1】设置用户密码
1. 交互式设置密码
cd /export/server/elasticsearch/bin
./elasticsearch-setup-passwords interactive
请确认您是否要继续y为 elastic 用户超级用户具有所有权限输入密码为 elastic 用户超级用户具有所有权限确认密码为 apm_system 用户APM 服务器使用的用户输入密码为 apm_system 用户APM 服务器使用的用户确认密码为 kibana 用户Kibana 服务器使用的用户输入密码为 kibana 用户Kibana 服务器使用的用户确认密码为 logstash_system 用户Logstash 服务器使用的用户输入密码为 logstash_system 用户Logstash 服务器使用的用户确认密码为 beats_system 用户Filebeat 和其他 Beats 采集器使用的用户输入密码为 beats_system 用户Filebeat 和其他 Beats 采集器使用的用户确认密码为 remote_monitoring_user 用户用于远程监控的用户输入密码为 remote_monitoring_user 用户用于远程监控的用户确认密码。 2. 测试连接
虚拟机访问测试
curl -u elastic:elastic用户密码 http://内网ip:9200 浏览器访问测试
访问 http://外网ip:9200/ 访问结果如下图