ElasticSearch 7.x 集群 + Kibana 部署完全指南(5节点)
一、基础环境准备
1. 系统要求
- CentOS 7+/Ubuntu 18.04+
- JDK 11+(Elasticsearch 7自带JDK)
- 内存:建议每个节点≥8GB
- 磁盘:≥50GB(根据数据量调整)
2. 用户与权限配置
# 创建专用用户
useradd es# 创建数据/日志目录
mkdir -p /app/es
chown es:es /app/es# 设置密码
passwd es# 切换用户
su - es
二、Elasticsearch 集群部署
1. 软件包部署
# 下载地址(需提前上传)
# 百度网盘: https://pan.baidu.com/s/1IFtK2ogPAWkQBK_FZlbz3A 提取码: 9gkf
# 上传到/app/es目录
# 解压安装
cd /app/es
tar -zxvf elasticsearch-7.17.23-linux-x86_64.tar.gz
2. 关键配置文件
(1) jvm.options(内存配置)
# 建议设置为物理内存的50%,不超过32GB
-Xms4g
-Xmx4g
(2) elasticsearch.yml(集群配置)
#集群名称
cluster.name: es-cluster
#节点名称
node.name: node1
# 绑定IP地址
network.host: 20.26.223.119
# 数据目录
path.data: /app/es/elasticsearch-7.17.23/data
# 日志目录
path.logs: /app/es/elasticsearch-7.17.23/logs
# 指定服务访问端口
http.port: 9200
# 指定API端户端调用端口
transport.tcp.port: 9300
#集群通讯地址
discovery.seed_hosts: ["20.26.223.119:9300", "20.26.223.120:9300","20.26.223.121:9300","20.26.223.122:9300","20.26.223.123:9300"]
#集群初始化能够参选的节点信息
cluster.initial_master_nodes: ["node1", "node2","node3","node4","node5"]
#开启跨域访问支持,默认为false
http.cors.enabled: true
##跨域访问允许的域名, 允许所有域名
http.cors.allow-origin: "*"
# 单机启动es实例的个数
node.max_local_storage_nodes: 5
xpack.security.enabled: false
3. 多节点配置差异
节点 | 配置差异项 | 示例值 |
---|---|---|
node1 | node.name | node1 |
network.host | 20.26.223.119 | |
node2 | node.name | node2 |
network.host | 20.26.223.120 | |
node3 | node.name | node3 |
network.host | 20.26.223.121 | |
node4 | node.name | node4 |
network.host | 20.26.223.122 | |
node5 | node.name | node5 |
network.host | 20.26.223.123 |
4. 启停管理脚本
▶️ 启动脚本 start_es.sh
#!/bin/bash# 定义脚本所在的目录
SCRIPT_DIR="$(dirname "$0")"# 切换到脚本所在的目录
cd "$SCRIPT_DIR"# 启动 Elasticsearch 服务
./bin/elasticsearch -d# 检查启动是否成功
if [ $? -eq 0 ]; thenecho "Elasticsearch started successfully."
elseecho "Failed to start Elasticsearch."
fi
⏹️ 停止脚本 stop_es.sh
#!/bin/bash# 定义脚本所在的目录
SCRIPT_DIR="$(dirname "$0")"# 切换到脚本所在的目录
cd "$SCRIPT_DIR"# 查找 Elasticsearch 进程
ELASTICSEARCH_PROCESSES=$(pgrep -f "elasticsearch")# 如果找到了 Elasticsearch 进程
if [ -n "$ELASTICSEARCH_PROCESSES" ]; then# 将进程 ID 分割成数组IFS=' ' read -r -a PROCESSES <<< "$ELASTICSEARCH_PROCESSES"# 遍历每个进程 ID 并终止for PROCESS in "${PROCESSES[@]}"; do# 终止 Elasticsearch 进程kill "$PROCESS"# 检查终止是否成功if [ $? -eq 0 ]; thenecho "Elasticsearch process $PROCESS stopped successfully."elseecho "Failed to stop Elasticsearch process $PROCESS."fidone
elseecho "No Elasticsearch processes found."
fi
使用说明
chmod +x *.sh
# 启动
./start_es.sh
# 停止
./stop_es.sh
三、系统配置(root执行)
1. 内核参数调整
vim /etc/security/limits.conf
# End of file
* hard core 0
* soft core 0
* hard nofile 102400
* soft nofile 102400
* soft nproc 65534
* hard nproc 65534vim /etc/sysctl.conf
vm.max_map_count=655360
重新加载配置
sudo sysctl -p
四、集群验证与管理
其余4个节点依次按照这个进行配置
1. 健康状态检查
curl -XGET 'http://20.26.223.119:9200/_cat/health?v&pretty'
2. 节点状态查看
五、Kibana 监控部署
1. Kibana 安装
链接: https://pan.baidu.com/s/1jLnZRYG7HUCjaH7869oqQQ 提取码: 1x7k
tar -zxvf kibana-7.17.23-linux-x86_64.tar.gz -C /app/es/
2. 配置文件 kibana.yml
server.host: "0.0.0.0"
elasticsearch.hosts: ["http://20.26.223.119:9200","http://20.26.223.120:9200","http://20.26.223.121:9200","http://20.26.223.122:9200","http://20.26.223.123:9200"]
i18n.locale: "zh-CN"
3. 服务管理脚本
kibana.sh
#!/bin/bash
KIBANA_HOME=/app/es/kibana-7.17.23-linux-x86_64
case $1 instart)nohup $KIBANA_HOME/bin/kibana >> $KIBANA_HOME/logs/kibana.log 2>&1 &echo "kibana start";;stop)# 这里主要是通过网络端口5601寻找kibana进程的pidkibana_pid_str=`netstat -tlnp |grep 5601 | awk '{print $7}'`kibana_pid=`echo ${kibana_pid_str%%/*}`kill -9 $kibana_pidecho "kibana stopped";;restart)kibana_pid_str=`netstat -tlnp |grep 5601 | awk '{print $7}'`kibana_pid=${kibana_pid_str%%/*}kibana_pid=`echo ${kibana_pid_str%%/*}`kill -9 $kibana_pidecho "kibana stopped"nohup $KIBANA_HOME/bin/kibana >>/dev/null 2>&1 &echo "kibana start";;status)kibana_pid_str=`netstat -tlnp |grep 5601 | awk '{print $7}'`if test -z $kibana_pid_str; thenecho "kibana is stopped"elsepid=`echo ${kibana_pid_str%%/*}`echo "kibana is started,pid:"${pid}fi;;
*)echo "start|stop|restart|status";;
esac