ES在Linux部署遇到的问题

在Centos Linux环境安装Elasticsearch,遇到的问题:

(1)检查依赖

Elasticsearch依赖于Java,所以Linux一定要有Java环境,

检查Linux Java环境,如下:

启动Elasticsearch,如下:

原因:我用的Elasticsearch是7.2版本,从报错信息看依赖需要jdk11的版本,所以我们必须要有jdk11的环境,但是系统已经有了jdk1.8的环境,那怎么办呢?不要着急,在Elasticsearch7以上版本就自带了jdk,我们只需要将Elasticsearch指向自带的jdk,怎么指?

进入Elasticsearch的bin目录,找到elasticsearch文件,用vi命名打开,请看:

打开文件后,我们只需要在其添加jdk的环境配置,添加位置如下图:

export JAVA_HOME=/opt/es/elasticsearch-7.2.0/jdk

export PATH=$JAVA_HOME/bin:$PATH

添加后,保存退出,OK,环境依赖配置完成,让我们再次启动,不好还有错误,是什么错误呢?让我一起来看:

从Caused by: java.lang.RuntimeException: can not run elasticsearch as root来看,我们知道原来Elasticsearch不能在root用户下运行,所以我们要单独建一个用户,以便运行Elasticsearch。怎么在Linux上建立用户呢?这个相信大家都会吧,那我么就创建一个es用户。执行命令:

useradd es   ###创建es用户

passwd es   ###创建es用户密码

visudo   ###给es用户分配权限,分配和root一样的权限

su es  ###在当前目录下切换至es用户

userdel es -r   ###彻底删除用户,此命令是告诉大家怎么删除用户,不用在此执行

好了用户创建完成,我们刚刚也切换到es用户下,让我继续启动,不好,又报出新的错误,真是解决一个又来一个,大家不要慌吗,我们认真看是什么错误:

看错误是禁止访问的异常,怎么回事呢?这是因为前面是以root账户解压的Elasticsearch,其中ower和group都属于root,所以后面需要修改下文件归属,怎么修改?如下:

执行命令:

sudo chown -R es /opt/es/elasticsearch-7.2.0

sudo chgrp -R es /opt/es/elasticsearch-7.2.0

执行完,再次启动,希望不要再有什么问题。

哦!起来了,我们在本地访问,试试 

正常返回,我再在远程Windows机器上访问一下

如法访问,怎么回事呢?

首先,我们查看Linux机器的防火墙,是否增加了对9200端口的访问权限,如果没有就增加,此处我们不做增加,直接将防火墙关掉

命令:

systemctl stop firewalld   ###这是Centos7以上的写法,我的系统是7以上

查看防火墙状态,命令:

systemctl status firewalld

防火墙已关闭,我们再次访问,结果还是无法访问,怎么办?

接下来,我们要看Elasticsearch的配置文件elasticsearch.yml ,经过查看后,我们发现默认配置中Elasticsearch的网络设置里有这么一项 

network.host: 192.168.0.1 

 经过查找资料,发现果然是这个设置出了问题,取消其注释 ,并将其修改为:

network.host: 0.0.0.0

注意:这是.yml后缀的文件,在network.host冒号和Ip之间是有一个空格的,不然会报错。

修改完毕后重新运行Elasticsearch发现Elasticsearch无法启动了,还出现了错误:

这次直接是3个错误,我们一个一个来看。

对于第一个错误max file descriptors [4096] for elasticsearch process is too low, increase to at least [65535],采用如下方法解决:

执行命令:

vi /etc/security/limits.conf

新增:

* soft nofile 65536

* hard nofile 65536

重新使用SSH登录,再次启动Elasticsearch,进行查看:

如图所示,消失了一个问题,说明我们已解决其中一个问题。

接下来第二个问题max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144],采用如下方法解决:

执行命令:

vi /etc/sysctl.conf

增加

vm.max_map_count=2621441

保存后执行sudo sysctl -p /etc/sysctl.conf 使之生效

再次启动Elasticsearch,进行查看:

问题又减少一个,还剩最后一个,希望也是最后一个了!

最后一个问题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。最后一个问题还是修改配置文件,但这回改的是Elasticsearch的配置文件,在配置文件中找到Discovery这一节,并进行如下修改:

cluster.initial_master_nodes: ["elasticsearch"] #修改完不要忘记取消注释

接下来重启ES应该就可以顺利启动了。并且此时可以通过外网访问了。

你可能感兴趣的:(ES在Linux部署遇到的问题)