Linux - 安装 ElasticSearch

下载

https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.7.1.tar.gz

安装

上传下载过后的压缩包到自己的服务器目录

# 进入目录
cd /opt/software

# 解压到指定目录
tar -zxvf elasticsearch-6.7.1.tar.gz -C /usr/local

配置

# 进入es安装目录
cd /usr/local/elasticsearch-6.7.1

# 编辑配置文件
vim ./config/elasticsearch.yml

elasticsearch.yml

# 集群名称
cluster.name: my-application

# 节点名称
node.name: node-1

# 数据保存地址
path.data: /usr/local/elasticsearch-6.7.1/data

# 日志保存地址
path.logs: /usr/local/elasticsearch-6.7.1/logs

# ip
network.host: 0.0.0.0

# 端口
http.port: 9200
# 编辑配置文件
vim ./config/jvm.options

jvm.options

-Xms1g
-Xmx1g

注意:elasticsearch启动不能以root用户来进行,所以需要创建一个用户

创建用户并授权

# 创建用户
useradd elsearch

# 授权
chown -R elsearch:elsearch /usr/local/elasticsearch-6.7.1

切换到ES用户启动

# 切换到es用户
su elsearch

# 给用户elsearch设置密码(我没有设置密码)
passwd elsearch

# 删除用户elsearch的密码
passwd -d elsearch

# 进入es目录
cd /usr/local/elasticsearch-6.7.1/bin

# 启动
./elasticsearch

# 后台启动
./elasticsearch -d

停止ES进程

前台运行: Ctrl + C

后台运行:kill -9 #es进程号,也可以通过执行命令curl -XPOST http://localhost:9200/_cluster/nodes/_shutdown关闭整个集群,curl -XPOST http://localhost:9200/_cluster/nodes/节点标识符/_shutdown关闭单个节点

查看es进程号ps -ef|grep elasticsearch

问题

1、max file descriptors [4096] for elasticsearch process likely too low, increase to at least [65536]

修改/etc/security/limits.conf文件 在文件末尾添加如下内容,然后重启服务器或重新登录即可生效。重启后用查看命令进行查看,如果显示数字等于204800即证明修改成功。如果不成功请继续往下看

# 我们用的是elsearch用户,而不是root,权限不足。
# 首先用root用户登录,然后修改配置文件:
su - root

# 修改配置命令:
vim /etc/security/limits.conf

# 如果文件是只读文件,修改为可读写
chmod 666 /etc/security/limits.conf

# 查看命令:(-n是可以打开最大文件描述符的数量。 -u是用户最大可用的进程数。)
ulimit -n
ulimit -u

# 添加下面的内容:
* soft nofile 65536
* hard nofile 65536
* soft nproc 65536
* hard nproc 65536

# 修改为只读
chmod 222 /etc/security/limits.conf

我在解决这个问题时候,发现网上都是说修改这一个文件就行,但是我修改后重新登录发现没更改过来。后来发现,还需要修改两个文件。如果你重启后也没生效,请继续跟着往下修改。

注:修改90-nproc.conf,如果90-nproc.conf不存在,修改类似的文件即可,即xx-nproc.conf,我本地就是/etc/security/limits.d/20-nproc.conf

# 添加下面的内容:
* soft nproc 65536
* hard nproc 65536
* soft nofile 65536
* hard nofile 65536

官方 manual 以及网上的教程有很多都用了*符号,然而不是所有系统都认的,比如我在解决这个问题时候,发现ubuntu系统就不支持。最前面一列代表用户名即rootelsearh

# 不兼容方式
* soft nproc 65536
* hard nproc 65536
* soft nofile 65536
* hard nofile 65536

# 兼容方式
root soft nproc 65536
root hard nproc 65536
root soft nofile 65536
root hard nofile 65536
elsearch soft nproc 65536
elsearch hard nproc 65536
elsearch soft nofile 65536
elsearch hard nofile 65536

limits.conf 建议不要使用星号

2、max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]

# 切换到root用户
su - root

# 修改配置sysctl.conf
vi /etc/sysctl.conf

# 添加下面配置:
vm.max_map_count=655360

# 并执行命令:
sysctl -p

#然后,重新启动elasticsearch,即可启动成功

问题解决

elasticsearch-head插件地址栏中输入服务器的地址,如:http://192.168.1.12:9200,很不幸,打不开。下面进行原因排查:

firewall-cmd --query-port=9200/tcp
# 如果显示no,说明9200端口没有开

# 开放80端口,重启防火墙
# --permanent 永久生效,没有此参数重启后失效
firewall-cmd --add-port=9200/tcp --permanent
systemctl restart firewalld

本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!