> 技术文档 > ElasticSearch 7.x 集群 + Kibana 部署完全指南(5节点)_kibana配置es集群

ElasticSearch 7.x 集群 + Kibana 部署完全指南(5节点)_kibana配置es集群


ElasticSearch 7.x 集群 + Kibana 部署完全指南(5节点


一、基础环境准备

1. 系统要求

  • CentOS 7+/Ubuntu 18.04+
  • JDK 11+(Elasticsearch 7自带JDK)
  • 内存:建议每个节点≥8GB
  • 磁盘:≥50GB(根据数据量调整)

2. 用户与权限配置

# 创建专用用户useradd es# 创建数据/日志目录mkdir -p /app/eschown es:es /app/es# 设置密码passwd es# 切换用户su - es

二、Elasticsearch 集群部署

1. 软件包部署

# 下载地址(需提前上传)# 百度网盘: https://pan.baidu.com/s/1IFtK2ogPAWkQBK_FZlbz3A 提取码: 9gkf# 上传到/app/es目录# 解压安装cd /app/estar -zxvf elasticsearch-7.17.23-linux-x86_64.tar.gz

2. 关键配置文件

(1) jvm.options(内存配置)
# 建议设置为物理内存的50%,不超过32GB-Xms4g-Xmx4g

ElasticSearch 7.x 集群 + Kibana 部署完全指南(5节点)_kibana配置es集群

(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\"]#开启跨域访问支持,默认为falsehttp.cors.enabled: true##跨域访问允许的域名, 允许所有域名http.cors.allow-origin: \"*\"# 单机启动es实例的个数node.max_local_storage_nodes: 5xpack.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 ]; then echo \"Elasticsearch started successfully.\"else echo \"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 ]; then echo \"Elasticsearch process $PROCESS stopped successfully.\" else echo \"Failed to stop Elasticsearch process $PROCESS.\" fi doneelse echo \"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.confvm.max_map_count=655360重新加载配置sudo sysctl -p

四、集群验证与管理

其余4个节点依次按照这个进行配置

1. 健康状态检查

curl -XGET \'http://20.26.223.119:9200/_cat/health?v&pretty\'

ElasticSearch 7.x 集群 + Kibana 部署完全指南(5节点)_kibana配置es集群

2. 节点状态查看

ElasticSearch 7.x 集群 + Kibana 部署完全指南(5节点)_kibana配置es集群

五、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/bashKIBANA_HOME=/app/es/kibana-7.17.23-linux-x86_64case $1 in start) nohup $KIBANA_HOME/bin/kibana >> $KIBANA_HOME/logs/kibana.log 2>&1 & echo \"kibana start\" ;; stop) # 这里主要是通过网络端口5601寻找kibana进程的pid kibana_pid_str=`netstat -tlnp |grep 5601 | awk \'{print $7}\'` kibana_pid=`echo ${kibana_pid_str%%/*}` kill -9 $kibana_pid echo \"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_pid echo \"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; then echo \"kibana is stopped\" else pid=`echo ${kibana_pid_str%%/*}` echo \"kibana is started,pid:\"${pid} fi ;;*) echo \"start|stop|restart|status\" ;;esac