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

发布于:2025-03-20 ⋅ 阅读:(14) ⋅ 点赞:(0)

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 ]; 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

网站公告

今日签到

点亮在社区的每一天
去签到