Es搭建——单节点——Linux

Es搭建------单节点------Linux

一、安装

下载安装包:

官网下载地址:https://www.elastic.co/downloads/elasticsearch

上传包到linux 切换到安装目录下

解压:tar -zxvf elasticsearch-7.17.1-linux-x86_64.tar.gz

重命名安装文件夹 mv elasticsearch-7.17.1 es
cd xxxx(es安装目录)/es
二、配置文件修改

注意:冒号后面有个空格,否则会导致配置文件格式错误,启动时报错

1、elasticsearch.yml

powershell 复制代码
cd  config
vi  elasticsearch.yml

集群相关设置

powershell 复制代码
-------------------------------Cluster-------------------------------
cluster.name: 设置你的集群名称(例es-test)

节点相关设置

powershell 复制代码
-------------------------------Node----------------------------------
node.name: 设置你的节点名称(例estest-node-1)

网络相关设置

powershell 复制代码
-------------------------------Network----------------------------------
network.host: 部署该节点的服务器IP
http.port: 9200 (es服务对外的端口,默认即可) (设置0.0.0.0时,允许任何ip访问)

集群发现相关设置

powershell 复制代码
-------------------------------Discovery----------------------------------
#初始主节点列表,集群自动发现选举master
cluster.initial_master_nodes: Node中设置的该节点名称(例estest-node-1)

三:启动ES

1、测试启动服务

powershell 复制代码
cd  xxxx(es安装目录)/es/bin
./elasticsearch

2、后台启动

powershell 复制代码
./elasticsearch -d

四:依次解决报错
1、es本身自带的jdk版本与服务器所安装jdk版本冲突

java 复制代码
warning: usage of JAVA_HOME is deprecated, use ES_JAVA_HOME
Future versions of Elasticsearch will require Java 11; your Java version from [xxxxx/jdk1.8.0/jre] does not meet this requirement. Consider switching to a distribution of Elasticsearch with a bundled JDK. If you are already using a distribution with a bundled JDK, ensure the JAVA_HOME environment variable is not set.

报错原因:

elasticsearch默认启动时

先找系统安装的jdk,若未安装jdk则使用es自带的jdk,系统无需再安装jdk

若系统已安装jkd且与es所需jdk版本不一致,则es启动报错jdk版本问题

见es/bin 中的elasticsearch-env 的jdk判断代码

报错信息和echo输出内容符合,说明走的是:"elif [ ! -z "$JAVA_HOME" ]; then"分支

powershell 复制代码
# now set the path to java
if [ ! -z "$ES_JAVA_HOME" ]; then
  JAVA="$ES_JAVA_HOME/bin/java"
  JAVA_TYPE="ES_JAVA_HOME"
elif [ ! -z "$JAVA_HOME" ]; then
  # fallback to JAVA_HOME
  echo "warning: usage of JAVA_HOME is deprecated, use ES_JAVA_HOME" >&2
  JAVA="$JAVA_HOME/bin/java"
  JAVA_TYPE="JAVA_HOME"
else
  # use the bundled JDK (default)
  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

即:【补流程图】

解决方案:

系统不重新安装es所需jdk版本时,使用es内置jdk
方法a、配置 ES_JAVA_HOME路径

因为没有识别到ES_JAVA_HOME,故需配置ES_JAVA_HOME

powershell 复制代码
#编辑配置文件
vi ~/.bashrc
#在末尾添加以下内容
export ES_JAVA_HOME=xxxx(es安装目录)/es/jdk
#使命令生效
source ~/.bashrc
#检查配置是否成功
echo $ES_JAVA_HOME

方法b、修改配置 指定系统的JAVA_HOME为es的jdk路径

powershell 复制代码
cd   xxxx(es安装目录)/es/bin
vi ./elasticsearch       【此处需再确认---方法是否正确】
powershell 复制代码
#添加以下配置
# 将jdk修改为es中自带jdk的配置目录
export JAVA_HOME=xxxx(es安装目录)/es/jdk
export PATH=$JAVA_HOME/bin:$PATH

if [ -x "$JAVA_HOME/bin/java" ]; then
        JAVA="xxxx(es安装目录)/es/jdk/bin/java"
else
        JAVA=`which java`
fi

方法c、删除系统jdk的判断,直接启用Es自带的java

powershell 复制代码
cd  xxxx(es安装目录)/es/bin
vi  elasticsearch-env   【此处需再确认---方法是否正确,修改判断后,仍然没有ES_HOME,试下会成功吗】
java 复制代码
# now set the path to java
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"

方法d、将启动时系统jdk路径指定为es自带的jdk

powershell 复制代码
cd  xxxx(es安装目录)/es/bin
vi  elasticsearch-env 

