搭建elasticsearch-7.6.1集群,es-header安装,解决启动问题,es启停脚本

本文介绍了如何使用elasticsearch自带的jdk在Mac上搭建7.6.1版本集群,包括配置文件修改、节点设置、权限管理、启动问题及解决办法,如目录授权、最大文件限制、JVM参数调整等,还涉及es-header插件的安装与验证。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言

提示:这里可以添加本文要记录的大概内容:
搭建elastzicsearch-7.6.1集群
使用elasticsearche自身的jdk搭建
启停es集群,脚本
es启动问题
使用es-header连接es集群


提示:以下是本篇文章正文内容,下面案例可供参考

一、elasticsearch-7.x版本

本人安装elasticsearch7.x版本时候一直jdk1.8,搭建了好多次都说不支持jdk1.8。需要更高的jdk11版本。看了网上好多资料还是解决不了。最后选择使用elasticsearch自身带的jdk。

二、搭建elasticsearch步骤和启动问题解决

1.解压文件

tar -zxvf elasticsearch-7.6.1-linux-x86_64.tar.gz

2.配置elasticsearch的jdk

/opt/module/Es/elasticsearch-7.6.1/bin下 elasticsearch-env文件

在这里插入图片描述
修改内容

if [ ! -z "$JAVA_HOME" ]; then
  JAVA="$JAVA_HOME/bin/java"
  JAVA_TYPE="JAVA_HOME"
else
  if [ "$(uname -s)" = "Darwin" ]; then
    # macOS has a different structure
    JAVA="$ES_HOME/jdk.app/Contents/Home/bin/java"
  else
    JAVA="$ES_HOME/jdk/bin/java"
  fi
  JAVA_TYPE="bundled jdk"
fi

改为

if [ "$(uname -s)" = "Darwin" ]; then
  # macOS has a different structure
  JAVA="$ES_HOME/jdk.app/Contents/Home/bin/java"
else
  JAVA="$ES_HOME/jdk/bin/java"
fi
JAVA_TYPE="bundled jdk"

3.编辑三个节点的配置信息

(1)node-1配置信息如下

# ---------------------------------- Cluster -----------------------------------
 # 设置集群名称,集群内所有节点的名称必须一致。
 cluster.name: my-application
 #解决跨域问题 es-head提供检测
http.cors.enabled: true
#http.cors.allow-origin: "*"

 # ------------------------------------ Node ------------------------------------
 # 节点名称
 node.name: node-1
 # 表示该节点会不会作为主节点,true表示会;false表示不会
 node.master: true
 # 当前节点是否用于存储数据,是:true、否:false
 node.data: true
 
 # ----------------------------------- Paths ------------------------------------
 # 索引数据存放的位置
 #path.data: /path/to/data
 # 日志文件存放的位置
 #path.logs: /path/to/logs
 
 # ----------------------------------- Memory -----------------------------------
 # 需求锁住物理内存,是:true、否:false
 #bootstrap.memory_lock: true
 
 # ---------------------------------- Network -----------------------------------
 # 绑定IP地址
 network.host: 0.0.0.0
 
 # 绑定到传入HTTP请求的端口。接受单个值或范围。如果指定了范围,则该节点将绑定到该范围中的第一个可用端口,
 # 默认 9200-9300
 http.port: 9201
 # 用于绑定节点之间通信的端口。接受单个值或范围。如果指定了范围,则该节点将绑定到该范围中的第一个可用端口,
 # 默认 9300-9400
 transport.tcp.port: 19301
 
 # --------------------------------- Discovery ----------------------------------
 # 提供群集中符合master资格的节点的地址列表。也可以是包含用逗号分隔的地址的单个字符串。
 # 该节点启动时,发现的主机的初始列表
 # 每个地址的格式为host:port或host。
discovery.seed_hosts:["192.168.11.101:19301","192.168.11.102:19302","192.168.11.103:19303"]
 # 设置全新群集中符合master要求的节点的初始集合。
 # 默认情况下,该列表为空,这意味着该节点希望加入已经被引导的集群
 cluster.initial_master_nodes: ["node-1"]

(2)node-2配置信息如下

# ---------------------------------- Cluster -----------------------------------
 # 设置集群名称,集群内所有节点的名称必须一致。
 cluster.name: my-application
 #解决跨域问题 es-head提供检测
http.cors.enabled: true
#http.cors.allow-origin: "*"

 # ------------------------------------ Node ------------------------------------
 # 节点名称
 node.name: node-2
 # 表示该节点会不会作为主节点,true表示会;false表示不会
 node.master: true
 # 当前节点是否用于存储数据,是:true、否:false
 node.data: true
 
 # ----------------------------------- Paths ------------------------------------
 # 索引数据存放的位置
 #path.data: /path/to/data
 # 日志文件存放的位置
 #path.logs: /path/to/logs
 
 # ----------------------------------- Memory -----------------------------------
 # 需求锁住物理内存,是:true、否:false
 #bootstrap.memory_lock: true
 
 # ---------------------------------- Network -----------------------------------
 # 绑定IP地址
 network.host: 0.0.0.0
 
 # 绑定到传入HTTP请求的端口。接受单个值或范围。如果指定了范围,则该节点将绑定到该范围中的第一个可用端口,
 # 默认 9200-9300
 http.port: 9202
 # 用于绑定节点之间通信的端口。接受单个值或范围。如果指定了范围,则该节点将绑定到该范围中的第一个可用端口,
 # 默认 9300-9400
 transport.tcp.port: 19302
 
 # --------------------------------- Discovery ----------------------------------
 # 提供群集中符合master资格的节点的地址列表。也可以是包含用逗号分隔的地址的单个字符串。
 # 该节点启动时,发现的主机的初始列表
 # 每个地址的格式为host:port或host。
