要求
- java版本要求:最低7
- es默认是本地访问,启动需要修改,也可以设置固定IP访问
- es需要非root用户启动,需要创建用户,并赋权限,包括:部署目录,日志和数据目录
- ES需要创建大量文件,需要修改个数
- ES需要创建大量线程,linux默认太小,需要修改
- linux默认虚拟内存比较小,需要修改
- 端口:9300,9200
部署
- 目录:/opt/elasticsearch
- 获取包:wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.2.4.tar.gz
- 减压:tar -zxvf elasticsearch-6.2.4.tar.gz 减压后目录:/opt/elasticsearch/elasticsearch-6.2.4
配置修改
创建日志和数据目录
mkdir data logs
/opt/elasticsearch/data
/opt/elasticsearch/logs
修改jvm配置文件
cd config
vim jvm.options
默认:
-Xms1g
-Xmx1g
修改为:
-Xms512m
-Xmx512m
修改日志和数据目录:elasticsearch.yml
cd config
vim elasticsearch.yml
修改绑定的ip:elasticsearch.yml
默认只允许本机访问,修改为0.0.0.0后则可以远程访问
network.host: 0.0.0.0 # 绑定到0.0.0.0,允许任何ip来访问
创建用户并赋权
用户名/密码:es/pwd007
useradd es
passwd es
输入密码:pwd007 ,回车
su es
运行,报错没权限
修改文件夹(包括子文件夹)的用拥有者:
chown -R es:es elasticsearch-6.2.4 data logs
运行&暂停
sh /opt/elasticsearch/elasticsearch-6.2.4/bin/elasticsearch -d
ps -ef | grep elasticsearch
kill -9 pid
验证
日志
tail -f /opt/elasticsearch/logs/elasticsearch.log
问题罗列
错误:can not run elasticsearch as root
启动报错
[1]: max file descriptors [4096] for elasticsearch process is too low, increase to at least [65536] [2]: max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144] |
[1]: max file descriptors [4096] for elasticsearch process is too low, increase to at least [65536]
原因:无法创建本地文件问题,用户最大可创建文件数太小
解决:切换到root用户,编辑limits.conf配置文件, 添加类似如下内容:
vi /etc/security/limits.conf
添加如下内容:
* soft nofile 65536
* hard nofile 131072
* soft nproc 2048
* hard nproc 4096
备注:* 代表Linux所有用户名称(比如 hadoop)
保存、退出、重新登录才可生效
max number of threads [2048] for user [es] is too low, increase to at least [4096]
原因:无法创建本地线程问题,用户最大可创建线程数太小
解决方案:切换到root用户,进入limits.d目录下,修改20-nproc.conf 配置文件。
vi /etc/security/limits.d/20-nproc.conf
找到如下内容:
* soft nproc 2048
#修改为
* soft nproc 4096
[2]: max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]
原因:最大虚拟内存太小
解决方案:切换到root用户下,修改配置文件sysctl.conf
vi /etc/sysctl.conf
添加下面配置:
vm.max_map_count=655360
并执行命令:
sysctl -p
然后重新启动elasticsearch,即可启动成功。
IP访问不了,localhost可以访问
还有个问题,在启动的时候服务器用localhost:9200访问,用ip访问不了
修改elasticsearch.yml中network.host,打开这一行的注释,就能成功用ip端口访问服务器
network.host: 0.0.0.0