当前位置: 首页 > article >正文

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

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. 多节点配置差异

节点配置差异项示例值
node1node.namenode1
network.host20.26.223.119
node2node.namenode2
network.host20.26.223.120
node3node.namenode3
network.host20.26.223.121
node4node.namenode4
network.host20.26.223.122
node5node.namenode5
network.host20.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
  done
else
  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  65534

vim /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 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

http://www.kler.cn/a/593430.html

相关文章:

  • 多模态系列——调研可在笔记本电脑端部署的多模态大模型
  • 杂谈:前端 UI 框架和 UI 组件库的区别
  • 【已解决】Error: listen EACCES: permission denied 0.0.0.0:8082 端口占用+没有进程
  • 基于Python+MySql实现(Web)校园学习助手网站
  • Feign请求发生中文乱码
  • 您对下列文件的本地修改将被合并操作覆盖XXXXX请 在 合 并前 提 交 或贮 藏 您 的 修 改
  • 赛逸展2025创新模式,以科技创新奖赋能展位战略价值
  • 全流程数字化管理的智慧物流开源了。
  • (十六) 60s搞懂 : Zookeeper 的详细安装,使用及注意事项
  • navicat忘记已经连接过的数据库密码的操作步骤
  • MySQL事务详解:从理论到实践,保障数据一致性
  • RocketMQ分布式场景篇
  • 机器学习中说的正向传递和反向传递是什么意思
  • MATLAB中fieldnames函数用法
  • 苍穹外卖-Spring Task使用的前置条件
  • Oracle 公布 Java 的五大新功能
  • Qt msvc程序运行
  • 在 MySQL 中,只写 JOIN 等价于?
  • 3.19刷题
  • vue3自定义修饰符