elasticsearch6.5.1在centos7环境下安装
1.准备工作
- 新装centos7 64位系统
- 最低安装的jdk版本为1.8
- 从官网上下载elasticsearch-6.5.1.tar.gz
2.安装和运行
(1)解压压缩包
tar -zxvf elasticsearch-6.5.1.tar.gz
(2)在/opt目录下新建文件夹dev-env, 并将解压后的elasticsearch-6.5.1移动到/opt/dev-env目录下。
mv elasticsearch-6.5.1 /opt/dev-env/
注意事项:elasticsearch不允许使用root用户启动,故而需要新建普通用户并为该用户授权.
(3)使用root用户创建一个新的普通用户es-admin2
useradd es-admin2
(4)为该用户设置密码,连续输入两次即可
我在此处未给该用户设置密码
(5)创建一个用户组es
groupadd es
(6)将es-admin2用户分配到es组中
usermod -G es es-admin2
(7)进入elasticsearch-6.5.1的根目录
cd /opt/dev-env/elasticsearch-6.5.1
(8)给用户es-admin2赋予权限,-R表示逐级(N层目录),*表示任何文件
chown -R es-admin2.es *
(9)切换到es-admin2用户
su es-admin2
(10)使用bin目录下的elasticsearch命令启动elasticsearch
cd /opt/dev-env/elasticsearch-6.5.1
./bin/elasticsearch
如果想让系统在后台运行,只需后面加上-d
./bin/elasticsearch -d
(11)此时需要关闭elasticsearch的进程,修改其配置文件
首先查看elasticsearch的进行id
ps -ef|grep elasticsearch
查出后,杀掉进程(假设进程id为14056)
kill -9 14056
3.修改elasticsearch的配置文件
(1)打开elasticsearch的配置文件
vim ./config/elasticsearch.yml
(2)指定集群(或单台)主节点名称(java中代码要用到),通过cluster.name来指定
cluster.name: es-admin-application
(3)指定节点名称,通过node.name来指定
node.name: node-1
(4)指定elasticsearch的服务器地址,只有指定该定制才允许远程访问,通过network.name来指定
network.name: 192.168.116.130
(5)指定服务的端口(此处的端口为http协议端口,java代码中不使用该端口,需要使用tcp协议的端口),通过http.port来指定
http.port: 9200
4.至此,安装完成,进行测试
(1)本地测试
执行如下命令,注意192.168.116.130是在配置文件里配置的network.name。
curl -X GET 192.168.116.130:9200
得到返回的json数据:
{
“name” : “node-1”,
“cluster_name” : “es-admin-application”,
“cluster_uuid” : “N8kQ7LGjTLiLh5-WR3KAZA”,
“version” : {
“number” : “6.5.1”,
“build_flavor” : “default”,
“build_type” : “tar”,
“build_hash” : “8c58350”,
“build_date” : “2018-11-16T02:22:42.182257Z”,
“build_snapshot” : false,
“lucene_version” : “7.5.0”,
“minimum_wire_compatibility_version” : “5.6.0”,
“minimum_index_compatibility_version” : “5.0.0”
},
“tagline” : “You Know, for Search”
}
(2)远程测试,此时需要注意防火墙的问题
直接在浏览器中输入http://192.168.116.130:9200,同样返回上面的json数据。
5.常遇到的坑
(1)每个进程可同时打开的文件太小
max file descriptors [4096] for elasticsearch process is too low, increase to at least [65536]
每个进程最大同时打开文件数太小,可通过下面2个命令查看当前数量
ulimit -Hn
ulimit -Sn
解决方法:
切换到root用户,修改/etc/security/limits.conf文件,增加如下配置,切回es-admin用户后即生效。*代表所有用户都有效。
- soft nofile 65536
- hard nofile 65536
(2)最大线程个数太低
max number of threads [3818] for user [es] is too low, increase to at least [4096]
最大线程个数太低。修改配置文件/etc/security/limits.conf,增如下加配置项 - soft nproc 4096
- hard nproc 4096
(3)vm.max_map_count参数设置过小
max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [655360]
解决方法:
切换到root用户,修改/etc/sysctl.conf文件,增加如下配置。
vm.max_map_count=655360
执行sysctl -p ,修改生效。
(4)无法访问data文件夹
Unable to access ‘path.data’
无法访问data文件夹。
解决方法:
在elasticsearch安装目录下创建data文件夹,并为es-admin用户赋予权限。
切换为root用户
su
创建文件夹
mkdir data
赋权限
cd /opt/dev-env/elasticsearch-6.5.1
chown -R es-admin2.es *
(5)所有配置都对,无法访问,此时需要关闭防火墙
所有配置都正确,远程还是无法访问,大概是防火墙没有关闭。
关闭防火墙:
systemctl stop firewalld.service