Elasticsearch集群部署

一、离线服务包部署规划

|----------------|--------------------------------------|-----------------------------------------------------------------------------|
| 主机IP | 系统版本 | 部署服务包 |
| 192.168.63.208 | CentOS Linux release 7.9.2009 (Core) | elasticsearch-7.11.1-linux-x86_64.tar.gz + jdk-11.0.10_linux-x64_bin.tar.gz |
| 192.168.63.209 | CentOS Linux release 7.9.2009 (Core) | kibana-7.11.1-linux-x86_64.tar.gz |
| 192.168.63.210 | CentOS Linux release 7.9.2009 (Core) | logstash-7.11.1-linux-x86_64.tar.gz + jdk-11.0.10_linux-x64_bin.tar.gz |

二、前置标准化配置

复制代码
#查看系统版本信息
uname -a
cat /etc/redhat-release

所有服务器通用初始化
vi /etc/sysconfig/network-scripts/ifcfg-ens33
cat /etc/sysconfig/network-scripts/ifcfg-ens33
.......................................
TYPE="Ethernet"
PROXY_METHOD="none"
BROWSER_ONLY="no"
BOOTPROTO="static"
DEFROUTE="yes"
IPV4_FAILURE_FATAL="no"
IPV6INIT="yes"
IPV6_AUTOCONF="yes"
IPV6_DEFROUTE="yes"
IPV6_FAILURE_FATAL="no"
IPV6_ADDR_GEN_MODE="stable-privacy"
NAME="ens33"
UUID="6f45d4ba-25db-4de7-b0e8-5f2731b3c2d9"
DEVICE="ens33"
ONBOOT="yes"
IPADDR0=192.168.63.208 #按需配置IP地址
PREFIX0=24
GATEWAY0=192.168.63.2
DNS1=114.114.114.114
DNS2=8.8.8.8
.........................................
systemctl restart network
ping www.baidu.com

关闭防火墙 / SELinux / 交换分区(必须)
# 关闭防火墙
systemctl stop firewalld && systemctl disable firewalld

# 关闭 SELinux
sed -i 's/enforcing/disabled/' /etc/selinux/config
setenforce 0

# 永久关闭交换分区
swapoff -a
sed -i '/swap/s/^/#/' /etc/fstab

# 确认关闭(无输出即为成功)
free -m | grep Swap

#添加hosts解析;
cat >/etc/hosts<<EOF
127.0.0.1 localhost localhost.localdomain
192.168.63.208  208
192.168.63.209  209
192.168.63.210  210
EOF

#修改对应节点主机名;
hostname `cat /etc/hosts|grep $(ifconfig|grep broadcast|awk '{print $2}')|awk '{print $2}'`;su
 
#配置阿里云yum源
wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo

# 清空缓存、重建yum缓存
yum clean all && yum makecache

# 安装时间同步工具
yum install -y chrony

# 注释掉原有时间服务器
sed -i 's/^pool /#pool /g' /etc/chrony.conf

# 添加阿里云时间服务器
echo "server ntp.aliyun.com iburst" >> /etc/chrony.conf

# 设置开机自启并立即启动
systemctl enable --now chronyd

# 查看时间同步源状态
chronyc sources

三、离线包部署

在有网的环境下载离线包,上传至服务器

复制代码
jdk离线包,下载后可改名
https://github.com/adoptium/temurin11-binaries/releases/download/jdk-11.0.23+9/OpenJDK11U-jdk_x64_linux_hotspot_11.0.23_9.tar.gz

elasticsearch离线包
https://mirrors.huaweicloud.com/elasticsearch/7.11.1/elasticsearch-7.11.1-linux-x86_64.tar.gz

logstash离线包
https://artifacts.elastic.co/downloads/logstash/logstash-7.11.1-linux-x86_64.tar.gz

kibana离线包
https://mirrors.huaweicloud.com/kibana/7.11.1/kibana-7.11.1-linux-x86_64.tar.gz

192.168.63.208服务器 JDK + Elasticsearch 7.11.1 部署(含开机自启、重启自动访问)

复制代码
把离线包上传至data文件夹
# 修复最大文件描述符软限制
echo "* soft nofile 65535" >> /etc/security/limits.conf
# 修复最大文件描述符硬限制
echo "* hard nofile 65535" >> /etc/security/limits.conf

# 配置虚拟内存上限(ES必须)
echo "vm.max_map_count=262144" >> /etc/sysctl.conf

# 内核参数立即生效
sysctl -p

# 进入数据目录
cd /data

# 解压JDK11
tar -xzf jdk-11.0.10_linux-x64_bin.tar.gz

# 移动JDK到安装目录
mv jdk-11.0.10 /usr/local/jdk/

