前言
提示:这里可以添加本文要记录的大概内容:
搭建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
总结
姨妈型文档永久生效,全网没有之一