安装elasticsearch遇到的各种问题

安装elasticsearch遇到的各种问题

以下是我安装elasticsearch遇到的问题一个列表

  1. future versions of Elasticsearch will require Java 11; your Java version from [/root/training/jdk1.8.0_181/jre] does not meet this requirement

  2. java.lang.RuntimeException: can not run elasticsearch as root

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

  4. 本地物理机不能用IP访问elasticsearch但是可以使用127.0.0.1:9200可以访问

  5. 外部物理机访问不了elasticsearch

  6. 修改是外部访问elasticsearch的参数network-host后,报错:
    [2020-10-28T09:58:03,528][INFO ][o.e.b.BootstrapChecks ] [bigdata111] bound or publishing to a non-loopback address, enforcing bootstrap checks
    ERROR: [3] bootstrap checks failed
    [1]: max file descriptors [4096] for elasticsearch process is too low, increase to at least [65535]
    [2]: max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]

  7. 解决完以上的配置之后又报:[3]: the default discovery settings are unsuitable for production use; at least one of [discovery.seed_hosts, discovery.seed_providers, c
    luster.initial_master_nodes] must be configured

以下是我再Linux下安装elasticsearch步骤和发现到上边的问题的总结和解决办法

在Elasticsearch Service上创建部署时,将自动设置一个主节点和两个数据节点。通过从tar存档安装,您可以在本地启动Elasticsearch的多个实例,以查看多节点集群的行为。
这里首先使用root用户操作的,而且我再root的目录下创建了俩个目录,分别是tools和training,
tools是用来放置各种安装包的,training是防止各种解压文件的

  1. 下载elasticsearch
curl -L -O https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.6.2-linux-x86_64.tar.gz
  1. 解压elasticsearch
tar -zxvf https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.6.2-linux-x86_64.tar.gz -C ../training/
  1. 解压完进入bin目录启动以下elasticsearch

      ./elasticsearch
    

    在执行完这句话的时候我们就碰到了第一个问题:future versions of Elasticsearch will require Java 11; your Java version from [/root/training/jdk1.8.0_181/jre] does not meet this requirement
    单然下边还有好多日志,我们一个一个的解决。这个报错的意思机库是这个版本的elastic search需要的是java11,而你的jdk版本是1.8的,和我们当前需要的版本不匹配。
    这个是因为我在Linux是安装了jdk1.8的,而我们下载的这个elastic search需要的jdk是11的,我们其实不需要单独的下载一个jdk11,因为在elasticsearch中已经有一个jdk了。如下图所示:
    在这里插入图片描述
    因为我们在Linux配置了JAVA_HOME所以默认的elasticsearch就只是使用了我们1.8的jdk,我们只需让elasticsearch访问它自带的jdk就可以了,我们需要修改命令脚本

[root@centos7 bin]# vi elasticsearch
添加以下几行内容
#配置自己的jdk11
export JAVA_HOME=/root/elasticsearch-7.6.2/
export PATH=$JAVA_HOME/bin:$PATH

#添加jdk判断
if [ -x "$JAVA_HOME/bin/java" ]; then
        JAVA="/root/elasticsearch-7.6.2/jdk/bin/java"
else
        JAVA=`which java`
fi

这里有一点问题需要注意:
第一个问题就是这段代码必须放在脚本的最开始的位置
第二个问题就是其实在一开始解压elasticsearch的位置我就弄的不合理了,所以这里的路径虽然是填对了,但是后续会有问题的,我们在介绍后续的问题的时候再说明一次这个问题。这里就不讲了,将错就错了。
6. 修改了上一个问题后我们继续执行./elasticsearch的命令,报错如下:
java.lang.RuntimeException: can not run elasticsearch as root
这个报错提示不让以root用户来启动elasticsearch,以前记得可以从一个配置文件里修改允许root用户的,但是忘了不知道在哪儿改了,所以现在我们创建其他的用户再执行启动命令启动elasticsearch,创建用户如下:

# 以root用户来创建新的用户 , groupadd 添加一个用户组
[root@localhost home]# groupadd elasticsearch 
# 添加一个用户,-g是在用户组下 -p是密码
[root@localhost home]# useradd elasticsearch -g elasticsearch -p elasticsearch
# 进入es的安装目录
[root@localhost home]# cd /home/elasticsearch 
# 给用户elasticsearch 授权
[root@localhost home]# chown -R elasticsearch:elasticsearch elasticsearch-7.6.2/
# 切换到 elasticsearch 用户
[root@localhost elasticsearch]# su elasticsearch

然后我们再执行./elasticsearch 启动,发现依然报错,说/root/elasticsearch-7.6.2/jdk/bin/java找不到,
这个是因为我们切换了用户elasticsearch后没有权限访问root目录,所以找不到jdk。所以我们需要把elasticsearch-7.6.2移动到其他的位置,我移动到了opt的目录下,并修改了启动脚本中的jdk的路径,然后重新设置以下elasticsearch用户的访问权限。然后再执行./elasticsearch命令,启动的时候稍微有些错误但是不影响启动。这些错误就是建议你扩展以下虚拟内存啥的。
7. 然后把防火墙关掉,不然外边物理主机访问的时候会被elastic search访问的主机把端口给墙掉
然后我们从外边的浏览器访问,发现根本访问不了,然后我们使用curl在本机访问elasticsearch只有127.0.0.1:9200能正常访问,但是使用IP:9200就不能正常访问了。这个是因为我们配置文件中默认只允许127.0.0.1访问,我需要修改config下的elasticsearch.yml中的参数
在这里插入图片描述

如果只修改第一个参数会报一些其他的错误,如下 :

[2020-10-28T10:32:06,340][INFO ][o.e.b.BootstrapChecks    ] [bigdata111] bound or publishing to a non-loopback address, enforcing bootstrap checks
ERROR: [1] bootstrap checks failed
ERROR: bootstrap checks failed
max file descriptors [4096] for elasticsearch process is too low, increase to at least [65536]
max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]
[1]: the default discovery settings are unsuitable for production use; at least one of [discovery.seed_hosts, discovery.seed_providers, cluster.initial_master_nodes] must be configured

这些提示说一些什么最大数量太低,需要至少增加到多少的一个提示。还有一个说是至少设置discovery.seed_hosts, discovery.seed_providers, cluster.initial_master_nodes参数中的一个参数
然后我们修改以下就可以了

添加config配置:
vim /etc/security/limits.conf
* soft nofile 65536
* hard nofile 65536
* soft nproc 2048
* hard nproc 2048
* soft memlock unlimited
* hard memlock unlimited

这个需改完了需要切换用户生效,这个不着急切换用户,先用root用户修改

vi /etc/sysctl.conf
vm.max_map_count=262144
修改后执行如下命令 sysctl -p

以上我也看了以下其他人的参考,我把一个比较全的地址贴在这里,我不是完全按照它来做的:
链接: link.
然后我们在elasticsearch.yml的在这里插入图片描述
配置以下后启动elasticsearch就可以正常访问了。

然后我们再下载一个windows的kibana管理交互工具和elasticsearch进行交互,需要注意的是kibana的版本一定要和elasticsearch的版本一致
https://artifacts.elastic.co/downloads/kibana/kibana-7.6.2-windows-x86_64.zip
下载这个就可以了,下载完成后解压,修改配置文件连接elasticsearch配置文件
启动就可以了。

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

枣泥馅

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值