首行代码set -e -o pipefail下

添加JAVA_HOME指向es自带jdk的位置:export JAVA_HOME =xxxx(es安装目录)/es/jdk。

powershell 复制代码
set -e -o pipefail
#添加下行配置:使用es自带的jdk
export JAVA_HOME =xxxx(es安装目录)/es/jdk

参考:
https://blog.csdn.net/smilehappiness/article/details/118466378
https://www.cnblogs.com/zhuhuibiao/p/16446105.html
2、root用户启动es失败

powershell 复制代码
java.lang.RuntimeException: can not run elasticsearch as root

报错原因

es因为安全问题拒绝使用root用户启动
解决方案:

添加系统用户用来启动es

powershell 复制代码
groupadd es 
useradd es -g es -p password # -g 指定组 -p 密码
chown es:es -R xxxx(es安装目录)/es/ # -R 处理指定目录以及其子目录下的所有文件
#切换到es用户
su es
#启动es
./elasticsearch

参考:
https://blog.csdn.net/fwdwqdwq/article/details/124241935
3、max virtual memory areas vm.max_map_count [65530] is too low

powershell 复制代码
ERROR: [1] bootstrap checks failed. You must address the points described in the following [1] lines before starting Elasticsearch.
bootstrap check failure [1] of [1]: max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]

报错原因:

Elasticsearch在启动时会检查操作系统的配置,若vm.max_map_count的值太低,就会报错。

vm.max_map_count是Linux系统中一个内核参数,它限制了每个进程可以拥有的内存区域(memory areas)数量。Elasticsearch可能需要比默认更多的内存区域,如果这个值太低,Elasticsearch就会报错。

注:262144是一个常用的值,可根据需求调整,评估可能对系统稳定性造成的影响
解决方案:

永久修改该配置

powershell 复制代码
#切换至root用户
su root
#编辑/etc/sysctl.conf文件
vi /etc/sysctl.conf
#添加配置
vm.max_map_count=262144
#保存退出后
#刷新配置文件使改动立即生效
sudo sysctl -p

参考:
https://blog.csdn.net/jane_xing/article/details/139790289

powershell 复制代码
#继续切换es用户,重新启动es
su es
cd  xxxx(es安装目录)/es/bin
./elasticsearch

4、其他问题待更新

基本解决思路:先使用 ./elasticsearch 方式启动,找到日志的error关键字,百度相关报错信息

五、判断是否启动成功

方法1、检查es进程

powershell 复制代码
ps -ef|grep elasticsearch

方法2、访问url

http://部署该节点的服务器IP:9200/

六、设置es的用户名密码

编辑elasticsearch.yml配置文件

powershell 复制代码
vi xxxx(es安装目录)/es/config/elasticsearch.yml
#在末尾添加下面两行
xpack.security.enabled: true
xpack.security.transport.ssl.enabled: true
#保存退出后,重启es(重启后配置才生效)

设置用户名密码

powershell 复制代码
cd  xxxx(es安装目录)/es/bin
elasticsearch-setup-passwords interactive
#依次设置elastic、kibana、logstash等的访问密码

再次url再次访问验证是否生效,出现弹窗则生效

参考:
https://blog.csdn.net/smilehappiness/article/details/118466378
七、单节点关闭es

1、若后台启动,找到对应进程号,直接杀进程即可

powershell 复制代码
ps -ef|grep elasticsearch
kill -9 进程号

2、若控制台启动,直接ctrl+c

相关推荐
xserver219 分钟前
hadoop搭建
大数据·linux·hadoop
小刘鸭!8 小时前
Flink中并行度和slot的关系——任务和任务槽
大数据·flink
LI JS@你猜啊9 小时前
Elasticsearch 集群
大数据·服务器·elasticsearch
筒栗子9 小时前
复习打卡大数据篇——Hadoop HDFS 03
大数据·hadoop·hdfs
SelectDB12 小时前
Apache Doris 创始人:何为“现代化”的数据仓库?
大数据·数据库·云原生
SelectDB12 小时前
飞轮科技荣获中国电信星海大数据最佳合作伙伴奖!
大数据·数据库·数据分析
小刘鸭!13 小时前
Hbase的特点、特性
大数据·数据库·hbase
神奇侠202413 小时前
解决集群Elasticsearch 未授权访问漏洞
elasticsearch
Elastic 中国社区官方博客13 小时前
如何通过 Kafka 将数据导入 Elasticsearch
大数据·数据库·分布式·elasticsearch·搜索引擎·kafka·全文检索
神奇侠202413 小时前
解决单台Elasticsearch 未授权访问漏洞
elasticsearch