# 配置JDK环境变量
tee -a /etc/profile <<-'BASH'
export JAVA_HOME=/usr/local/jdk
export PATH=$JAVA_HOME/bin:$PATH
BASH

# 查看环境变量是否写入
tail -5 /etc/profile

# 使环境变量生效
source /etc/profile

# 验证JDK
java -version

# 解压ES
tar -xzf elasticsearch-7.11.1-linux-x86_64.tar.gz

# 移动ES到安装目录
mv elasticsearch-7.11.1 /usr/local/elasticsearch

# 进入ES配置目录
cd /usr/local/elasticsearch/config/

# 修改ES监听地址为0.0.0.0(允许外部访问)
sed -i -e '/network\.host/s/#//g' -e'/network\.host/s/192.168.0.1/0.0.0.0/g' elasticsearch.yml 
# 启用节点名称
sed -i '/node.name/s/#//g' elasticsearch.yml
# 单节点模式,删除node-2
sed -i -e '/cluster\.initial/s/\, \"node-2\"//g' -e '/cluster\.initial/s/#//g' elasticsearch.yml

# 创建elk用户
useradd elk

# 授权目录权限
chown -R elk:elk /usr/local/elasticsearch/

开机自启配置
# 创建系统服务文件
tee /etc/systemd/system/elasticsearch.service <<-'EOF'
[Unit]
Description=Elasticsearch
Documentation=https://www.elastic.co
After=network.target

[Service]
Type=forking
User=elk
Group=elk
LimitNOFILE=65535
LimitNPROC=4096
ExecStart=/usr/local/elasticsearch/bin/elasticsearch -d
Restart=always
WorkingDirectory=/usr/local/elasticsearch

[Install]
WantedBy=multi-user.target
EOF

# 重新加载系统服务
systemctl daemon-reload

# 设置开机自启
systemctl enable elasticsearch

# 启动Elasticsearch
systemctl start elasticsearch

# 查看启动状态
systemctl status elasticsearch

# 验证ES是否可访问
curl 127.0.0.1:9200

# 查看端口监听
netstat -tnlp|grep -E "9200|9300"

192.168.63.209服务器 部署Kibana 7.11.1

复制代码
把离线包上传至data文件夹
# 进入安装包存放目录/data
cd /data

# 解压kibana 7.11.1压缩包
tar -xzf kibana-7.11.1-linux-x86_64.tar.gz

# 将解压后的kibana移动到系统安装目录/usr/local/kibana
mv kibana-7.11.1-linux-x86_64 /usr/local/kibana

# 查看kibana安装目录文件详情,确认安装成功
ls -l /usr/local/kibana

# 进入kibana配置文件目录
cd /usr/local/kibana/config/

# 查看配置目录下所有文件
ls -la

# 查看kibana默认配置文件内容
cat kibana.yml

# 开启kibana服务端口 5601(取消#注释)
sed -i '/server.port/s/#//g' kibana.yml

# 开启监听地址,取消注释并将localhost改为0.0.0.0(允许所有IP访问)
sed -i -e '/server.host/s/#//g' -e '/server.host/s/localhost/0.0.0.0/g' kibana.yml

# 开启ES连接地址,取消#注释并指向208服务器的ES地址
sed -i -e '/elasticsearch.hosts/s/#//g' -e 's|http://localhost:9200|http://192.168.63.208:9200|g' kibana.yml

# 开启中文国际化配置(取消#注释)
sed -i '/i18n.locale/s/#//g' kibana.yml
# 将英文界面改为中文界面 zh-CN
sed -i '/i18n.locale/s/en/zh-CN/g' kibana.yml

# 查看修改后的kibana配置,确认参数正确
cat kibana.yml

# 授权kibana目录权限(避免启动报错)
chown -R root:root /usr/local/kibana

创建开机自启配置
# 创建系统服务文件,配置kibana开机自启
tee /etc/systemd/system/kibana.service <<-'EOF'
[Unit]
Description=Kibana
After=network.target

[Service]
Type=simple
User=root
Group=root
ExecStart=/usr/local/kibana/bin/kibana --allow-root
Restart=always
WorkingDirectory=/usr/local/kibana

[Install]
WantedBy=multi-user.target
EOF

# 重新加载系统服务配置
systemctl daemon-reload

# 设置kibana开机自启
systemctl enable kibana

# 启动kibana服务
systemctl start kibana

# 查看kibana启动状态
systemctl status kibana

# 查看kibana进程是否正常运行
ps -ef|grep node

# 查看kibana 5601端口是否监听成功
netstat -tnpl|grep -aiwE 5601

# 浏览器访问地址:http://192.168.63.209:5601/

192.168.63.210 服务器 JDK11 + Logstash7.11.1

