引子:
最近兄弟项目组搞Elasticsearch搞得如火如荼,而自己也深知ES现在非常火爆。所以,自己也准备学习一下,一步一个脚印,在这里记录下所踩的坑。
软件环境:
Linux:CentOS 7.6 Elasticsearch:7.0.0 Java:1.8.0_202
安装步骤:
首先,需要确保Java已经安装好,并且配置好了JAVA_HOME 环境变量。
一、下载并解压Elasticsearch;我的ES最终路径为:/home/tom/data/elasticsearch-7.0.0
cd /home/tom/data
wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.0.0-linux-x86_64.tar.gz
tar -zxvf elasticsearch-7.0.0-linux-x86_64.tar.gz
二、进入 /elasticsearch-7.0.0/bin 目录,运行 elasticsearch;
cd /home/tom/data/elasticsearch-7.0.0/bin
./elasticsearch
如果需要后台运行,则可以在执行elasticsearch时加上 -d 参数。
./elasticsearch -d
三、本地访问 localhost:9200 ,若出现下图,则运行成功。
至此,Elasticsearch 7.0.0 就成功安装了。还是比较简单,但是,还是有一些坑,下面记录下:
问题解决:
1、Elasticsearch不能以 root 权限启动。
如上图所示,当我们以root用户执行 ./elasticsearch 的时候,会报错。这里,我们需要手动创建用户,下面给出我的解决方式。
# 首先切换到 root 用户,输入密码,然后执行以下步骤:
su root
# 一,创建一个用户组,这里,我给用户组取名为 toms
groupadd toms
# 二、创建一个用户 tom,并将其添加到 toms 用户组
useradd tom -g toms
# 三、为tom用户赋予 /home/tom 目录权限
chown -R tom:toms /home/tom
然后切换到 tom 用户,再执行elasticsearch 即可。
# 切换到 tom 用户
su tom
# 执行 elasticsearch
./elasticsearch
2、可以在本机通过 localhost:9200 进行访问,但是却不能在远程通过 IP:9200进行访问。
修改 elasticsearch-7.0.0/config/elasticsearch.yml文件,找到 Network ,修改下面的项目,重新启动即可。
network.host: 0.0.0.0
3、开启远程访问后,报以下错误:
[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]
[3]: 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
下面我们一一解决这几个问题:
第一个问题:
[1]: max file descriptors [4096] for elasticsearch process is too low, increase to at least [65535]
这个错误,是linux下常见的错误,主要是因为linux会限制进程的最大打开文件数,只需要按照下面的配置修改一下即可解决:
# 首先切换到 root 用户
su root
# 输入密码,然后编辑下面文件
vi /etc/security/limits.conf
# 在文件末尾添加以下内容
tom - nofile 65536 # 将 tom 替换为自己的用户名
第二个问题:
[2]: max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]
这个是ES使用的虚拟内存太小,直接调大即可,在 root 用户下执行下面命令:
sysctl -w vm.max_map_count=262144
第三个问题:
[3]: 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
还是找到 config/elasticsearch.yml 文件,编辑,找到 Discovery 配置附近,修改:
# 取消注释,并修改属性
cluster.initial_master_nodes: ["127.0.0.1"]
至此,所有问题解决完毕,切换回 tom 用户,启动 elasticsearch,应该能正常启动。
值得一提的是,关于这个问题的详细讲解,可以参考我后面的这篇文章 Elasticsearch入门(三):Elasticsearch 7.0.0 集群搭建关于这个配置的讲解部分。
最后,笔者是跟着慕课网的学习视频在学习的,教程地址:https://www.imooc.com/learn/889。
参考文章:
1、https://www.elastic.co/cn/products/elasticsearch
2、https://blog.csdn.net/lahand/article/details/78954112
3、http://kael-aiur.com/elk/ES配置给外部机器通过ip访问.html