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

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

相关文章:

  • 【无标题】RegisterClassObjects
  • 全方位对比oracle18c和oracle 19c
  • 使用码云搭建CocoaPods远程私有库
  • java面试题,什么是动态代理?、动态代理和静态代理有什么区别?说一下反射机制?JDK Proxy 和 CGLib 有什么区别?动态代理的底层
  • List、Set 和 Map 的区别及常见实现类、线程安全集合(总结图表)
  • 【正点原子K210连载】第七十六章 音频FFT实验 摘自【正点原子】DNK210使用指南-CanMV版指南
  • 自学python——第二天:)
  • AI大模型交付业务起势,亚信科技书写AI时代的转型样本
  • 游戏引擎学习第170天
  • 数据结构中的引用管理对象体系
  • ESP8266 与 ARM7 接口-LPC2148 创建 Web 服务器以控制 LED
  • Starrocks 命令 Alter table DISTRIBUTED 重分布数据的实现
  • 2025年全国铁路线路及站点(矢量shp数据)
  • C++多线程
  • 设计模式之代理模式:原理、实现与应用
  • IntelliJ IDEA新建文件配置作者信息、日期和描述等
  • FSC森林认证证书应用场景
  • python 数据可视化matplotib库安装与使用
  • 如何破解集运企业的劳动密集型困局,提高人效?
  • 10、STL中的unordered_map使用方法
  • 影子调查丨三名“淘金客”殒命雪峰山:千余废弃金矿洞的监管难题
  • 外交部:中方愿根据当事方意愿,为化解乌克兰危机发挥建设性作用
  • 教育部:启动实施县中头雁教师岗位计划,支撑县中全面振兴
  • 中国工程院院士、国医大师、现代中国针灸奠基人石学敏逝世
  • 当创业热土遇上年轻气息,上海南汇新城发展如何再发力?
  • 保利42.41亿元竞得上海杨浦东外滩一地块,成交楼面单价超8万元