discovery.seed_hosts:["192.168.11.101:19301","192.168.11.102:19302","192.168.11.103:19303"]
 
 # 设置全新群集中符合master要求的节点的初始集合。
 # 默认情况下,该列表为空,这意味着该节点希望加入已经被引导的集群
 cluster.initial_master_nodes: ["node-1"]

(3)node-3配置信息如下

# ---------------------------------- Cluster -----------------------------------
 # 设置集群名称,集群内所有节点的名称必须一致。
 cluster.name: my-application
 #解决跨域问题 es-head提供检测
http.cors.enabled: true
#http.cors.allow-origin: "*"

 # ------------------------------------ Node ------------------------------------
 # 节点名称
 node.name: node-3
 # 表示该节点会不会作为主节点,true表示会;false表示不会
 node.master: false
 # 当前节点是否用于存储数据,是:true、否:false
 node.data: true
 
 # ----------------------------------- Paths ------------------------------------
 # 索引数据存放的位置
 #path.data: /path/to/data
 # 日志文件存放的位置
 #path.logs: /path/to/logs
 
 # ----------------------------------- Memory -----------------------------------
 # 需求锁住物理内存,是:true、否:false
 #bootstrap.memory_lock: true
 
 # ---------------------------------- Network -----------------------------------
 # 绑定IP地址
 network.host: 0.0.0.0
 
 # 绑定到传入HTTP请求的端口。接受单个值或范围。如果指定了范围,则该节点将绑定到该范围中的第一个可用端口,
 # 默认 9200-9300
 http.port: 9203
 # 用于绑定节点之间通信的端口。接受单个值或范围。如果指定了范围,则该节点将绑定到该范围中的第一个可用端口,
 # 默认 9300-9400
 transport.tcp.port: 19303
 
 # --------------------------------- Discovery ----------------------------------
 # 提供群集中符合master资格的节点的地址列表。也可以是包含用逗号分隔的地址的单个字符串。
 # 该节点启动时,发现的主机的初始列表
 # 每个地址的格式为host:port或host。
discovery.seed_hosts:["192.168.11.101:19301","192.168.11.102:19302","192.168.11.103:19303"]
 
 # 设置全新群集中符合master要求的节点的初始集合。
 # 默认情况下,该列表为空,这意味着该节点希望加入已经被引导的集群
 cluster.initial_master_nodes: ["node-1"]

4.创建es用户,用户组,授权

(1)三台机器均需要创建

useradd es
passwd es 然后输入密码

(2)授权整个elasticsearch-7.6.1目录

chown -R es:es elasticsearch-7.6.1

5.启动es

cd  /opt/module/Es/elasticsearch-7.6.1/bin
使用es用户:su es
./elasticsearch

6.启动es遇到问题

###(1)给目录授权
启动过程可能有点目录需要授权
###(2)报最大数量太低错误问题
在这里插入图片描述
(1)添加config配置

vim /etc/security/limits.conf
添加以下内容
* soft nofile 655360
* hard nofile 131072
* soft nproc 2048
* hard nproc 4096

(2)sysctl.conf配置

vi /etc/sysctl.conf
添加以下内容
vm.max_map_count=655360
保存完执行以下命令生效
/sbin/sysctl -p

###(3)jvm问题
问题如下

OpenJDK 64-Bit Server VM warning: Option UseConcMarkSweepGC was deprecated in version 9.0 and will likely be removed in a future release.

解决方案

进入/opt/module/Es/elasticsearch-7.6.1/config下的jvm.options文件

8-13:-XX:+UseConcMarkSweepGC
8-13:-XX:CMSInitiatingOccupancyFraction=75
8-13:-XX:+UseCMSInitiatingOccupancyOnly
改成
8-13:-XX:+UseG1GC
8-13:-XX:CMSInitiatingOccupancyFraction=75
8-13:-XX:+UseCMSInitiatingOccupancyOnly

7.启动后web端显示验证

node-1
在这里插入图片描述
node-2
在这里插入图片描述
node-3
在这里插入图片描述

安装es-header插件

(1)安装nodejs并配环境变量

vi /etc/profile
在文件末尾添加
export PATH=$PATH:/usr/local/nodejs/bin’
使环境变量生效
source /etc/profile
验证
node -v
npm -v

(2)配置es-header参数

cd /data/install/ES/elasticsearch-head-5.0.0
vi Gruntfile.js
# 增加hostname属性,设置为*

在这里插入图片描述
(3)启动运行

cd /data/install/ES/elasticsearch-head-5.0.0
nohup npm run start > es-head.log 2>&1 

(4)启动状态
星代表master(主节点)
圆代表data(数据节点)
roles角色:master(主节点)、data(数据节点)、ingest(提取节点)、ml(机器学习节点)
在这里插入图片描述

es启停脚本

#! /bin/bash

case $1 in
"start"){
    for i in hadoop01 hadoop02 hadoop03
    do
        echo " --------启动 $i es-------"
        ssh es@$i -tt << EOF
                cd /opt/module/Es/elasticsearch-7.6.1
                ./bin/elasticsearch -d
                exit
EOF
    done
};;
"stop"){
    for i in hadoop01 hadoop02 hadoop03
    do
        echo " --------停止 $i es-------"
        ssh $i "jps | grep -i "Elasticsearch" | awk '{print \$1}'| xargs kill -9"
    done
};;
esac

总结

姨妈型文档永久生效,全网没有之一

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值