复制代码
把离线包上传至data文件夹
# 进入data安装包目录
cd /data

# 解压 JDK11 安装包
tar -xzf jdk-11.0.10_linux-x64_bin.tar.gz

# 移动jdk到系统目录
mv jdk-11.0.10 /usr/local/jdk/

# 写入全局JDK环境变量
tee -a /etc/profile <<-'BASH'
export JAVA_HOME=/usr/local/jdk
export PATH=$JAVA_HOME/bin:$PATH
BASH

# 查看环境变量写入是否成功
tail -5 /etc/profile

# 重载环境变量,立即生效
source /etc/profile

# 验证jdk安装是否成功
java -version

# 解压 logstash 压缩包
tar -xzf logstash-7.11.1-linux-x86_64.tar.gz

# 移动logstash到系统目录
mv logstash-7.11.1 /usr/local/logstash

# 查看logstash目录结构
ls -l /usr/local/logstash

# 自定义创建logstash配置存放目录
mkdir -p /usr/local/logstash/etc

# 进入自定义配置目录
cd /usr/local/logstash/etc

# 创建日志收集配置文件
touch logstash_messages.conf

# 写入logstash收集系统日志配置:收集/var/log/messages + 监听5044端口,输出到208ES
cat > /usr/local/logstash/etc/logstash_messages.conf << EOF

input {
  file {
    type => "kernel-message"
    path => "/var/log/messages"
    start_position => "beginning"
    sincedb_path => "/dev/null"
  }

  beats {
    port => 5044
    host => "0.0.0.0"
  }
}

output {
  elasticsearch {
    hosts => ["192.168.63.208:9200"]
    index => "system-messages-%{+YYYY.MM.dd}"
  }
}
EOF

创建配置 Logstash 开机自启
# 新建systemd服务单元
tee /etc/systemd/system/logstash.service <<-'EOF'
[Unit]
Description=Logstash Service
After=network.target

[Service]
Type=simple
User=root
Group=root
# 指定配置文件后台运行
ExecStart=/usr/local/logstash/bin/logstash -f /usr/local/logstash/etc/logstash_messages.conf
Restart=always
RestartSec=5

[Install]
WantedBy=multi-user.target
EOF

# 重载系统服务
systemctl daemon-reload

# 设置开机自启
systemctl enable logstash

# 启动logstash服务
systemctl start logstash

# 查看logstash运行状态
systemctl status logstash

# 查看logstash启动日志
systemctl status logstash -l

# 检查logstash默认监听端口9600
netstat -tnlp|grep -aiE 9600

# 过滤查看java/logstash进程
ps -ef|grep -aiE java

# 实时查看系统日志源文件
tail -fn 20 /usr/local/logstash/logs/logstash-plain.log

# 人为生成一条系统日志,测试收集是否生效
service sshd restart

#Logstash 监听端口:5044 正常监听
ss -tnlp | grep 5044

四、浏览器验证

部署完成浏览器访问

ES:http://192.168.63.208:9200

Kibana:http://192.168.63.209:5601
1、添加数据

2、点击Overview

3、添加数据

4、添加索引

5、当前定义的索引信息,6、搜索所有索引信息,7、下一步

8、配置时间信息,9、创建索引模式

创建完成

进入 Discover查看

11、查看所有日志,12、更新日志

搜索框输入Failed,查看结果 → 定位问题

相关推荐
Z文的博客4 小时前
嵌入式LINUX QT 开发 .gitignore 文件编写指南
linux·git·qt·elasticsearch·嵌入式
青龙小码农5 小时前
milvus+elasticsearch+ollama实现企业级RAG搭建
elasticsearch·milvus·ollama·rga
恼书:-(空寄18 小时前
ES性能调优实战指南
elasticsearch
Elastic 中国社区官方博客19 小时前
Elasticsearch:智能搜索 - AI builder 及 skills
大数据·人工智能·elasticsearch·搜索引擎·ai·信息可视化·全文检索
Elasticsearch1 天前
向量预处理:让 Elasticsearch VectorDB 更好地为每个向量实现二进制量化工作
elasticsearch
Young soul21 天前
docker-compose安装elasticsearch、kibana、logstash以及ik分词器
elasticsearch·docker·jenkins
Elastic 中国社区官方博客1 天前
Elasticsearch:智能搜索 - AI builder,workflow 及 skills
大数据·数据库·人工智能·elasticsearch·搜索引擎·ai·全文检索
Young soul21 天前
Elasticsearch(v8.5) 常用操作大全
大数据·elasticsearch·jenkins
海兰1 天前
Elastic 基于 Agentic 架构与 MCP 的 Kubernetes 智能可观测性深度解析
elasticsearch·容器·架构·kubernetes